Home | History | Annotate | Download | only in hgl
      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 (at) gmail.com>
      8  *		Philippe Houdoin <philippe.houdoin (at) 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 
     20 #include "glapi/glapi.h"
     21 
     22 
     23 class 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
     49 inline void
     50 BGLDispatcher::SetCurrentContext(void* context)
     51 {
     52 	_glapi_set_context(context);
     53 }
     54 
     55 
     56 inline void*
     57 BGLDispatcher::CurrentContext()
     58 {
     59 	return _glapi_get_context();
     60 }
     61 
     62 
     63 inline struct _glapi_table*
     64 BGLDispatcher::Table()
     65 {
     66 	return _glapi_get_dispatch();
     67 }
     68 
     69 
     70 inline uint32
     71 BGLDispatcher::TableSize()
     72 {
     73 	return _glapi_get_dispatch_table_size();
     74 }
     75 
     76 
     77 inline const _glapi_proc
     78 BGLDispatcher::operator[](const char* functionName)
     79 {
     80 	return _glapi_get_proc_address(functionName);
     81 }
     82 
     83 
     84 inline const char*
     85 BGLDispatcher::operator[](uint32 offset)
     86 {
     87 	return _glapi_get_proc_name((GLuint) offset);
     88 }
     89 
     90 
     91 inline const _glapi_proc
     92 BGLDispatcher::AddressOf(const char* functionName)
     93 {
     94 	return _glapi_get_proc_address(functionName);
     95 }
     96 
     97 
     98 inline uint32
     99 BGLDispatcher::OffsetOf(const char* functionName)
    100 {
    101 	return (uint32) _glapi_get_proc_offset(functionName);
    102 }
    103 
    104 
    105 #endif	// GLDISPATCHER_H
    106