def attach_prox_ctypes(lib, single_precision=False): if 'ok_float' not in lib.__dict__: attach_base_ctypes(lib, single_precision) ok_float = lib.ok_float # function struct class ok_function(Structure): _fields_ = [('h', c_uint), ('a', ok_float), ('b', ok_float), ('c', ok_float), ('d', ok_float), ('e', ok_float)] lib.function = ok_function lib.function_p = POINTER(lib.function) # function vector struct class ok_function_vector(Structure): _fields_ = [('size', c_size_t), ('objectives', lib.function_p)] lib.function_vector = ok_function_vector lib.function_vector_p = POINTER(lib.function_vector) lib.function_enums = OKFunctionEnums()
def attach_operator_projector_ctypes_ccalls(lib, single_precision=False): if 'ok_float' not in lib.__dict__: attach_base_ctypes(lib, single_precision) if 'operator_p' not in lib.__dict__: attach_operator_ctypes(lib, single_precision) if 'projector_p' not in lib.__dict__: attach_projector_ctypes(lib, single_precision) ok_float = lib.ok_float vector_p = lib.vector_p operator_p = lib.operator_p projector_p = lib.projector_p # types class indirect_projector(Structure): _fields_ = [('A', operator_p), ('cgls_work', c_void_p), ('flag', c_uint)] lib.indirect_projector = indirect_projector lib.indirect_projector_p = POINTER(lib.indirect_projector) indirect_projector_p = lib.indirect_projector_p class indirect_projector_generic(Structure): _fields_ = [('A', operator_p), ('cgls_work', c_void_p), ('linalg_handle', c_void_p), ('normA', ok_float), ('normalized', c_int), ('flag', c_uint)] lib.indirect_projector_generic = indirect_projector_generic lib.indirect_projector_generic_p = POINTER(lib.indirect_projector_generic) # calls lib.indirect_projector_alloc.argtypes = [indirect_projector_p, operator_p] lib.indirect_projector_initialize.argtypes = [c_void_p, indirect_projector_p, c_int] lib.indirect_projector_project.argtypes = [c_void_p, indirect_projector_p, vector_p, vector_p, vector_p, vector_p] lib.indirect_projector_free.argtypes = [indirect_projector_p] lib.indirect_projector_generic_alloc.argtypes = [operator_p] lib.indirect_projector_alloc.restype = c_uint lib.indirect_projector_initialize.restype = c_uint lib.indirect_projector_project.restype = c_uint lib.indirect_projector_free.restype = c_uint lib.indirect_projector_generic_alloc.restype = projector_p
def attach_operator_projector_ctypes_ccalls(lib, single_precision=False): if 'ok_float' not in lib.__dict__: attach_base_ctypes(lib, single_precision) if 'operator_p' not in lib.__dict__: attach_operator_ctypes(lib, single_precision) if 'projector_p' not in lib.__dict__: attach_projector_ctypes(lib, single_precision) ok_float = lib.ok_float vector_p = lib.vector_p operator_p = lib.operator_p projector_p = lib.projector_p # types class indirect_projector(Structure): _fields_ = [('A', operator_p), ('cgls_work', c_void_p), ('flag', c_uint)] lib.indirect_projector = indirect_projector lib.indirect_projector_p = POINTER(lib.indirect_projector) indirect_projector_p = lib.indirect_projector_p class indirect_projector_generic(Structure): _fields_ = [('A', operator_p), ('cgls_work', c_void_p), ('linalg_handle', c_void_p), ('normA', ok_float), ('normalized', c_int), ('flag', c_uint)] lib.indirect_projector_generic = indirect_projector_generic lib.indirect_projector_generic_p = POINTER(lib.indirect_projector_generic) # calls lib.indirect_projector_alloc.argtypes = [indirect_projector_p, operator_p] lib.indirect_projector_initialize.argtypes = [ c_void_p, indirect_projector_p, c_int ] lib.indirect_projector_project.argtypes = [ c_void_p, indirect_projector_p, vector_p, vector_p, vector_p, vector_p ] lib.indirect_projector_free.argtypes = [indirect_projector_p] lib.indirect_projector_generic_alloc.argtypes = [operator_p] lib.indirect_projector_alloc.restype = c_uint lib.indirect_projector_initialize.restype = c_uint lib.indirect_projector_project.restype = c_uint lib.indirect_projector_free.restype = c_uint lib.indirect_projector_generic_alloc.restype = projector_p