Ejemplo n.º 1
0
    def dispatchApi(self, api):
        tag = api.name.upper()
        print r'const char *g_sz%sDllName = NULL;' % (tag, )
        print r'HMODULE g_h%sModule = NULL;' % (tag, )
        print r''
        print r'static PROC'
        print r'_getPublicProcAddress(LPCSTR lpProcName) {'
        print r'    if (!g_h%sModule) {' % tag
        print r'        if (g_sz%sDllName) {' % tag
        print r'            g_h%sModule = LoadLibraryA(g_sz%sDllName);' % (tag,
                                                                           tag)
        print r'            if (!g_h%sModule) {' % tag
        print r'                os::log("warning: failed to load %%s\n", g_sz%sDllName);' % tag
        print r'            }'
        print r'        }'
        print r'        if (!g_h%sModule) {' % tag
        print r'            g_h%sModule = LoadLibraryA("%s.dll");' % (tag,
                                                                      api.name)
        print r'        }'
        print r'        if (!g_h%sModule) {' % tag
        print r'            os::log("error: failed to load %s.dll\n");' % api.name
        print r'            exit(1);'
        print r'            return NULL;'
        print r'        }'
        print r'    }'
        print r'    return GetProcAddress(g_h%sModule, lpProcName);' % tag
        print r'}'
        print r''

        Dispatcher.dispatchApi(self, api)
Ejemplo n.º 2
0
    def header(self, api):
        print '''
static HMODULE g_hDll = NULL;

static PROC
_getPublicProcAddress(LPCSTR lpProcName)
{
    if (!g_hDll) {
        char szDll[MAX_PATH] = {0};
        
        if (!GetSystemDirectoryA(szDll, MAX_PATH)) {
            return NULL;
        }
        
        strcat(szDll, "\\\\%s");
        
        g_hDll = LoadLibraryA(szDll);
        if (!g_hDll) {
            return NULL;
        }
    }
        
    return GetProcAddress(g_hDll, lpProcName);
}

''' % self.dllname

        dispatcher = Dispatcher()
        dispatcher.dispatchApi(api)

        Tracer.header(self, api)
Ejemplo n.º 3
0
    def dispatchApi(self, api):
        tag = api.name.upper()
        print r'const char *g_sz%sDllName = NULL;' % (tag,)
        print r'HMODULE g_h%sModule = NULL;' % (tag,)
        print r''
        print r'static PROC'
        print r'_getPublicProcAddress(LPCSTR lpProcName) {'
        print r'    if (!g_h%sModule) {' % tag
        print r'        if (g_sz%sDllName) {' % tag
        print r'            g_h%sModule = LoadLibraryA(g_sz%sDllName);' % (tag, tag)
        print r'            if (!g_h%sModule) {' % tag
        print r'                os::log("warning: failed to load %%s\n", g_sz%sDllName);' % tag 
        print r'            }'
        print r'        }'
        print r'        if (!g_h%sModule) {' % tag
        print r'            g_h%sModule = LoadLibraryA("%s.dll");' % (tag, api.name)
        print r'        }'
        print r'        if (!g_h%sModule) {' % tag
        print r'            os::log("error: failed to load %s.dll\n");' % api.name
        print r'            exit(1);'
        print r'            return NULL;'
        print r'        }'
        print r'    }'
        print r'    return GetProcAddress(g_h%sModule, lpProcName);' % tag
        print r'}'
        print r''

        Dispatcher.dispatchApi(self, api)
Ejemplo n.º 4
0
    def header(self, api):
        print '''
static HMODULE g_hDll = NULL;

static PROC
_getPublicProcAddress(LPCSTR lpProcName)
{
    if (!g_hDll) {
        char szDll[MAX_PATH] = {0};
        
        if (!GetSystemDirectoryA(szDll, MAX_PATH)) {
            return NULL;
        }
        
        strcat(szDll, "\\\\%s");
        
        g_hDll = LoadLibraryA(szDll);
        if (!g_hDll) {
            return NULL;
        }
    }
        
    return GetProcAddress(g_hDll, lpProcName);
}

''' % self.dllname

        dispatcher = Dispatcher()
        dispatcher.dispatchApi(api)

        Tracer.header(self, api)
Ejemplo n.º 5
0
    sys.stdout = open('eglproc_auto.hpp', 'w')
    print('// Generated by', sys.argv[0])
    print('#ifndef _DISPATCH_EGLPROC_HPP_')
    print('#define _DISPATCH_EGLPROC_HPP_')
    print()
    print('#include "eglimports.hpp"')
    print('#include "common/os.hpp"')
    print()
    print('#ifndef GLES_CALLCONVENTION')
    print('#define GLES_CALLCONVENTION')
    print('#endif')
    print()
    print('void * _getProcAddress(const char *procName);')
    print('void ResetGLFuncPtrs();')
    print()
    dispatcher.dispatchApi(eglapi)
    print()
    dispatcher.dispatchApi(glesapi)
    print()
    print('#endif /* !_DISPATCH_EGLPROC_HPP_ */')
    print()

    #############################################################
    sys.stdout = open('eglproc_auto.cpp', 'w')
    print('// Generated by', sys.argv[0])
    print('#include <dispatch/eglproc_auto.hpp>')
    print()
    dispatcher.defineFptrs(eglapi)
    print()
    dispatcher.defineFptrs(glesapi)
    print()