1/* 2 * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. 3 * Copyright 2000-2012 Haiku, Inc. All Rights Reserved. 4 * Distributed under the terms of the MIT License. 5 * 6 * Authors: 7 * Brian Paul <brian.e.paul@gmail.com> 8 * Philippe Houdoin <philippe.houdoin@free.fr> 9 */ 10#ifndef GLDISPATCHER_H 11#define GLDISPATCHER_H 12 13 14#include <BeBuild.h> 15#include <GL/gl.h> 16#include <SupportDefs.h> 17 18#include "glheader.h" 19 20extern "C" { 21#include "glapi.h" 22} 23 24 25class BGLDispatcher 26{ 27 // Private unimplemented copy constructors 28 BGLDispatcher(const BGLDispatcher &); 29 BGLDispatcher & operator=(const BGLDispatcher &); 30 31 public: 32 BGLDispatcher(); 33 ~BGLDispatcher(); 34 35 void SetCurrentContext(void* context); 36 void* CurrentContext(); 37 38 struct _glapi_table* Table(); 39 status_t CheckTable( 40 const struct _glapi_table* dispatch = NULL); 41 status_t SetTable(struct _glapi_table* dispatch); 42 uint32 TableSize(); 43 44 const _glapi_proc operator[](const char* functionName); 45 const char* operator[](uint32 offset); 46 47 const _glapi_proc AddressOf(const char* functionName); 48 uint32 OffsetOf(const char* functionName); 49}; 50 51 52// Inlines methods 53inline void 54BGLDispatcher::SetCurrentContext(void* context) 55{ 56 _glapi_set_context(context); 57} 58 59 60inline void* 61BGLDispatcher::CurrentContext() 62{ 63 return _glapi_get_context(); 64} 65 66 67inline struct _glapi_table* 68BGLDispatcher::Table() 69{ 70 return _glapi_get_dispatch(); 71} 72 73 74inline uint32 75BGLDispatcher::TableSize() 76{ 77 return _glapi_get_dispatch_table_size(); 78} 79 80 81inline const _glapi_proc 82BGLDispatcher::operator[](const char* functionName) 83{ 84 return _glapi_get_proc_address(functionName); 85} 86 87 88inline const char* 89BGLDispatcher::operator[](uint32 offset) 90{ 91 return _glapi_get_proc_name((GLuint) offset); 92} 93 94 95inline const _glapi_proc 96BGLDispatcher::AddressOf(const char* functionName) 97{ 98 return _glapi_get_proc_address(functionName); 99} 100 101 102inline uint32 103BGLDispatcher::OffsetOf(const char* functionName) 104{ 105 return (uint32) _glapi_get_proc_offset(functionName); 106} 107 108 109#endif // GLDISPATCHER_H 110