Пример #1
0
 def unicode_to_ll(s):
     from rpython.rtyper.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
Пример #2
0
 def to_runicode(s):
     from rpython.rtyper.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
Пример #3
0
 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 = InputArgRef(lltype.cast_opaque_ptr(llmemory.GCREF, u))
     r = self.execute_operation(rop.UNICODEGETITEM, [b, ConstInt(2)], 'int')
     assert r == 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'
Пример #4
0
 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'
Пример #5
0
 def llstr(s):
     from rpython.rtyper.lltypesystem.rstr import mallocstr, mallocunicode
     from rpython.rtyper.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
Пример #6
0
 def llstr(s):
     from rpython.rtyper.lltypesystem.rstr import mallocstr, mallocunicode
     from rpython.rtyper.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
Пример #7
0
 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"
Пример #8
0
 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"