Revert Library.*, needed for CUDA stuff.
This commit is contained in:
parent
b68d428492
commit
4906642ac3
@ -17,7 +17,6 @@ SET(CORE_SRCS
|
||||
StrLib.h StrLib.cpp
|
||||
Stream.h
|
||||
StdStream.h
|
||||
TextReader.h TextReader.cpp
|
||||
TextWriter.h TextWriter.cpp
|
||||
Timer.h
|
||||
Utils.h)
|
||||
|
@ -133,10 +133,10 @@ namespace nv
|
||||
if (reinterpret_cast<uint64>(ptr) < 0x10000ULL) return false;
|
||||
if (reinterpret_cast<uint64>(ptr) >= 0x000007FFFFFEFFFFULL) return false;
|
||||
#else
|
||||
if (reinterpret_cast<uintptr_t>(ptr) == 0xcccccccc) return false;
|
||||
if (reinterpret_cast<uintptr_t>(ptr) == 0xcdcdcdcd) return false;
|
||||
if (reinterpret_cast<uintptr_t>(ptr) == 0xdddddddd) return false;
|
||||
if (reinterpret_cast<uintptr_t>(ptr) == 0xffffffff) return false;
|
||||
if (reinterpret_cast<uint32>(ptr) == 0xcccccccc) return false;
|
||||
if (reinterpret_cast<uint32>(ptr) == 0xcdcdcdcd) return false;
|
||||
if (reinterpret_cast<uint32>(ptr) == 0xdddddddd) return false;
|
||||
if (reinterpret_cast<uint32>(ptr) == 0xffffffff) return false;
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
45
src/nvcore/Library.cpp
Normal file
45
src/nvcore/Library.cpp
Normal file
@ -0,0 +1,45 @@
|
||||
|
||||
#include "Library.h"
|
||||
#include "Debug.h"
|
||||
|
||||
#if NV_OS_WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define VC_EXTRALEAN
|
||||
#include <windows.h>
|
||||
#elif NV_OS_XBOX
|
||||
#include <Xtl.h>
|
||||
#else
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
void * nvLoadLibrary(const char * name)
|
||||
{
|
||||
#if NV_OS_WIN32
|
||||
return (void *)LoadLibraryExA( name, NULL, 0 );
|
||||
#elif NV_OS_XBOX
|
||||
return (void *)LoadLibraryA( name );
|
||||
#else
|
||||
return dlopen(name, RTLD_LAZY);
|
||||
#endif
|
||||
}
|
||||
|
||||
void nvUnloadLibrary(void * handle)
|
||||
{
|
||||
nvDebugCheck(handle != NULL);
|
||||
#if NV_OS_WIN32 || NV_OS_XBOX
|
||||
FreeLibrary((HMODULE)handle);
|
||||
#else
|
||||
dlclose(handle);
|
||||
#endif
|
||||
}
|
||||
|
||||
void * nvBindSymbol(void * handle, const char * symbol)
|
||||
{
|
||||
#if NV_OS_WIN32 || NV_OS_XBOX
|
||||
return (void *)GetProcAddress((HMODULE)handle, symbol);
|
||||
#else
|
||||
return (void *)dlsym(handle, symbol);
|
||||
#endif
|
||||
}
|
51
src/nvcore/Library.h
Normal file
51
src/nvcore/Library.h
Normal file
@ -0,0 +1,51 @@
|
||||
// This code is in the public domain -- castano@gmail.com
|
||||
|
||||
#pragma once
|
||||
#ifndef NV_CORE_LIBRARY_H
|
||||
#define NV_CORE_LIBRARY_H
|
||||
|
||||
#include "nvcore.h"
|
||||
|
||||
#if NV_OS_WIN32
|
||||
#define LIBRARY_NAME(name) #name ".dll"
|
||||
#elif NV_OS_DARWIN
|
||||
#define NV_LIBRARY_NAME(name) "lib" #name ".dylib"
|
||||
#else
|
||||
#define NV_LIBRARY_NAME(name) "lib" #name ".so"
|
||||
#endif
|
||||
|
||||
NVCORE_API void * nvLoadLibrary(const char * name);
|
||||
NVCORE_API void nvUnloadLibrary(void * lib);
|
||||
NVCORE_API void * nvBindSymbol(void * lib, const char * symbol);
|
||||
|
||||
class NVCORE_CLASS Library
|
||||
{
|
||||
public:
|
||||
Library(const char * name)
|
||||
{
|
||||
handle = nvLoadLibrary(name);
|
||||
}
|
||||
~Library()
|
||||
{
|
||||
if (isValid())
|
||||
{
|
||||
nvUnloadLibrary(handle);
|
||||
}
|
||||
}
|
||||
|
||||
bool isValid() const
|
||||
{
|
||||
return handle != NULL;
|
||||
}
|
||||
|
||||
void * bindSymbol(const char * symbol)
|
||||
{
|
||||
return nvBindSymbol(handle, symbol);
|
||||
}
|
||||
|
||||
private:
|
||||
void * handle;
|
||||
};
|
||||
|
||||
|
||||
#endif // NV_CORE_LIBRARY_H
|
Loading…
Reference in New Issue
Block a user