本文整理汇总了Python中pypy.module._cffi_backend.ctypeobj.W_CType类的典型用法代码示例。如果您正苦于以下问题:Python W_CType类的具体用法?Python W_CType怎么用?Python W_CType使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了W_CType类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, space, size, extra, extra_position, ctitem,
could_cast_anything=True):
name, name_position = ctitem.insert_name(extra, extra_position)
W_CType.__init__(self, space, size, name, name_position)
# this is the "underlying type":
# - for pointers, it is the pointed-to type
# - for arrays, it is the array item type
# - for functions, it is the return type
self.ctitem = ctitem
self.can_cast_anything = could_cast_anything and ctitem.cast_anything
开发者ID:bukzor,项目名称:pypy,代码行数:10,代码来源:ctypeptr.py
示例2: __init__
def __init__(self, space, size, extra, extra_position, ctitem,
could_cast_anything=True):
from pypy.module._cffi_backend.ctypestruct import W_CTypeStructOrUnion
name, name_position = ctitem.insert_name(extra, extra_position)
W_CType.__init__(self, space, size, name, name_position)
# this is the "underlying type":
# - for pointers, it is the pointed-to type
# - for arrays, it is the array item type
# - for functions, it is the return type
self.ctitem = ctitem
self.can_cast_anything = could_cast_anything and ctitem.cast_anything
self.is_struct_ptr = isinstance(ctitem, W_CTypeStructOrUnion)
开发者ID:charred,项目名称:pypy,代码行数:12,代码来源:ctypeptr.py
示例3: string
def string(self, cdataobj, maxlen):
space = self.space
if isinstance(self.ctitem, ctypeprim.W_CTypePrimitive):
cdata = cdataobj._cdata
if not cdata:
raise operationerrfmt(space.w_RuntimeError,
"cannot use string() on %s",
space.str_w(cdataobj.repr()))
#
from pypy.module._cffi_backend import ctypearray
length = maxlen
if length < 0 and isinstance(self, ctypearray.W_CTypeArray):
length = cdataobj.get_array_length()
#
# pointer to a primitive type of size 1: builds and returns a str
if self.ctitem.size == rffi.sizeof(lltype.Char):
if length < 0:
s = rffi.charp2str(cdata)
else:
s = rffi.charp2strn(cdata, length)
keepalive_until_here(cdataobj)
return space.wrap(s)
#
# pointer to a wchar_t: builds and returns a unicode
if self.is_unichar_ptr_or_array():
cdata = rffi.cast(rffi.CWCHARP, cdata)
if length < 0:
u = rffi.wcharp2unicode(cdata)
else:
u = rffi.wcharp2unicoden(cdata, length)
keepalive_until_here(cdataobj)
return space.wrap(u)
#
return W_CType.string(self, cdataobj, maxlen)
开发者ID:charred,项目名称:pypy,代码行数:34,代码来源:ctypeptr.py
示例4: getcfield
def getcfield(self, attr):
if self.fields_dict is not None:
self = jit.promote(self)
attr = jit.promote_string(attr)
try:
return self._getcfield_const(attr)
except KeyError:
pass
return W_CType.getcfield(self, attr)
开发者ID:bukzor,项目名称:pypy,代码行数:9,代码来源:ctypestruct.py
示例5: _fget
def _fget(self, attrchar):
if attrchar == 'f': # fields
space = self.space
if self.size < 0:
return space.w_None
result = [None] * len(self.fields_list)
for fname, field in self.fields_dict.iteritems():
i = self.fields_list.index(field)
result[i] = space.newtuple([space.wrap(fname),
space.wrap(field)])
return space.newlist(result)
return W_CType._fget(self, attrchar)
开发者ID:bukzor,项目名称:pypy,代码行数:12,代码来源:ctypestruct.py
示例6: getcfield
def getcfield(self, attr):
ready = self._fields_dict is not None
if not ready and self.size >= 0:
self.force_lazy_struct()
ready = True
if ready:
self = jit.promote(self)
attr = jit.promote_string(attr)
try:
return self._getcfield_const(attr)
except KeyError:
pass
return W_CType.getcfield(self, attr)
开发者ID:Qointum,项目名称:pypy,代码行数:13,代码来源:ctypestruct.py
示例7: cast
def cast(self, w_ob):
# cast to a pointer, to a funcptr, or to an array.
# Note that casting to an array is an extension to the C language,
# which seems to be necessary in order to sanely get a
# <cdata 'int[3]'> at some address.
if self.size < 0:
return W_CType.cast(self, w_ob)
space = self.space
if (isinstance(w_ob, cdataobj.W_CData) and
isinstance(w_ob.ctype, W_CTypePtrOrArray)):
value = w_ob._cdata
else:
value = misc.as_unsigned_long(space, w_ob, strict=False)
value = rffi.cast(rffi.CCHARP, value)
return cdataobj.W_CData(space, value, self)
开发者ID:charred,项目名称:pypy,代码行数:15,代码来源:ctypeptr.py
示例8: __init__
def __init__(self, space, name):
W_CType.__init__(self, space, -1, name, len(name))
开发者ID:bukzor,项目名称:pypy,代码行数:2,代码来源:ctypestruct.py
示例9: string
def string(self, cdataobj, maxlen):
if self.size == 1:
with cdataobj as ptr:
s = ptr[0]
return self.space.wrap(s)
return W_CType.string(self, cdataobj, maxlen)
开发者ID:Darriall,项目名称:pypy,代码行数:6,代码来源:ctypeprim.py
示例10: __init__
def __init__(self, space, size, name, name_position, align):
W_CType.__init__(self, space, size, name, name_position)
self.align = align
开发者ID:Darriall,项目名称:pypy,代码行数:3,代码来源:ctypeprim.py
示例11: string
def string(self, cdataobj, maxlen):
if self.size == 1:
s = cdataobj._cdata[0]
keepalive_until_here(cdataobj)
return self.space.wrap(s)
return W_CType.string(self, cdataobj, maxlen)
开发者ID:kipras,项目名称:pypy,代码行数:6,代码来源:ctypeprim.py
示例12: __init__
def __init__(self, space):
W_CType.__init__(self, space, -1, "void", len("void"))
开发者ID:Darriall,项目名称:pypy,代码行数:2,代码来源:ctypevoid.py
示例13: string
def string(self, cdataobj, maxlen):
# Can't use ffi.string() on a function pointer
return W_CType.string(self, cdataobj, maxlen)
开发者ID:mozillazg,项目名称:pypy,代码行数:3,代码来源:ctypefunc.py
示例14: unpack_ptr
def unpack_ptr(self, w_ctypeptr, ptr, length):
result = self.unpack_list_of_int_items(ptr, length)
if result is not None:
return self.space.newlist_int(result)
return W_CType.unpack_ptr(self, w_ctypeptr, ptr, length)
开发者ID:sota,项目名称:pypy,代码行数:5,代码来源:ctypeprim.py
注:本文中的pypy.module._cffi_backend.ctypeobj.W_CType类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论