示例#1
0
 def _before_unpack(self, opts):
     CField._before_unpack(self, opts)
     try:
         opts['length'] = opts['data'].index('\0', opts['offset']) - opts['offset'] + 1
         if opts.has_key('max_length'):
             opts['length'] = min(opts['max_length'], opts['length'])
     except ValueError:
         raise UnpackException("Unterminated null string occured.")
示例#2
0
 def _before_unpack(self, opts):
     CField._before_unpack(self, opts)
     try:
         opts['length'] = opts['data'].index(
             '\0', opts['offset']) - opts['offset'] + 1
         if opts.has_key('max_length'):
             opts['length'] = min(opts['max_length'], opts['length'])
     except ValueError:
         raise UnpackException("Unterminated null string occured.")
示例#3
0
    def set_value(self, obj, value):
        if not isinstance(value, str) or value[-1] != '\0':
            raise ValueError(
                "NullStringField value must a string with last character == '\\0'."
            )

        return CField.set_value(self, obj, value)
示例#4
0
 def set_value(self, obj, value):
     wrapper = ListItemWrapper(value)
     wrapper._set_action = self.item_set_value
     wrapper._get_action = self.item_get_value
     return CField.set_value(self, obj, wrapper)
示例#5
0
 def __init__(self, idx, subfield, default=[], length=0, **kwargs):
     CField.__init__(self, idx, default, **dict(kwargs, length=length) )
     self.__subfield = subfield
示例#6
0
 def __init__(self, idx, struct, default=None, **kwargs):
     CField.__init__(self, idx, default, **kwargs)
     self._struct_klass = struct
示例#7
0
 def _retrieve_value(self, opts):
     (v, offset) = CField._retrieve_value(self, opts)
     return (v[0], offset)
示例#8
0
 def pack(self, obj, offset, **opts):
     value = getattr(obj, self.name)
     return CField.pack(self, obj, offset, length=len(value), **opts)
示例#9
0
 def __init__(self, idx, default='', length=0, **kwargs):
     CField.__init__(self, idx, default, **dict(kwargs, length=length))
示例#10
0
 def set_value(self, obj, value):
     if not isinstance(value, str) or value[-1] != '\0':
         raise ValueError("NullStringField value must a string with last character == '\\0'.")
     
     return CField.set_value(self, obj, value)
示例#11
0
 def _retrieve_value(self, opts):
     (v, offset) = CField._retrieve_value(self, opts)
     return (v[0], offset)
示例#12
0
 def pack(self, obj, offset, **opts):
     value = getattr(obj, self.name)
     return CField.pack(self, obj, offset, length=len(value), **opts)
示例#13
0
 def __init__(self, idx, default='', length=0, **kwargs):
     CField.__init__(self, idx, default, **dict(kwargs, length=length) )
示例#14
0
 def set_value(self, obj, value):
     wrapper = ListItemWrapper(value)
     wrapper._set_action = self.item_set_value
     wrapper._get_action = self.item_get_value
     return CField.set_value(self, obj, wrapper)
示例#15
0
 def __init__(self, idx, subfield, default=[], length=0, **kwargs):
     CField.__init__(self, idx, default, **dict(kwargs, length=length))
     self.__subfield = subfield
示例#16
0
 def __init__(self, idx, struct, default=None, **kwargs):
     CField.__init__(self, idx, default, **kwargs)
     self._struct_klass = struct