예제 #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