54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
from glad.parse import Spec
|
|
|
|
|
|
class EGLSpec(Spec):
|
|
API = 'https://raw.githubusercontent.com/KhronosGroup/EGL-Registry/master/api/'
|
|
NAME = 'egl'
|
|
|
|
|
|
class GLSpec(Spec):
|
|
API = 'https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/master/xml/'
|
|
NAME = 'gl'
|
|
|
|
def __init__(self, root):
|
|
Spec.__init__(self, root)
|
|
|
|
self._profile = 'compatibility'
|
|
self._remove = set()
|
|
|
|
@property
|
|
def profile(self):
|
|
return self._profile
|
|
|
|
@profile.setter
|
|
def profile(self, value):
|
|
if value not in ('core', 'compatibility'):
|
|
raise ValueError('profile must either be core or compatibility')
|
|
|
|
self._profile = value
|
|
|
|
@property
|
|
def removed(self):
|
|
if self._profile == 'core':
|
|
return frozenset(self._remove)
|
|
return frozenset()
|
|
|
|
|
|
class GLXSpec(Spec):
|
|
API = 'https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/master/xml/'
|
|
NAME = 'glx'
|
|
|
|
|
|
class WGLSpec(Spec):
|
|
API = 'https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/master/xml/'
|
|
NAME = 'wgl'
|
|
|
|
|
|
SPECS = dict()
|
|
|
|
# reflection to fill SPECS
|
|
import sys
|
|
import inspect
|
|
for name, cls in inspect.getmembers(sys.modules[__name__], inspect.isclass):
|
|
if issubclass(cls, Spec):
|
|
SPECS[cls.NAME] = cls
|