def write_channel_enums(writer, channel, client): messages = filter(lambda m : m.channel == channel, \ channel.client_messages if client else channel.server_messages) if len(messages) == 0: return writer.begin_block("enum") i = 0; if client: prefix = [ "MSGC" ] else: prefix = [ "MSG" ] if channel.member_name: prefix.append(channel.member_name.upper()) prefix.append(None) # To be replaced with name for m in messages: prefix[-1] = m.name.upper() enum = codegen.prefix_underscore_upper(*prefix) if m.value == i: writer.writeln("%s," % enum) i = i + 1 else: writer.writeln("%s = %s," % (enum, m.value)) i = m.value + 1 if channel.member_name: prefix[-1] = prefix[-2] prefix[-2] = "END" writer.newline() writer.writeln("%s" % (codegen.prefix_underscore_upper(*prefix))) writer.end_block(semicolon=True) writer.newline()
def write_channel_enums(writer, channel, client): messages = filter(lambda m : m.channel == channel, \ channel.client_messages if client else channel.server_messages) if len(messages) == 0: return writer.begin_block("enum") i = 0 if client: prefix = ["MSGC"] else: prefix = ["MSG"] if channel.member_name: prefix.append(channel.member_name.upper()) prefix.append(None) # To be replaced with name for m in messages: prefix[-1] = m.name.upper() enum = codegen.prefix_underscore_upper(*prefix) if m.value == i: writer.writeln("%s," % enum) i = i + 1 else: writer.writeln("%s = %s," % (enum, m.value)) i = m.value + 1 if channel.member_name: prefix[-1] = prefix[-2] prefix[-2] = "END" writer.newline() writer.writeln("%s" % (codegen.prefix_underscore_upper(*prefix))) writer.end_block(semicolon=True) writer.newline()
def write_enums(writer): writer.writeln("#ifndef _H_SPICE_ENUMS") writer.writeln("#define _H_SPICE_ENUMS") writer.newline() writer.comment("Generated from %s, don't edit" % writer.options["source"]).newline() writer.newline() # Define enums for t in ptypes.get_named_types(): if isinstance(t, ptypes.EnumBaseType): t.c_define(writer) i = 0; writer.begin_block("enum") for c in proto.channels: enum = codegen.prefix_underscore_upper("CHANNEL", c.name.upper()) if c.value == i: writer.writeln("%s," % enum) i = i + 1 else: writer.writeln("%s = %s," % (enum, c.value)) i = c.value + 1 writer.newline() writer.writeln("SPICE_END_CHANNEL") writer.end_block(semicolon=True) writer.newline() for c in ptypes.get_named_types(): if not isinstance(c, ptypes.ChannelType): continue write_channel_enums(writer, c, False) write_channel_enums(writer, c, True) writer.writeln("#endif /* _H_SPICE_ENUMS */")
def write_enums(writer): writer.writeln("#ifndef _H_SPICE_ENUMS") writer.writeln("#define _H_SPICE_ENUMS") writer.newline() writer.comment("Generated from %s, don't edit" % writer.options["source"]).newline() writer.newline() # Define enums for t in ptypes.get_named_types(): if isinstance(t, ptypes.EnumBaseType): t.c_define(writer) i = 0 writer.begin_block("enum") for c in proto.channels: enum = codegen.prefix_underscore_upper("CHANNEL", c.name.upper()) if c.value == i: writer.writeln("%s," % enum) i = i + 1 else: writer.writeln("%s = %s," % (enum, c.value)) i = c.value + 1 writer.newline() writer.writeln("SPICE_END_CHANNEL") writer.end_block(semicolon=True) writer.newline() for c in ptypes.get_named_types(): if not isinstance(c, ptypes.ChannelType): continue write_channel_enums(writer, c, False) write_channel_enums(writer, c, True) writer.writeln("#endif /* _H_SPICE_ENUMS */")
def write_channel_enums(writer, channel, client, describe): messages = filter(lambda m : m.channel == channel, \ channel.client_messages if client else channel.server_messages) if len(messages) == 0: return if client: prefix = ["MSGC"] else: prefix = ["MSG"] if channel.member_name: prefix.append(channel.member_name.upper()) if not describe: writer.begin_block("enum") else: writer.begin_block( "static const value_string %s_vs[] = " % (codegen.prefix_underscore_lower(*[x.lower() for x in prefix]))) i = 0 prefix.append(None) # To be replaced with name for m in messages: prefix[-1] = m.name.upper() enum = codegen.prefix_underscore_upper(*prefix) if describe: writer.writeln( "{ %s, \"%s %s\" }," % (enum, "Client" if client else "Server", m.name.upper())) else: if m.value == i: writer.writeln("%s," % enum) i = i + 1 else: writer.writeln("%s = %s," % (enum, m.value)) i = m.value + 1 if describe: writer.writeln("{ 0, NULL }") else: if channel.member_name: prefix[-1] = prefix[-2] prefix[-2] = "END" writer.newline() writer.writeln("%s" % (codegen.prefix_underscore_upper(*prefix))) writer.end_block(semicolon=True) writer.newline()
def write_channel_enums(writer, channel, client, describe): messages = filter(lambda m : m.channel == channel, \ channel.client_messages if client else channel.server_messages) if len(messages) == 0: return if client: prefix = [ "MSGC" ] else: prefix = [ "MSG" ] if channel.member_name: prefix.append(channel.member_name.upper()) if not describe: writer.begin_block("enum") else: writer.begin_block("static const value_string %s_vs[] = " % (codegen.prefix_underscore_lower(*[x.lower() for x in prefix]))) i = 0 prefix.append(None) # To be replaced with name for m in messages: prefix[-1] = m.name.upper() enum = codegen.prefix_underscore_upper(*prefix) if describe: writer.writeln("{ %s, \"%s %s\" }," % (enum, "Client" if client else "Server", m.name.upper())) else: if m.value == i: writer.writeln("%s," % enum) i = i + 1 else: writer.writeln("%s = %s," % (enum, m.value)) i = m.value + 1 if describe: writer.writeln("{ 0, NULL }"); else: if channel.member_name: prefix[-1] = prefix[-2] prefix[-2] = "END" writer.newline() writer.writeln("%s" % (codegen.prefix_underscore_upper(*prefix))) writer.end_block(semicolon=True) writer.newline()
def write_channel_type_enum(writer, describe=False): i = 0 if describe: writer.begin_block("static const value_string channel_types_vs[] =") else: writer.begin_block("enum") for c in proto.channels: enum = codegen.prefix_underscore_upper("CHANNEL", c.name.upper()) if describe: writer.writeln("{ %s, \"%s\" }," % (enum, c.name.upper())) else: if c.value == i: writer.writeln("%s," % enum) i = i + 1 else: writer.writeln("%s = %s," % (enum, c.value)) i = c.value + 1 writer.newline() if describe: writer.writeln("{ 0, NULL }") else: writer.writeln("SPICE_END_CHANNEL") writer.end_block(semicolon=True) writer.newline()