我们从Python开源项目中,提取了以下35个代码示例,用于说明如何使用ctypes.c_voidp()。
def _set_vertex_attributes(vertex_format, layout, vbo_vertex_capacity): """Set the OpenGL vertex attributes.""" gl.glBindVertexArray(vertex_format.vao) gl.glBindBuffer(gl.GL_ARRAY_BUFFER, vertex_format.vbo) if layout == VertexLayout.INTERLEAVED: stride = sum(attr.size for attr in vertex_format.attributes) offsets = [0] + list(_accumulate([ attr.size for attr in vertex_format.attributes[:-1]])) elif layout == VertexLayout.PACKED: stride = 0 offsets = [0] + list(_accumulate([ attr.size * vbo_vertex_capacity for attr in vertex_format.attributes[:-1]])) for i, attr in enumerate(vertex_format.attributes): gl.glEnableVertexAttribArray(attr.location) gl.glVertexAttribPointer( attr.location, attr.count, attr.type, attr.normalized, stride, ctypes.c_voidp(offsets[i])) gl.glVertexAttribDivisor(attr.location, attr.divisor)
def nprocessors(): try: try: # Mac OS libc=ctypes.cdll.LoadLibrary(ctypes.util.find_library('libc')) v=ctypes.c_int(0) size=ctypes.c_size_t(ctypes.sizeof(v)) libc.sysctlbyname('hw.ncpu', ctypes.c_voidp(ctypes.addressof(v)), ctypes.addressof(size), None, 0) return v.value except: # Cygwin (Windows) and Linuxes # Could try sysconf(_SC_NPROCESSORS_ONLN) (LSB) next. Instead, count processors in cpuinfo. s = open('/proc/cpuinfo', 'r').read() return s.replace(' ', '').replace('\t', '').count('processor:') except: return 1
def load_outmod(dllname): outdll = ctypes.cdll.LoadLibrary(dllname) getaddr = outdll.winampGetOutModule getaddr.restype = c_voidp # outmod = (OutModule*)(getaddr()) outmod = cast(getaddr(), POINTER(OutModule))[0] return outmod # export InModule from dll
def load_inmod(dllname): indll = ctypes.cdll.LoadLibrary(dllname) getaddr = indll.winampGetInModule2 getaddr.restype = c_voidp # inmod = (InModule*)(getaddr()) inmod = cast(getaddr(), POINTER(InModule))[0] return inmod # init inmod/outmod together
def _command_line_to_args_list(cmdline): """splits a string into a list using Windows command line syntax.""" args_list = [] if cmdline and cmdline.strip(): from ctypes import c_int, c_voidp, c_wchar_p from ctypes import byref, POINTER, WinDLL clta = WinDLL('shell32').CommandLineToArgvW clta.argtypes = [c_wchar_p, POINTER(c_int)] clta.restype = POINTER(c_wchar_p) lf = WinDLL('kernel32').LocalFree lf.argtypes = [c_voidp] pNumArgs = c_int() r = clta(cmdline, byref(pNumArgs)) if r: for index in range(0, pNumArgs.value): if sys.hexversion >= 0x030000F0: argval = r[index] else: argval = r[index].encode('ascii', 'replace') args_list.append(argval) lf(r) else: sys.stderr.write('Error parsing script arguments:\n') sys.stderr.write(cmdline + '\n') return args_list
def sendfile(fdout, fdin, offset, nbytes): if sys.platform == 'darwin': _sendfile.argtypes = [ctypes.c_int, ctypes.c_int, ctypes.c_uint64, ctypes.POINTER(ctypes.c_uint64), ctypes.c_voidp, ctypes.c_int] _nbytes = ctypes.c_uint64(nbytes) result = _sendfile(fdin, fdout, offset, _nbytes, None, 0) if result == -1: e = ctypes.get_errno() if e == errno.EAGAIN and _nbytes.value is not None: return _nbytes.value raise OSError(e, os.strerror(e)) return _nbytes.value elif sys.platform in ('freebsd', 'dragonfly',): _sendfile.argtypes = [ctypes.c_int, ctypes.c_int, ctypes.c_uint64, ctypes.c_uint64, ctypes.c_voidp, ctypes.POINTER(ctypes.c_uint64), ctypes.c_int] _sbytes = ctypes.c_uint64() result = _sendfile(fdin, fdout, offset, nbytes, None, _sbytes, 0) if result == -1: e = ctypes.get_errno() if e == errno.EAGAIN and _sbytes.value is not None: return _sbytes.value raise OSError(e, os.strerror(e)) return _sbytes.value else: _sendfile.argtypes = [ctypes.c_int, ctypes.c_int, ctypes.POINTER(ctypes.c_uint64), ctypes.c_size_t] _offset = ctypes.c_uint64(offset) sent = _sendfile(fdout, fdin, _offset, nbytes) if sent == -1: e = ctypes.get_errno() raise OSError(e, os.strerror(e)) return sent
def __init__(self, params): self.ref = ct.c_voidp() self.params = params assert(len(params.qoi_x0) >= params.qoi_dim), "x0 should have d dimension" #print("---------", d, a0, f0, nu, L, x0, sigma) __lib__.SFieldCreate(ct.byref(self.ref), params.qoi_problem, params.qoi_dim, params.qoi_a0, params.qoi_f0, params.qoi_df_nu, params.qoi_df_L, params.qoi_df_sig, params.qoi_scale, params.qoi_x0, params.qoi_sigma)
def __init__(self, random_gen=None): self.random_gen = None or np.random self.ref = ct.c_voidp() self.checkErrCode(SField.lib.SFieldCreate(ct.byref(self.ref)))
def init_modules(inmod, outmod): def _SAVSAInit(n1, n2): pass def _SAVSADeInit(): pass def _SAAddPCMData(n1, n2, n3, n4): pass def _SAGetMode(): return 0; def _SAAdd(n1, n2, n3): pass def _VSAAdd(n1, n2): pass def _VSAAddPCMData(n1, n2, n3, n4): pass def _VSAGetMode(n1, n2): return 0 def _VSASetInfo(n1, n2): pass def _dspisactive(): return 0 def _dspyesactive(): return 1 def _dspdo(n1, n2, n3, n4, n5): return 0 def _setinfo(n1, n2, n3, n4): pass def _eqset(n1, n2, n3): pass # setting up default dummy functions inmod.SAVSAInit = CFUNCTYPE(None, c_int, c_int)(_SAVSAInit) inmod.SAVSADeInit = CFUNCTYPE(None, )(_SAVSADeInit) inmod.SAAddPCMData = CFUNCTYPE(None, c_voidp, c_int, c_int, c_int)(_SAAddPCMData) inmod.SAGetMode = CFUNCTYPE(c_int,)(_SAGetMode) inmod.SAAdd = CFUNCTYPE(None, c_voidp, c_int, c_int)(_SAAdd) inmod.VSAAdd = CFUNCTYPE(None, c_voidp, c_int)(_VSAAdd) inmod.VSAAddPCMData = CFUNCTYPE(None, c_voidp, c_int, c_int, c_int)(_VSAAddPCMData) inmod.VSAGetMode = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))(_VSAGetMode) inmod.VSASetInfo = CFUNCTYPE(None, c_int, c_int)(_VSASetInfo) inmod.dsp_isactive = CFUNCTYPE(c_int, )(_dspisactive) inmod.dsp_dosamples = CFUNCTYPE(c_int, c_voidp, c_int, c_int, c_int, c_int)(_dspdo) inmod.setinfo = CFUNCTYPE(None, c_int, c_int, c_int, c_int)(_setinfo) inmod.eqset = CFUNCTYPE(None, c_int, c_char_p, c_int)(_eqset) # setting up other members inmod.outmod = pointer(outmod) GetActiveWindow = windll.user32.GetActiveWindow inmod.hMainWindow = GetActiveWindow() inmod.hDllInstance = 0 outmod.hMainWindow = GetActiveWindow() outmod.hDllInstance = 0 return 0 #---------------------------------------------------------------------- # Global Variables #----------------------------------------------------------------------