Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sundarnagarajan/cffi_utils
Utility modules to build python wrappers around C code
https://github.com/sundarnagarajan/cffi_utils
cffi ffi python
Last synced: 23 days ago
JSON representation
Utility modules to build python wrappers around C code
- Host: GitHub
- URL: https://github.com/sundarnagarajan/cffi_utils
- Owner: sundarnagarajan
- License: gpl-3.0
- Created: 2016-03-16T12:58:10.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-09-27T19:55:16.000Z (about 8 years ago)
- Last Synced: 2024-10-15T17:22:45.024Z (30 days ago)
- Topics: cffi, ffi, python
- Language: Python
- Size: 64.5 KB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-GPLv3.txt
Awesome Lists containing this project
README
# Module cffi_utils.sowrapper
Utility functions to locate and load shared libraries### DESCRIPTION
Recommended usage:
Should only need to use get_lib_ffi_shared() or get_lib_ffi_resource()
Use get_lib_ffi_shared to load a system-wide shared library with a known library filename and / or path
Use get_lib_ffi_resource to load a module-specific shared library where library filename _MAY_ be mangled as per PEP3149 and path _MAY_ need to be looked up using pkg_resources. Internally, get_lib_ffi_resource() calls get_lib_ffi_shared()
Both return a tuple: (ffi, lib):ffi-->FFIExt - should behave like cffi.FFI with some additional
utility methods
lib-->SharedLibWrapper instance - use methods on this object to
call methods in the shared library### CLASSES
class SharedLibWrapper(__builtin__.object)
| Methods defined here:
|
| __init__(self, libpath, c_hdr, module_name=None)
| libpath-->str: library name; can also be full path
| c_hdr-->str: C-style header definitions for functions to wrap
| ffi-->FFIExt or cffi.FFI### FUNCTIONS
get_lib_ffi_resource(module_name, libpath, c_hdr)
module_name-->str: module name to retrieve resource
libpath-->str: shared library filename with optional path
c_hdr-->str: C-style header definitions for functions to wrap
Returns-->(ffi, lib)
Use this method when you are loading a package-specific shared library
If you want to load a system-wide shared library, use get_lib_ffi_shared
instead
get_lib_ffi_shared(libpath, c_hdr)
libpath-->str: shared library filename with optional path
c_hdr-->str: C-style header definitions for functions to wrap
Returns-->(ffi, lib)# Module cffi_utils.ffi
Extension of cffi.FFI adding a few utility methods### CLASSES
class FFIExt(cffi.api.FFI)
| FFIExt is an extension of cffi.FFI, adding a few utility methods
|
| get_cdata(), get_buffer() and get_bytes() all operate on a variable
| list of arguments as a convenience.
|
| Otherwise, get_cdata() and get_buffer() are equivalent to
| FFI.from_buffer() and FFI.buffer() respectively
|
| get_bytes() is identical to get_buffer() except that outputs are
| converted to bytes
|
| get_buffer(self, *args)
| all args-->_cffi_backend.CDataOwn
| Must be a pointer or an array
| Returns-->buffer (if a SINGLE argument was provided)
| LIST of buffer (if a args was a tuple or list)
|
| get_bytes(self, *args)
| all args-->_cffi_backend.CDataOwn
| Must be a pointer or an array
| Returns-->bytes (if a SINGLE argument was provided)
| LIST of bytes (if a args was a tuple or list)
|
| get_cdata(self, *args)
| all args-->_cffi_backend.buffer
| Returns-->cdata (if a SINGLE argument was provided)
| LIST of cdata (if a args was a tuple or list)
|
| get_extension(self)# Module cffi_utils.py2to3
Utility functions for Py2/Py3 compatibility### FUNCTIONS
chr(x)
x-->int / byte
Returns-->byte / str of length 1
Behaves like PY2 chr() in PY2 or PY3
decode(b, encoding='latin-1')
b-->bytes
encoding-->str: encoding to use. Recommended to use default
Returns-->str: b decoded to str using encoding
Works in PY2, PY3
encode(s, encoding='latin-1')
s-->str
encoding-->str: encoding to use. Recommended to use default
Returns-->bytes: s encoded to bytes using encoding
Works in PY2, PY3
fromBytes(b)
s-->bytes (or str)
Returns-->str (works in PY2, PY3)
inputFromBytes(func, *args, **kwargs)
Descriptor that converts all arguments to str
inputToBytes(func, *args, **kwargs)
Descriptor that converts all arguments to bytes
ord(x)
x-->int / byte
Returns-->int
Behaves like PY2 ord() in PY2 or PY3
outputFromBytes(func, *args, **kwargs)
Descriptor that converts all return values to str
outputToBytes(func, *args, **kwargs)
Descriptor that converts all return values to bytes
toBytes(s)
s-->str (or bytes)
Returns-->bytes (works in PY2, PY3)