зеркало из https://github.com/mozilla/gecko-dev.git
62 строки
1.6 KiB
C++
62 строки
1.6 KiB
C++
/* 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>
|
|
|
|
#include "GLDefs.h"
|
|
#include "nscore.h"
|
|
#include "mozilla/SharedLibrary.h"
|
|
|
|
namespace mozilla {
|
|
namespace gl {
|
|
|
|
class GLLibraryLoader {
|
|
public:
|
|
bool OpenLibrary(const char* library);
|
|
|
|
typedef PRFuncPtr(GLAPIENTRY* PlatformLookupFunction)(const char*);
|
|
|
|
enum { MAX_SYMBOL_NAMES = 6, MAX_SYMBOL_LENGTH = 128 };
|
|
|
|
typedef struct {
|
|
PRFuncPtr* symPointer;
|
|
const char* symNames[MAX_SYMBOL_NAMES];
|
|
} SymLoadStruct;
|
|
|
|
bool LoadSymbols(const SymLoadStruct* firstStruct, bool tryplatform = false,
|
|
const char* prefix = nullptr, bool warnOnFailure = true);
|
|
|
|
static void ClearSymbols(const SymLoadStruct* firstStruct);
|
|
|
|
PRFuncPtr LookupSymbol(const char* symname);
|
|
|
|
/*
|
|
* Static version of the functions in this class
|
|
*/
|
|
static PRFuncPtr LookupSymbol(
|
|
PRLibrary* lib, const char* symname,
|
|
PlatformLookupFunction lookupFunction = nullptr);
|
|
static bool LoadSymbols(PRLibrary* lib, const SymLoadStruct* firstStruct,
|
|
PlatformLookupFunction lookupFunction = nullptr,
|
|
const char* prefix = nullptr,
|
|
bool warnOnFailure = true);
|
|
|
|
protected:
|
|
GLLibraryLoader() {
|
|
mLibrary = nullptr;
|
|
mLookupFunc = nullptr;
|
|
}
|
|
|
|
PRLibrary* mLibrary;
|
|
PlatformLookupFunction mLookupFunc;
|
|
};
|
|
|
|
} /* namespace gl */
|
|
} /* namespace mozilla */
|
|
|
|
#endif /* GLLIBRARYLOADER_H_ */
|