package codegen import "core:math/fixed" Enum_Value :: int Version :: int Fixed :: fixed.Fixed(i32, 8) Copyright :: string Protocol :: struct { file_name: string, // Attributes name: string, // Body copyright: Copyright, description: Description, interfaces: [dynamic]Interface, } Description :: struct { // Attributes summary: string, // Body body: string, } Interface :: struct { // Attributes name: string, version: Version, frozen: bool, // Body description: Description, requests: [dynamic]Message, events: [dynamic]Message, enums: [dynamic]Enum, } Message :: struct { // Attributes name: string, destructor: bool, since: Version, deprecated_since: Version, // Body description: Description, args: [dynamic]Arg, } Arg :: struct { // Attributes name: string, type: Arg_Type, summary: string, interface: string, allow_null: bool, enum_: Arg_Enum, // Body description: Description, } Arg_Type :: enum { Int, Uint, Fixed, String, Array, FD, New_ID, Object, } Arg_Enum :: union { string, Arg_Ext_Enum, } Arg_Ext_Enum :: struct { interface, suffix: string } Enum :: struct { // Attributes name: string, since: Version, bitfield: bool, // Body description: Description, entries: [dynamic]Enum_Entry, } Enum_Entry :: struct { // Attributes name: string, value: Enum_Value, // TODO: Consider whether to auto-detect the kind of formatting and carry it over into the code. summary: string, since: Version, deprecated_since: Version, // Body description: Description }