import sys
import string
-import format
+import binascii
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
+import format
+
class Node:
visitor.visit_literal(self)
+class Blob(Node):
+
+ def __init__(self, value):
+ self._rawValue = None
+ self._hexValue = value
+
+ def getValue(self):
+ if self._rawValue is None:
+ self._rawValue = binascii.a2b_hex(self._hexValue)
+ self._hexValue = None
+ return self._rawValue
+
+ def visit(self, visitor):
+ visitor.visit_blob(self)
+
+
class NamedConstant(Node):
def __init__(self, name):
def visit_literal(self, node):
raise NotImplementedError
+ def visit_blob(self, node):
+ raise NotImplementedError
+
def visit_named_constant(self, node):
raise NotImplementedError
return
if isinstance(node.value, basestring):
- if len(node.value) >= 4096 or node.value.strip(string.printable):
- self.formatter.address('blob(%u)' % len(node.value))
- #self.formatter.text('...')
- return
-
self.formatter.literal('"' + node.value + '"')
return
self.formatter.literal(repr(node.value))
+ def visit_blob(self, node):
+ self.formatter.address('blob()')
+
def visit_named_constant(self, node):
self.formatter.literal(node.name)