コード例 #1
0
        class Bar(Buffer):
            def _do_something(self):
                assert self.f_bar_j == 5
                self.f_bar_i = 10
                return self.f_bar_i

            f_bar_i = int_field(where=bytes_ref[0:4],
                                set_before_pack=_do_something)
            f_bar_j = int_field(where=bytes_ref[4:8])
コード例 #2
0
        class Foo(Buffer):
            f_int = int_field(where=bytes_ref[0:4])
            f_str = str_field(where=bytes_ref[4:])

            def __init__(self, f_int, f_str):
                self.f_int = f_int
                self.f_str = f_str
コード例 #3
0
 class Foo(Buffer):
     f_int = int_field(
         sign='unsigned',
         where=(bytes_ref[7].bits[0:4] + bytes_ref[6].bits[0:4] +
                bytes_ref[5].bits[0:4] + bytes_ref[4].bits[0:4] +
                bytes_ref[3].bits[0:4] + bytes_ref[2].bits[0:4] +
                bytes_ref[1].bits[0:4] + bytes_ref[0].bits[0:4]))
コード例 #4
0
        class Bar(Buffer):
            f_a = int_field(where=bytes_ref[0:4])

            def __init__(self, f_a=0):
                self.f_a = f_a

            def __eq__(self, other):
                return self.f_a == other.f_a
コード例 #5
0
        class Foo(Buffer):
            f_str_len = int_field(where=bytes_ref[0:4],
                                  set_before_pack=lambda self: len(self.f_str))
            f_str = str_field(where=bytes_ref[4:4 + f_str_len])

            def __init__(self, f_str):
                self.f_str_len = 0
                self.f_str = f_str
コード例 #6
0
        class Foo(Buffer):
            def _choose_bar(self, buffer, **kwargs):
                return Bar if self.f_select == 0 else Bar2

            f_select = int_field(where=bytes_ref[0:4])
            f_list = list_field(where=bytes_ref[4:],
                                type=Bar,
                                unpack_selector=_choose_bar,
                                unpack_after=f_select)
コード例 #7
0
        class Bar2(Bar):
            f_b = int_field(where=bytes_ref[4:8])

            def __init__(self, f_a=0, f_b=0):
                super(Bar2, self).__init__(f_a)
                self.f_b = f_b

            def __eq__(self, other):
                return self.f_a == other.f_a and self.f_b == other.f_b
コード例 #8
0
 class CoolingElementInfo(Buffer):
     byte_size = 3
     # for real fan speed the fan speed value should be multiplied by a factor of 10
     fan_speed = int_field(where=(bytes_ref[0].bits[0:3] +
                                  bytes_ref[1]))
     ident = be_int_field(where=bytes_ref[0].bits[7])
     speed_code = be_int_field(where=bytes_ref[2].bits[0:3])
     off = be_int_field(where=bytes_ref[2].bits[4])
     reqstd_on = be_int_field(where=bytes_ref[2].bits[5])
     fail = be_int_field(where=bytes_ref[2].bits[6])
     hot_swap = be_int_field(where=bytes_ref[2].bits[7])
コード例 #9
0
 class Foo(Buffer):
     f_a = int_field(where=bytes_ref[0:4])
コード例 #10
0
 class Foo2(Buffer):
     f_int = int_field(where=(bytes_ref[1].bits[0:4] + bytes_ref[0]))
コード例 #11
0
 class Foo(Buffer):
     f_int = int_field(where=bytes_ref[0:4],
                       set_before_pack=len_ref(self_ref.f_str) * 2)
     f_str = str_field(where=bytes_ref[4:4 + f_int // 2])
コード例 #12
0
 class Foo(Buffer):
     f_int = int_field(where=bytes_ref[0:4],
                       set_before_pack=total_size)
     f_str = str_field(where=bytes_ref[4:f_int])
コード例 #13
0
 class Foo(Buffer):
     f_foo_i = int_field(where=bytes_ref[0:4])
     f_bar = buffer_field(where=bytes_ref[4:4 + Bar.byte_size],
                          type=Bar)
コード例 #14
0
 class Bar(Buffer):
     f_bar_i = int_field(where=bytes_ref[0:4])
     f_bar_j = int_field(where=bytes_ref[4:8])
コード例 #15
0
 class Foo(Buffer):
     f_a = int_field(where=bytes_ref[0:4], default=42)
コード例 #16
0
 class Foo(Buffer):
     f_int = int_field(where=bytes_ref[0:4],
                       set_before_pack=total_size - 4)
     f_str = str_field(where_when_pack=bytes_ref[4:],
                       where_when_unpack=bytes_ref[4:4 + f_int])
コード例 #17
0
 class Foo(Buffer):
     f_a = int_field(where=bytes_ref[0].bits[0:4])
     f_b = int_field(where=bytes_ref[0].bits[4:8])
コード例 #18
0
 class Bar2(Bar):
     f_b = int_field(where=bytes_ref[4:8])
コード例 #19
0
 class Foo(Buffer):
     f_int = int_field(
         sign='unsigned',
         where=(bytes_ref[0:2].bits[4:12] + bytes_ref[2:4].bits[4:12] +
                bytes_ref[4:6].bits[4:12] + bytes_ref[6:8].bits[4:12]))