예제 #1
0
파일: text.py 프로젝트: lqc/pystruct
 def _before_unpack(self, opts):
     CField._before_unpack(self, opts)
     try:
         opts['length'] = opts['data'].index('\0', opts['offset']) - opts['offset'] + 1
         if "max_length" in opts:
             opts['length'] = min(opts['max_length'], opts['length'])
     except ValueError:
         raise UnpackException("Unterminated null string occured.")
예제 #2
0
 def __init__(self, idx, default=0, **kwargs):
     CField.__init__(self, idx, default, **kwargs)
     self.add_constraint(const.ValueTypeConstraint(numbers.Integral))
     self.__ctype = kwargs.get("ctype", "int")
예제 #3
0
파일: text.py 프로젝트: lqc/pystruct
    def set_value(self, obj, value):
        if not isinstance(value, bytes) or value[-1] != b'\0':
            raise ValueError("NullStringField value must a string with last character == '\\0'.")

        return CField.set_value(self, obj, value)
예제 #4
0
파일: text.py 프로젝트: lqc/pystruct
 def _retrieve_value(self, opts):
     (v, offset) = CField._retrieve_value(self, opts)
     return (v[0], offset)
예제 #5
0
파일: text.py 프로젝트: lqc/pystruct
 def pack(self, obj, offset, **opts):
     value = getattr(obj, self.name)
     return CField.pack(self, obj, offset, length=len(value), **opts)
예제 #6
0
파일: text.py 프로젝트: lqc/pystruct
 def __init__(self, idx, default='', length=0, **kwargs):
     CField.__init__(self, idx, default, **dict(kwargs, length=length))
예제 #7
0
파일: complex.py 프로젝트: lqc/pystruct
 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)
예제 #8
0
파일: complex.py 프로젝트: lqc/pystruct
 def __init__(self, idx, subfield, default=[], length=0, **kwargs):
     CField.__init__(self, idx, default, **dict(kwargs, length=length))
     self.__subfield = subfield
예제 #9
0
파일: complex.py 프로젝트: lqc/pystruct
 def __init__(self, idx, struct, default=None, **kwargs):
     CField.__init__(self, idx, default, **kwargs)
     self._struct_klass = struct