Author: Jeremy Thurgood <fir...@gmail.com> Branch: split-verify Changeset: r1354:e5fe5874e20f Date: 2013-10-06 13:21 +0200 http://bitbucket.org/cffi/cffi/changeset/e5fe5874e20f/
Log: Move FFIBuilder into its own module. diff --git a/cffi/__init__.py b/cffi/__init__.py --- a/cffi/__init__.py +++ b/cffi/__init__.py @@ -1,7 +1,8 @@ __all__ = ['FFI', 'VerificationError', 'VerificationMissing', 'CDefError', - 'FFIError'] + 'FFIError', 'FFIBuilder'] -from .api import FFI, CDefError, FFIError, FFIBuilder +from .api import FFI, CDefError, FFIError +from .builder import FFIBuilder from .ffiplatform import VerificationError, VerificationMissing __version__ = "0.7.2" diff --git a/cffi/api.py b/cffi/api.py --- a/cffi/api.py +++ b/cffi/api.py @@ -448,74 +448,3 @@ return None else: return ffi._get_cached_btype(tp) - - -class FFIBuilder(object): - def __init__(self, module_name, module_path, backend=None): - self._module_name = module_name - self._module_path = module_path - self.ffi = FFI(backend=backend) - self._built_files = [] - self._module_source = "\n".join([ - "from cffi import FFI", - "", - "ffi = FFI()", - "", - ]) - - def cdef(self, csource, override=False): - self.ffi.cdef(csource, override=override) - self._module_source += "ffi.cdef(%r, override=%r)\n" % ( - csource, override) - - def add_dlopen(self, libname, name, flags=0): - lib = self.ffi.dlopen(name, flags=flags) - self._module_source += '\n'.join([ - "def load_%s():", - " return ffi.dlopen(%r, flags=%r)", - "", - ]) % (libname, name, flags) - return lib - - def makelib(self, libname, source='', **kwargs): - # XXX: We use force_generic_engine here because vengine_cpy collects - # types when it writes the source. - import os.path - from .verifier import Verifier, _get_so_suffix - self.ffi.verifier = Verifier( - self.ffi, source, force_generic_engine=True, **kwargs) - libfilename = '_'.join([self._module_name, libname]) - libfilepath = os.path.join( - self._module_path, libfilename + _get_so_suffix()) - self.ffi.verifier.make_library(libfilepath) - self._module_source += '\n'.join([ - "def load_%s():", - " from cffi.verifier import Verifier", - " import os.path", - " module_path = os.path.dirname(__file__)", - " verifier = Verifier(", - " ffi, None, module_path, %r, force_generic_engine=True)", - " verifier._has_module = True", - " return verifier._load_library()", - "", - ]) % (libname, libfilename) - self._built_files.append(libfilepath) - - def write_ffi_module(self): - import os - try: - os.makedirs(self._module_path) - except OSError: - pass - - module_filepath = os.path.join( - self._module_path, self._module_name + '.py') - file = open(module_filepath, 'w') - try: - file.write(self._module_source) - finally: - file.close() - self._built_files.append(module_filepath) - - def list_built_files(self): - return self._built_files diff --git a/cffi/builder.py b/cffi/builder.py new file mode 100644 --- /dev/null +++ b/cffi/builder.py @@ -0,0 +1,72 @@ +from .api import FFI + + +class FFIBuilder(object): + def __init__(self, module_name, module_path, backend=None): + self._module_name = module_name + self._module_path = module_path + self.ffi = FFI(backend=backend) + self._built_files = [] + self._module_source = "\n".join([ + "from cffi import FFI", + "", + "ffi = FFI()", + "", + ]) + + def cdef(self, csource, override=False): + self.ffi.cdef(csource, override=override) + self._module_source += "ffi.cdef(%r, override=%r)\n" % ( + csource, override) + + def add_dlopen(self, libname, name, flags=0): + lib = self.ffi.dlopen(name, flags=flags) + self._module_source += '\n'.join([ + "def load_%s():", + " return ffi.dlopen(%r, flags=%r)", + "", + ]) % (libname, name, flags) + return lib + + def makelib(self, libname, source='', **kwargs): + # XXX: We use force_generic_engine here because vengine_cpy collects + # types when it writes the source. + import os.path + from .verifier import Verifier, _get_so_suffix + self.ffi.verifier = Verifier( + self.ffi, source, force_generic_engine=True, **kwargs) + libfilename = '_'.join([self._module_name, libname]) + libfilepath = os.path.join( + self._module_path, libfilename + _get_so_suffix()) + self.ffi.verifier.make_library(libfilepath) + self._module_source += '\n'.join([ + "def load_%s():", + " from cffi.verifier import Verifier", + " import os.path", + " module_path = os.path.dirname(__file__)", + " verifier = Verifier(", + " ffi, None, module_path, %r, force_generic_engine=True)", + " verifier._has_module = True", + " return verifier._load_library()", + "", + ]) % (libname, libfilename) + self._built_files.append(libfilepath) + + def write_ffi_module(self): + import os + try: + os.makedirs(self._module_path) + except OSError: + pass + + module_filepath = os.path.join( + self._module_path, self._module_name + '.py') + file = open(module_filepath, 'w') + try: + file.write(self._module_source) + finally: + file.close() + self._built_files.append(module_filepath) + + def list_built_files(self): + return self._built_files _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit