Edit

kc3-lang/angle/src/libGLESv2/HandleAllocator.h

Branch :

  • Show log

    Commit

  • Author : benvanik@google.com
    Date : 2011-04-28 19:44:39
    Hash : 1a23334f
    Message : Unifying resource handle allocation code with an allocator optimized for O(1) allocs/releases. Issue=143 Signed-off-by: Daniel Koch git-svn-id: https://angleproject.googlecode.com/svn/trunk@623 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/libGLESv2/HandleAllocator.h
  • //
    // Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    // HandleAllocator.h: Defines the gl::HandleAllocator class, which is used to
    // allocate GL handles.
    
    #ifndef LIBGLESV2_HANDLEALLOCATOR_H_
    #define LIBGLESV2_HANDLEALLOCATOR_H_
    
    #define GL_APICALL
    #include <GLES2/gl2.h>
    
    #include <vector>
    
    #include "common/angleutils.h"
    
    namespace gl
    {
    
    class HandleAllocator
    {
      public:
        HandleAllocator();
        virtual ~HandleAllocator();
    
        void setBaseHandle(GLuint value);
    
        GLuint allocate();
        void release(GLuint handle);
    
      private:
        DISALLOW_COPY_AND_ASSIGN(HandleAllocator);
    
        GLuint mBaseValue;
        GLuint mNextValue;
        typedef std::vector<GLuint> HandleList;
        HandleList mFreeValues;
    };
    
    }
    
    #endif   // LIBGLESV2_HANDLEALLOCATOR_H_