Пример #1
0
    def read_fields(self, op):
        flags = 0
        for i in range(op.PACK):
            flags |= (self.read_uint8() << 8 * i)

        for i in range(len(op.FIELDS)):
            f = op.FIELDS[i]
            if flags & (0x1 << i):
                if COMPOUND.has_key(f.type):
                    value = self.read_compound(COMPOUND[f.type])
                else:
                    value = getattr(self, "read_%s" % f.type)()
                setattr(op, f.name, value)
Пример #2
0
  def read_fields(self, op):
    flags = 0
    for i in range(op.PACK):
      flags |= (self.read_uint8() << 8*i)

    for i in range(len(op.FIELDS)):
      f = op.FIELDS[i]
      if flags & (0x1 << i):
        if COMPOUND.has_key(f.type):
          value = self.read_compound(COMPOUND[f.type])
        else:
          value = getattr(self, "read_%s" % f.type)()
        setattr(op, f.name, value)
Пример #3
0
 def write_fields(self, op):
     flags = 0
     for i in range(len(op.FIELDS)):
         f = op.FIELDS[i]
         value = getattr(op, f.name)
         if f.type == "bit":
             present = value
         else:
             present = value != None
         if present:
             flags |= (0x1 << i)
     for i in range(op.PACK):
         self.write_uint8((flags >> 8 * i) & 0xFF)
     for i in range(len(op.FIELDS)):
         f = op.FIELDS[i]
         if flags & (0x1 << i):
             if COMPOUND.has_key(f.type):
                 enc = self.write_compound
             else:
                 enc = getattr(self, "write_%s" % f.type)
             value = getattr(op, f.name)
             enc(value)
Пример #4
0
 def write_fields(self, op):
   flags = 0
   for i in range(len(op.FIELDS)):
     f = op.FIELDS[i]
     value = getattr(op, f.name)
     if f.type == "bit":
       present = value
     else:
       present = value != None
     if present:
       flags |= (0x1 << i)
   for i in range(op.PACK):
     self.write_uint8((flags >> 8*i) & 0xFF)
   for i in range(len(op.FIELDS)):
     f = op.FIELDS[i]
     if flags & (0x1 << i):
       if COMPOUND.has_key(f.type):
         enc = self.write_compound
       else:
         enc = getattr(self, "write_%s" % f.type)
       value = getattr(op, f.name)
       enc(value)