1 // 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 #include "common/angleutils.h" 14 15 #include "angle_gl.h" 16 17 #include <vector> 18 19 namespace gl 20 { 21 22 class HandleAllocator 23 { 24 public: 25 HandleAllocator(); 26 virtual ~HandleAllocator(); 27 28 void setBaseHandle(GLuint value); 29 30 GLuint allocate(); 31 void release(GLuint handle); 32 33 private: 34 DISALLOW_COPY_AND_ASSIGN(HandleAllocator); 35 36 GLuint mBaseValue; 37 GLuint mNextValue; 38 typedef std::vector<GLuint> HandleList; 39 HandleList mFreeValues; 40 }; 41 42 } 43 44 #endif // LIBGLESV2_HANDLEALLOCATOR_H_ 45