Beispiel #1
0
def print_frame_class(m):
    print "class %s(Frame):" % (m.frame, )
    print "    __slots__ = %r" % (tuple(str(f.n) for f in m.arguments), )
    print "    name = '%s'" % (m.klass.name + '.' + m.name)
    print "    METHOD_ID = 0x%08X  # %i,%i %i" % (m.method_id, m.klass.index,
                                                  m.index, m.method_id)
    if m.hasContent:
        print "    has_content = True"
        print "    class_id = %s" % (m.klass.u, )
    else:
        print "    has_content = False"
    print

    #    print "    def __init__(self, %s):" % (', '.join(_default_params(m)),)
    #    print "        super(%s, self).__init__(%s)" % (m.frame, ', '.join(tuple(f.n for f in m.arguments)))
    #    print
    print "    @staticmethod"
    print "    def decode(buffer):"

    fields = codegen_helpers.UnpackWrapper()
    for i, f in enumerate(m.arguments):
        fields.add(f.n, f.t)

    fields.do_print(' ' * 8, "%s")
    print "        return %s(%s)" % (m.frame, ', '.join(
        [f.n for f in m.arguments]))
    print
    print_encode_method(m)
    print
Beispiel #2
0
def print_decode_properties(c):
    print "def %s(data, offset):" % (c.decode, )
    print "    props = {}"
    print "    flags, = struct.unpack_from('!H', data, offset)"
    print "    offset += 2"
    print "    assert (flags & 0x01) == 0"
    for i, f in enumerate(c.fields):
        print "    if (flags & 0x%04x): # 1 << %i" % (1 << (15 - i), 15 - i)
        fields = codegen_helpers.UnpackWrapper()
        fields.add(f.n, f.t)
        fields.do_print(" " * 8, "props['%s']")
    print "    return props, offset"
    print
Beispiel #3
0
def print_decode_properties(c):
    print "def %s(buffer):" % (c.decode, )
    print "    props = {}"
    print "    flags, = buffer.read('!H')"
    print "    assert (flags & 0x01) == 0"
    for i, f in enumerate(c.fields):
        print "    if (flags & 0x%04x): # 1 << %i" % (1 << (15 - i), 15 - i)
        fields = codegen_helpers.UnpackWrapper()
        fields.add(f.n, f.t)
        fields.do_print(" " * 8, "props['%s']")
    print "    hs = props.pop('headers', {})"
    print "    hs.update(props)"
    print "    return hs"
    #    print "    return props"
    print
Beispiel #4
0
def print_decode_method(m):
    print "class %s(Frame):" % (m.frame, )
    print "    name = '%s'" % (pyize(m.klass.name + '.' + m.name), )
    print "    method_id = %s" % (pyize('method', m.klass.name,
                                        m.name).upper(), )
    if m.hasContent:
        print "    has_content = True"
        print "    class_id = %s" % (m.klass.u, )
    print ""

    print "def %s(data, offset):" % (m.decode, )
    print "    frame = %s()" % (m.frame, )

    fields = codegen_helpers.UnpackWrapper()
    for i, f in enumerate(m.arguments):
        fields.add(f.n, f.t)

    fields.do_print(' ' * 4, "frame['%s']")
    print "    return frame, offset"
    print