当前位置: 首页>>代码示例>>Python>>正文


Python ctypeobj.W_CType类代码示例

本文整理汇总了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;未经允许,请勿转载。