mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2025-01-31 05:10:45 -06:00
Removed libloader from the source repository. #273
This commit is contained in:
parent
221d1d413b
commit
16b2e16614
@ -1,7 +0,0 @@
|
|||||||
from .libloader import *
|
|
||||||
|
|
||||||
__version__ = 0.1
|
|
||||||
__author__ = 'Christopher Toth <q@q-continuum.net>'
|
|
||||||
__doc__ = """
|
|
||||||
Quickly and easily load shared libraries from various platforms. Also includes a libloader.com module for loading com modules on Windows.
|
|
||||||
"""
|
|
@ -1,35 +0,0 @@
|
|||||||
from pywintypes import com_error
|
|
||||||
import win32com
|
|
||||||
import paths
|
|
||||||
win32com.__gen_path__=paths.com_path()
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
sys.path.append(os.path.join(win32com.__gen_path__, "."))
|
|
||||||
from win32com.client import gencache
|
|
||||||
fixed=False
|
|
||||||
|
|
||||||
def prepare_gencache():
|
|
||||||
gencache.is_readonly = False
|
|
||||||
gencache.GetGeneratePath()
|
|
||||||
|
|
||||||
def patched_getmodule(modname):
|
|
||||||
mod=__import__(modname)
|
|
||||||
return sys.modules[modname]
|
|
||||||
|
|
||||||
def load_com(*names):
|
|
||||||
global fixed
|
|
||||||
if fixed==False:
|
|
||||||
gencache._GetModule=patched_getmodule
|
|
||||||
prepare_gencache()
|
|
||||||
fixed=True
|
|
||||||
result = None
|
|
||||||
for name in names:
|
|
||||||
try:
|
|
||||||
result = gencache.EnsureDispatch(name)
|
|
||||||
break
|
|
||||||
except com_error:
|
|
||||||
continue
|
|
||||||
if result is None:
|
|
||||||
raise com_error("Unable to load any of the provided com objects.")
|
|
||||||
return result
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
|||||||
import ctypes
|
|
||||||
import collections
|
|
||||||
import platform
|
|
||||||
import os
|
|
||||||
|
|
||||||
TYPES = {
|
|
||||||
'Linux': {
|
|
||||||
'loader': ctypes.CDLL,
|
|
||||||
'functype': ctypes.CFUNCTYPE,
|
|
||||||
'prefix': 'lib',
|
|
||||||
'extension': '.so'
|
|
||||||
},
|
|
||||||
'Darwin': {
|
|
||||||
'loader': ctypes.CDLL,
|
|
||||||
'functype': ctypes.CFUNCTYPE,
|
|
||||||
'prefix': 'lib',
|
|
||||||
'extension': '.dylib'
|
|
||||||
},
|
|
||||||
}
|
|
||||||
if platform.system() == 'Windows':
|
|
||||||
TYPES['Windows'] = {
|
|
||||||
'loader': ctypes.WinDLL,
|
|
||||||
'functype': ctypes.WINFUNCTYPE,
|
|
||||||
'prefix': "",
|
|
||||||
'extension': '.dll'
|
|
||||||
}
|
|
||||||
|
|
||||||
class LibraryLoadError(OSError): pass
|
|
||||||
|
|
||||||
def load_library(library, x86_path='.', x64_path='.', *args, **kwargs):
|
|
||||||
lib = find_library_path(library, x86_path=x86_path, x64_path=x64_path)
|
|
||||||
loaded = _do_load(str(lib), *args, **kwargs)
|
|
||||||
if loaded is not None:
|
|
||||||
return loaded
|
|
||||||
raise LibraryLoadError('unable to load %r. Provided library path: %r' % (library, lib))
|
|
||||||
|
|
||||||
def _do_load(file, *args, **kwargs):
|
|
||||||
loader = TYPES[platform.system()]['loader']
|
|
||||||
return loader(file, *args, **kwargs)
|
|
||||||
|
|
||||||
def find_library_path(libname, x86_path='.', x64_path='.'):
|
|
||||||
libname = '%s%s' % (TYPES[platform.system()]['prefix'], libname)
|
|
||||||
if platform.architecture()[0] == '64bit':
|
|
||||||
path = os.path.join(x64_path, libname)
|
|
||||||
else:
|
|
||||||
path = os.path.join(x86_path, libname)
|
|
||||||
ext = get_library_extension()
|
|
||||||
path = '%s%s' % (path, ext)
|
|
||||||
return os.path.abspath(path)
|
|
||||||
|
|
||||||
|
|
||||||
def get_functype():
|
|
||||||
return TYPES[platform.system()]['functype']
|
|
||||||
|
|
||||||
def get_library_extension():
|
|
||||||
return TYPES[platform.system()]['extension']
|
|
Loading…
x
Reference in New Issue
Block a user