本文整理汇总了Python中pypy.rpython.lltypesystem.rffi.str2charp函数的典型用法代码示例。如果您正苦于以下问题:Python str2charp函数的具体用法?Python str2charp怎么用?Python str2charp使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了str2charp函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test
def test(encoded, endian, realendian=None):
encoded_charp = rffi.str2charp(encoded)
strict_charp = rffi.str2charp("strict")
if endian is not None:
if endian < 0:
value = -1
elif endian > 0:
value = 1
else:
value = 0
pendian = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
pendian[0] = rffi.cast(rffi.INT, value)
else:
pendian = None
w_ustr = api.PyUnicode_DecodeUTF16(encoded_charp, len(encoded), strict_charp, pendian)
assert space.eq_w(space.call_method(w_ustr, 'encode', space.wrap('ascii')),
space.wrap("abcd"))
rffi.free_charp(encoded_charp)
rffi.free_charp(strict_charp)
if pendian:
if realendian is not None:
assert rffi.cast(rffi.INT, realendian) == pendian[0]
lltype.free(pendian, flavor='raw')
开发者ID:ieure,项目名称:pypy,代码行数:25,代码来源:test_unicodeobject.py
示例2: test_file_getline
def test_file_getline(self, space, api):
filename = rffi.str2charp(str(udir / "_test_file"))
mode = rffi.str2charp("w")
w_file = api.PyFile_FromString(filename, mode)
space.call_method(w_file, "write",
space.wrap("line1\nline2\nline3\nline4"))
space.call_method(w_file, "close")
rffi.free_charp(mode)
mode = rffi.str2charp("r")
w_file = api.PyFile_FromString(filename, mode)
rffi.free_charp(filename)
rffi.free_charp(mode)
w_line = api.PyFile_GetLine(w_file, 0)
assert space.str_w(w_line) == "line1\n"
w_line = api.PyFile_GetLine(w_file, 4)
assert space.str_w(w_line) == "line"
w_line = api.PyFile_GetLine(w_file, 0)
assert space.str_w(w_line) == "2\n"
# XXX We ought to raise an EOFError here, but don't
w_line = api.PyFile_GetLine(w_file, -1)
# assert api.PyErr_Occurred() is space.w_EOFError
assert space.str_w(w_line) == "line3\n"
space.call_method(w_file, "close")
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:30,代码来源:test_pyfile.py
示例3: test_ascii_codec
def test_ascii_codec(self, space, api):
s = 'abcdefg'
data = rffi.str2charp(s)
w_u = api.PyUnicode_DecodeASCII(data, len(s), lltype.nullptr(rffi.CCHARP.TO))
assert space.eq_w(w_u, space.wrap(u"abcdefg"))
rffi.free_charp(data)
s = 'abcd\xFF'
data = rffi.str2charp(s)
self.raises(space, api, UnicodeDecodeError, api.PyUnicode_DecodeASCII,
data, len(s), lltype.nullptr(rffi.CCHARP.TO))
rffi.free_charp(data)
uni = u'abcdefg'
data = rffi.unicode2wcharp(uni)
w_s = api.PyUnicode_EncodeASCII(data, len(uni), lltype.nullptr(rffi.CCHARP.TO))
assert space.eq_w(space.wrap("abcdefg"), w_s)
rffi.free_wcharp(data)
u = u'äbcdéfg'
data = rffi.unicode2wcharp(u)
w_s = api.PyUnicode_EncodeASCII(data, len(u), lltype.nullptr(rffi.CCHARP.TO))
self.raises(space, api, UnicodeEncodeError, api.PyUnicode_EncodeASCII,
data, len(u), lltype.nullptr(rffi.CCHARP.TO))
rffi.free_wcharp(data)
开发者ID:ieure,项目名称:pypy,代码行数:25,代码来源:test_unicodeobject.py
示例4: bindtextdomain
def bindtextdomain(space, domain, w_dir):
"""bindtextdomain(domain, dir) -> string
Bind the C library's domain to dir."""
if space.is_w(w_dir, space.w_None):
dir = None
domain_c = rffi.str2charp(domain)
try:
dirname = _bindtextdomain(domain_c, dir)
finally:
rffi.free_charp(domain_c)
else:
dir = space.str_w(w_dir)
domain_c = rffi.str2charp(domain)
dir_c = rffi.str2charp(dir)
try:
dirname = _bindtextdomain(domain_c, dir_c)
finally:
rffi.free_charp(domain_c)
rffi.free_charp(dir_c)
if not dirname:
errno = rposix.get_errno()
raise OperationError(space.w_OSError, space.wrap(errno))
return space.wrap(rffi.charp2str(dirname))
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:25,代码来源:interp_locale.py
示例5: bind_textdomain_codeset
def bind_textdomain_codeset(space, domain, w_codeset):
"""bind_textdomain_codeset(domain, codeset) -> string
Bind the C library's domain to codeset."""
if space.is_w(w_codeset, space.w_None):
codeset = None
domain_c = rffi.str2charp(domain)
try:
result = _bind_textdomain_codeset(domain_c, codeset)
finally:
rffi.free_charp(domain_c)
else:
codeset = space.str_w(w_codeset)
domain_c = rffi.str2charp(domain)
codeset_c = rffi.str2charp(codeset)
try:
result = _bind_textdomain_codeset(domain_c, codeset_c)
finally:
rffi.free_charp(domain_c)
rffi.free_charp(codeset_c)
if not result:
return space.w_None
else:
return space.wrap(rffi.charp2str(result))
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:25,代码来源:interp_locale.py
示例6: dcgettext
def dcgettext(space, w_domain, msg, category):
"""dcgettext(domain, msg, category) -> string
Return translation of msg in domain and category."""
if space.is_w(w_domain, space.w_None):
domain = None
msg_c = rffi.str2charp(msg)
try:
result = _dcgettext(domain, msg_c, rffi.cast(rffi.INT, category))
# note that 'result' may be the same pointer as 'msg_c',
# so it must be converted to an RPython string *before*
# we free msg_c.
result = rffi.charp2str(result)
finally:
rffi.free_charp(msg_c)
else:
domain = space.str_w(w_domain)
domain_c = rffi.str2charp(domain)
msg_c = rffi.str2charp(msg)
try:
result = _dcgettext(domain_c, msg_c,
rffi.cast(rffi.INT, category))
# note that 'result' may be the same pointer as 'msg_c',
# so it must be converted to an RPython string *before*
# we free msg_c.
result = rffi.charp2str(result)
finally:
rffi.free_charp(domain_c)
rffi.free_charp(msg_c)
return space.wrap(result)
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:31,代码来源:interp_locale.py
示例7: strxfrm
def strxfrm(space, s):
"string -> string. Returns a string that behaves for cmp locale-aware."
n1 = len(s) + 1
buf = lltype.malloc(rffi.CCHARP.TO, n1, flavor="raw", zero=True)
s_c = rffi.str2charp(s)
try:
n2 = _strxfrm(buf, s_c, n1) + 1
finally:
rffi.free_charp(s_c)
if n2 > n1:
# more space needed
lltype.free(buf, flavor="raw")
buf = lltype.malloc(rffi.CCHARP.TO, intmask(n2),
flavor="raw", zero=True)
s_c = rffi.str2charp(s)
try:
_strxfrm(buf, s_c, n2)
finally:
rffi.free_charp(s_c)
val = rffi.charp2str(buf)
lltype.free(buf, flavor="raw")
return space.wrap(val)
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:25,代码来源:interp_locale.py
示例8: strcoll
def strcoll(space, w_s1, w_s2):
"string,string -> int. Compares two strings according to the locale."
if space.is_true(space.isinstance(w_s1, space.w_str)) and \
space.is_true(space.isinstance(w_s2, space.w_str)):
s1, s2 = space.str_w(w_s1), space.str_w(w_s2)
s1_c = rffi.str2charp(s1)
s2_c = rffi.str2charp(s2)
try:
return space.wrap(_strcoll(s1_c, s2_c))
finally:
rffi.free_charp(s1_c)
rffi.free_charp(s2_c)
#if not space.is_true(space.isinstance(w_s1, space.w_unicode)) and \
# not space.is_true(space.isinstance(w_s2, space.w_unicode)):
# raise OperationError(space.w_ValueError,
# space.wrap("strcoll arguments must be strings"))
s1, s2 = space.unicode_w(w_s1), space.unicode_w(w_s2)
s1_c = rffi.unicode2wcharp(s1)
s2_c = rffi.unicode2wcharp(s2)
try:
result = _wcscoll(s1_c, s2_c)
finally:
rffi.free_wcharp(s1_c)
rffi.free_wcharp(s2_c)
return space.wrap(result)
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:31,代码来源:interp_locale.py
示例9: test_AsEncodedObject
def test_AsEncodedObject(self, space, api):
ptr = space.wrap('abc')
errors = rffi.str2charp("strict")
encoding = rffi.str2charp("hex")
res = api.PyString_AsEncodedObject(
ptr, encoding, errors)
assert space.unwrap(res) == "616263"
res = api.PyString_AsEncodedObject(
ptr, encoding, lltype.nullptr(rffi.CCHARP.TO))
assert space.unwrap(res) == "616263"
rffi.free_charp(encoding)
encoding = rffi.str2charp("unknown_encoding")
self.raises(space, api, LookupError, api.PyString_AsEncodedObject,
ptr, encoding, errors)
rffi.free_charp(encoding)
rffi.free_charp(errors)
res = api.PyString_AsEncodedObject(
ptr, lltype.nullptr(rffi.CCHARP.TO), lltype.nullptr(rffi.CCHARP.TO))
assert space.unwrap(res) == "abc"
self.raises(space, api, TypeError, api.PyString_AsEncodedObject,
space.wrap(2), lltype.nullptr(rffi.CCHARP.TO), lltype.nullptr(rffi.CCHARP.TO)
)
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:29,代码来源:test_stringobject.py
示例10: test_dlopen
def test_dlopen(self):
s = rffi.str2charp('xxxxxxxxxxxx')
py.test.raises(DLOpenError, "dlopen(s)")
rffi.free_charp(s)
#
s = rffi.str2charp(get_libc_name())
assert dlopen(s)
rffi.free_charp(s)
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:8,代码来源:test_rdynload.py
示例11: test_strlen
def test_strlen():
strlen = rffi.llexternal('strlen', [rffi.CCHARP], lltype.Signed,
includes=['string.h'])
s = rffi.str2charp("xxx")
res = strlen(s)
rffi.free_charp(s)
assert res == 3
s = rffi.str2charp("")
res = strlen(s)
rffi.free_charp(s)
assert res == 0
开发者ID:TheDunn,项目名称:flex-pypy,代码行数:11,代码来源:test_ll2ctypes.py
示例12: test_strlen
def test_strlen(self):
eci = ExternalCompilationInfo(includes=['string.h'])
strlen = rffi.llexternal('strlen', [rffi.CCHARP], rffi.SIZE_T,
compilation_info=eci)
s = rffi.str2charp("xxx")
res = strlen(s)
rffi.free_charp(s)
assert res == 3 # actually r_size_t(3)
s = rffi.str2charp("")
res = strlen(s)
rffi.free_charp(s)
assert res == 0 # actually r_size_t(0)
assert not ALLOCATED # detects memory leaks in the test
开发者ID:antoine1fr,项目名称:pygirl,代码行数:13,代码来源:test_ll2ctypes.py
示例13: test_file_fromstring
def test_file_fromstring(self, space, api):
filename = rffi.str2charp(str(udir / "_test_file"))
mode = rffi.str2charp("wb")
w_file = api.PyFile_FromString(filename, mode)
rffi.free_charp(filename)
rffi.free_charp(mode)
assert api.PyFile_Check(w_file)
assert api.PyFile_CheckExact(w_file)
assert not api.PyFile_Check(space.wrap("text"))
space.call_method(w_file, "write", space.wrap("text"))
space.call_method(w_file, "close")
assert (udir / "_test_file").read() == "text"
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:14,代码来源:test_pyfile.py
示例14: get_new_method_def
def get_new_method_def(space):
state = space.fromcache(State)
if state.new_method_def:
return state.new_method_def
from pypy.module.cpyext.modsupport import PyMethodDef
ptr = lltype.malloc(PyMethodDef, flavor="raw", zero=True,
immortal=True)
ptr.c_ml_name = rffi.str2charp("__new__")
lltype.render_immortal(ptr.c_ml_name)
rffi.setintfield(ptr, 'c_ml_flags', METH_VARARGS | METH_KEYWORDS)
ptr.c_ml_doc = rffi.str2charp(
"T.__new__(S, ...) -> a new object with type S, a subtype of T")
lltype.render_immortal(ptr.c_ml_doc)
state.new_method_def = ptr
return ptr
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:15,代码来源:typeobject.py
示例15: buffer_attach
def buffer_attach(space, py_obj, w_obj):
"""
Fills a newly allocated PyBufferObject with the given (str) buffer object.
"""
py_buf = rffi.cast(PyBufferObject, py_obj)
py_buf.c_b_offset = 0
rffi.setintfield(py_buf, 'c_b_readonly', 1)
rffi.setintfield(py_buf, 'c_b_hash', -1)
if isinstance(w_obj, SubBuffer):
py_buf.c_b_offset = w_obj.offset
w_obj = w_obj.buffer
# If w_obj already allocated a fixed buffer, use it, and keep a
# reference to w_obj.
# Otherwise, b_base stays NULL, and we own the b_ptr.
if isinstance(w_obj, StringBuffer):
py_buf.c_b_base = lltype.nullptr(PyObject.TO)
py_buf.c_b_ptr = rffi.cast(rffi.VOIDP, rffi.str2charp(w_obj.value))
py_buf.c_b_size = w_obj.getlength()
elif isinstance(w_obj, ArrayBuffer):
w_base = w_obj.array
py_buf.c_b_base = make_ref(space, w_base)
py_buf.c_b_ptr = rffi.cast(rffi.VOIDP, w_obj.array._charbuf_start())
py_buf.c_b_size = w_obj.getlength()
else:
raise OperationError(space.w_NotImplementedError, space.wrap(
"buffer flavor not supported"))
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:29,代码来源:bufferobject.py
示例16: test_setitemstring
def test_setitemstring(self, space, api):
w_d = space.newdict()
key = rffi.str2charp("key")
api.PyMapping_SetItemString(w_d, key, space.wrap(42))
assert 42 == space.unwrap(
api.PyMapping_GetItemString(w_d, key))
rffi.free_charp(key)
开发者ID:Debug-Orz,项目名称:Sypy,代码行数:7,代码来源:test_mapping.py
示例17: _make_mode
def _make_mode(vm_path, path, bc, verbosity, mk_fresh):
# Try to work out a plausible cached path name.
dp = path.rfind(os.extsep)
if dp >= 0 and os.sep not in path[dp:]:
cp = path[:dp]
else:
cp = None
if not cp or mk_fresh:
return _do_make_mode(vm_path, path, None, verbosity, mk_fresh)
else:
# There is a cached path, so now we try and load it and see if it is upto date. If any part
# of this fails, we simply go straight to full make mode.
try:
st = os.stat(cp)
except OSError:
return _do_make_mode(vm_path, path, cp, verbosity, mk_fresh)
cbc, start = _read_bc(cp, "CONVEXEC")
if start == -1:
return _do_make_mode(vm_path, path, cp, verbosity, mk_fresh)
assert start >= 0
useful_bc = cbc[start:]
if Bytecode.exec_upto_date(None, rffi.str2charp(useful_bc), st.st_mtime):
return cbc, start, 0
return _do_make_mode(vm_path, path, cp, verbosity, mk_fresh)
开发者ID:cfbolz,项目名称:converge,代码行数:28,代码来源:main.py
示例18: execv_lltypeimpl
def execv_lltypeimpl(path, args):
l_path = rffi.str2charp(path)
l_args = rffi.liststr2charpp(args)
os_execv(l_path, l_args)
rffi.free_charpp(l_args)
rffi.free_charp(l_path)
raise OSError(rffi.c_errno, "execv failed")
开发者ID:TheDunn,项目名称:flex-pypy,代码行数:7,代码来源:ll_os.py
示例19: test_getattr
def test_getattr(self, space, api):
charp1 = rffi.str2charp("__len__")
charp2 = rffi.str2charp("not_real")
assert api.PyObject_GetAttrString(space.wrap(""), charp1)
assert not api.PyObject_GetAttrString(space.wrap(""), charp2)
assert api.PyErr_Occurred() is space.w_AttributeError
api.PyErr_Clear()
assert api.PyObject_DelAttrString(space.wrap(""), charp1) == -1
assert api.PyErr_Occurred() is space.w_AttributeError
api.PyErr_Clear()
rffi.free_charp(charp1)
rffi.free_charp(charp2)
assert api.PyObject_GetAttr(space.wrap(""), space.wrap("__len__"))
assert api.PyObject_DelAttr(space.wrap(""), space.wrap("__len__")) == -1
api.PyErr_Clear()
开发者ID:gorakhargosh,项目名称:pypy,代码行数:16,代码来源:test_object.py
示例20: setlocale
def setlocale(space, category, w_locale=None):
"(integer,string=None) -> string. Activates/queries locale processing."
if cConfig.LC_MAX is not None:
if not cConfig.LC_MIN <= category <= cConfig.LC_MAX:
raise make_error(space, "invalid locale category")
if space.is_w(w_locale, space.w_None) or w_locale is None:
result = _setlocale(rffi.cast(rffi.INT, category), None)
if not result:
raise make_error(space, "locale query failed")
else:
locale = rffi.str2charp(space.str_w(w_locale))
result = _setlocale(rffi.cast(rffi.INT, category), locale)
if not result:
raise make_error(space, "unsupported locale setting")
# record changes to LC_CTYPE
if category in (LC_CTYPE, LC_ALL):
w_module = space.getbuiltinmodule('_locale')
w_fun = space.getattr(w_module, space.wrap('_fixup_ulcase'))
space.call_function(w_fun)
return space.wrap(rffi.charp2str(result))
开发者ID:alkorzt,项目名称:pypy,代码行数:25,代码来源:interp_locale.py
注:本文中的pypy.rpython.lltypesystem.rffi.str2charp函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论