1/* 2 * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. 3 * Copyright 2000-2015 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 "main/glheader.h" 19 20#include "glapi/glapi.h" 21 22 23class BGLDispatcher 24{ 25 // Private unimplemented copy constructors 26 BGLDispatcher(const BGLDispatcher &); 27 BGLDispatcher & operator=(const BGLDispatcher &); 28 29 public: 30 BGLDispatcher(); 31 ~BGLDispatcher(); 32 33 void SetCurrentContext(void* context); 34 void* CurrentContext(); 35 36 struct _glapi_table* Table(); 37 status_t SetTable(struct _glapi_table* dispatch); 38 uint32 TableSize(); 39 40 const _glapi_proc operator[](const char* functionName); 41 const char* operator[](uint32 offset); 42 43 const _glapi_proc AddressOf(const char* functionName); 44 uint32 OffsetOf(const char* functionName); 45}; 46 47 48// Inlines methods 49inline void 50BGLDispatcher::SetCurrentContext(void* context) 51{ 52 _glapi_set_context(context); 53} 54 55 56inline void* 57BGLDispatcher::CurrentContext() 58{ 59 return _glapi_get_context(); 60} 61 62 63inline struct _glapi_table* 64BGLDispatcher::Table() 65{ 66 return _glapi_get_dispatch(); 67} 68 69 70inline uint32 71BGLDispatcher::TableSize() 72{ 73 return _glapi_get_dispatch_table_size(); 74} 75 76 77inline const _glapi_proc 78BGLDispatcher::operator[](const char* functionName) 79{ 80 return _glapi_get_proc_address(functionName); 81} 82 83 84inline const char* 85BGLDispatcher::operator[](uint32 offset) 86{ 87 return _glapi_get_proc_name((GLuint) offset); 88} 89 90 91inline const _glapi_proc 92BGLDispatcher::AddressOf(const char* functionName) 93{ 94 return _glapi_get_proc_address(functionName); 95} 96 97 98inline uint32 99BGLDispatcher::OffsetOf(const char* functionName) 100{ 101 return (uint32) _glapi_get_proc_offset(functionName); 102} 103 104 105#endif // GLDISPATCHER_H 106