From 9951ad78c80e144c166a7d476cad7ffdf84332a9 Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Wed, 13 Aug 2014 14:55:49 -0700 Subject: Debug debugging --- src/strings/rstring.py | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) (limited to 'src/strings/rstring.py') diff --git a/src/strings/rstring.py b/src/strings/rstring.py index 8021ec2..fd26801 100644 --- a/src/strings/rstring.py +++ b/src/strings/rstring.py @@ -1,6 +1,4 @@ class RString(object): - ''' print a RString - ''' __slots__ = ('_value') name = 'tmwa::strings::RString' enabled = True @@ -8,12 +6,40 @@ class RString(object): def __init__(self, value): self._value = value + def to_string(self): + v = self._value + e = v['maybe_end'] + if e: + b = v['u']['begin'] + d = e - b + return b.lazy_string(length=d) + else: + r = v['u']['owned'].dereference() + b = r['body'] + b = b[0].address + d = r['size'] + return b.lazy_string(length=d) + def children(self): - yield 'count', self._value['owned'].dereference()['count'] + v = self._value + if v['maybe_end']: + pass + else: + yield 'count', v['u']['owned'].dereference()['count'] - def to_string(self): - r = self._value['owned'].dereference() - b = r['body'] - b = b.cast(b.type.target().pointer()) - d = r['size'] - return b.lazy_string(length=d) + str256 = '0123456789abcdef' * 16 + + tests = [ + ('tmwa::RString(""_s)', '""'), + ('tmwa::RString(tmwa::ZString(""_s))', '""'), + ('tmwa::RString("Hello"_s)', '"Hello"'), + ('tmwa::RString(tmwa::ZString("Hello"_s))', '"Hello" = {count = 0}'), + ('tmwa::RString("' + str256[:-2] + '"_s)', '"' + str256[:-2] + '"'), + ('tmwa::RString(tmwa::ZString("' + str256[:-2] + '"_s))', '"' + str256[:-2] + '" = {count = 0}'), + ('tmwa::RString("' + str256[:-1] + '"_s)', '"' + str256[:-1] + '"'), + ('tmwa::RString(tmwa::ZString("' + str256[:-1] + '"_s))', '"' + str256[:-1] + '" = {count = 0}'), + ('tmwa::RString("' + str256 + '"_s)', '"' + str256 + '"'), + ('tmwa::RString(tmwa::ZString("' + str256 + '"_s))', '"' + str256 + '" = {count = 0}'), + ('tmwa::RString("' + str256 + 'x"_s)', '"' + str256 + 'x"'), + ('tmwa::RString(tmwa::ZString("' + str256 + 'x"_s))', '"' + str256 + 'x" = {count = 0}'), + ] -- cgit v1.2.3-60-g2f50