def to_runicode(s): from pypy.rpython.lltypesystem.rstr import UNICODE, mallocunicode if s is None: return lltype.nullptr(UNICODE) p = mallocunicode(len(s)) for i in range(len(s)): p.chars[i] = s[i] return p
def llstr(s): from pypy.rpython.lltypesystem.rstr import mallocstr, mallocunicode if strtype is str: ll_s = mallocstr(len(s)) else: ll_s = mallocunicode(len(s)) for i, c in enumerate(s): ll_s.chars[i] = c return ll_s
def test_unicode(self): ofs = symbolic.get_field_token(rstr.UNICODE, "chars", False)[0] u = rstr.mallocunicode(13) for i in range(13): u.chars[i] = unichr(ord(u"a") + i) b = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, u)) r = self.execute_operation(rop.UNICODEGETITEM, [b, ConstInt(2)], "int") assert r.value == ord(u"a") + 2 self.execute_operation(rop.UNICODESETITEM, [b, ConstInt(2), ConstInt(ord(u"z"))], "void") assert u.chars[2] == u"z" assert u.chars[3] == u"d"
def test_unicode(self): ofs = symbolic.get_field_token(rstr.UNICODE, 'chars', False)[0] u = rstr.mallocunicode(13) for i in range(13): u.chars[i] = unichr(ord(u'a') + i) b = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, u)) r = self.execute_operation(rop.UNICODEGETITEM, [b, ConstInt(2)], 'int') assert r.value == ord(u'a') + 2 self.execute_operation(rop.UNICODESETITEM, [b, ConstInt(2), ConstInt(ord(u'z'))], 'void') assert u.chars[2] == u'z' assert u.chars[3] == u'd'
def llstr(s): from pypy.rpython.lltypesystem.rstr import mallocstr, mallocunicode from pypy.rpython.lltypesystem.rstr import STR, UNICODE if strtype is str: if s is None: return lltype.nullptr(STR) ll_s = mallocstr(len(s)) else: if s is None: return lltype.nullptr(UNICODE) ll_s = mallocunicode(len(s)) for i, c in enumerate(s): ll_s.chars[i] = c return ll_s
def test_hlunicode(self): s = mallocunicode(3) s.chars[0] = u"a" s.chars[1] = u"b" s.chars[2] = u"c" assert hlunicode(s) == u"abc"