blob: a92e1684d4f1f9b52e3cedc642b227d3821dac31 [file] [log] [blame]
benvanik@google.com1a233342011-04-28 19:44:39 +00001//
2// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
7// HandleAllocator.h: Defines the gl::HandleAllocator class, which is used to
8// allocate GL handles.
9
10#ifndef LIBGLESV2_HANDLEALLOCATOR_H_
11#define LIBGLESV2_HANDLEALLOCATOR_H_
12
13#define GL_APICALL
14#include <GLES2/gl2.h>
15
16#include <vector>
17
18#include "common/angleutils.h"
19
20namespace gl
21{
22
23class HandleAllocator
24{
25 public:
26 HandleAllocator();
27 virtual ~HandleAllocator();
28
29 void setBaseHandle(GLuint value);
30
31 GLuint allocate();
32 void release(GLuint handle);
33
34 private:
35 DISALLOW_COPY_AND_ASSIGN(HandleAllocator);
36
37 GLuint mBaseValue;
38 GLuint mNextValue;
39 typedef std::vector<GLuint> HandleList;
40 HandleList mFreeValues;
41};
42
43}
44
45#endif // LIBGLESV2_HANDLEALLOCATOR_H_