2012-03-16 22:24:12 +00:00
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
#ifndef GLLIBRARYLOADER_H_
|
|
|
|
#define GLLIBRARYLOADER_H_
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
#ifdef WIN32
|
|
|
|
#include <windows.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "GLDefs.h"
|
|
|
|
#include "nscore.h"
|
|
|
|
#include "prlink.h"
|
|
|
|
|
|
|
|
namespace mozilla {
|
|
|
|
namespace gl {
|
|
|
|
|
|
|
|
class GLLibraryLoader
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
bool OpenLibrary(const char *library);
|
|
|
|
|
|
|
|
typedef PRFuncPtr (GLAPIENTRY * PlatformLookupFunction) (const char *);
|
|
|
|
|
|
|
|
enum {
|
2013-07-26 00:38:58 +00:00
|
|
|
MAX_SYMBOL_NAMES = 6,
|
2012-03-16 22:24:12 +00:00
|
|
|
MAX_SYMBOL_LENGTH = 128
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
PRFuncPtr *symPointer;
|
|
|
|
const char *symNames[MAX_SYMBOL_NAMES];
|
|
|
|
} SymLoadStruct;
|
|
|
|
|
|
|
|
bool LoadSymbols(SymLoadStruct *firstStruct,
|
2012-12-19 07:16:02 +00:00
|
|
|
bool tryplatform = false,
|
|
|
|
const char *prefix = nullptr,
|
|
|
|
bool warnOnFailure = true);
|
2012-03-16 22:24:12 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Static version of the functions in this class
|
|
|
|
*/
|
|
|
|
static PRFuncPtr LookupSymbol(PRLibrary *lib,
|
|
|
|
const char *symname,
|
2012-07-30 14:20:58 +00:00
|
|
|
PlatformLookupFunction lookupFunction = nullptr);
|
2012-03-16 22:24:12 +00:00
|
|
|
static bool LoadSymbols(PRLibrary *lib,
|
2012-12-19 07:16:02 +00:00
|
|
|
SymLoadStruct *firstStruct,
|
|
|
|
PlatformLookupFunction lookupFunction = nullptr,
|
|
|
|
const char *prefix = nullptr,
|
|
|
|
bool warnOnFailure = true);
|
2012-03-16 22:24:12 +00:00
|
|
|
protected:
|
|
|
|
GLLibraryLoader() {
|
2012-07-30 14:20:58 +00:00
|
|
|
mLibrary = nullptr;
|
|
|
|
mLookupFunc = nullptr;
|
2012-03-16 22:24:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
PRLibrary *mLibrary;
|
|
|
|
PlatformLookupFunction mLookupFunc;
|
|
|
|
};
|
|
|
|
|
|
|
|
} /* namespace gl */
|
|
|
|
} /* namespace mozilla */
|
|
|
|
|
|
|
|
#endif /* GLLIBRARYLOADER_H_ */
|