def write_enums(writer, describe=False): writer.writeln("#ifndef _H_SPICE_ENUMS") writer.writeln("#define _H_SPICE_ENUMS") writer.newline() # Define enums for t in ptypes.get_named_types(): if isinstance(t, ptypes.EnumBaseType): t.c_define(writer) if describe: t.c_describe(writer) write_channel_type_enum(writer) if (describe): write_channel_type_enum(writer, True) for c in ptypes.get_named_types(): if not isinstance(c, ptypes.ChannelType): continue write_channel_enums(writer, c, False, False) if describe: write_channel_enums(writer, c, False, describe) write_channel_enums(writer, c, True, False) if describe: write_channel_enums(writer, c, True, describe) 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_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 generate_declarations(): writer = codegen.CodeWriter() writer.public_suffix = options.suffix writer.write(license) # all types for t in ptypes.get_named_types(): if isinstance(t, ptypes.StructType): generate_declaration(t, writer) if isinstance(t, ptypes.ChannelType): for m in t.client_messages + t.server_messages: generate_declaration(m.message_type, writer) content = writer.getvalue() write_content(options.generated_declaration_file, content, options.keep_identical_file)