raiguard/odin-wayland
git clone https://git.raiguard.me/raiguard/odin-wayland
f425641
trunk
1package codegen 2 3import "core:math/fixed" 4 5Enum_Value :: int 6Version :: int 7 8Fixed :: fixed . Fixed ( i32 , 8 ) 9 10Copyright :: string 11 12Protocol :: struct { 13file_name : string , 14// Attributes 15name : string , 16// Body 17copyright : Copyright , 18description : Description , 19interfaces : [ dynamic ] Interface , 20} 21 22Description :: struct { 23// Attributes 24summary : string , 25// Body 26body : string , 27} 28 29Interface :: struct { 30// Attributes 31name : string , 32version : Version , 33frozen : bool , 34// Body 35description : Description , 36requests : [ dynamic ] Message , 37events : [ dynamic ] Message , 38enums : [ dynamic ] Enum , 39} 40 41Message :: struct { 42// Attributes 43name : string , 44destructor : bool , 45since : Version , 46deprecated_since : Version , 47// Body 48description : Description , 49args : [ dynamic ] Arg , 50} 51 52Arg :: struct { 53// Attributes 54name : string , 55type : Arg_Type , 56summary : string , 57interface : string , 58allow_null : bool , 59enum_ : Arg_Enum , 60// Body 61description : Description , 62} 63 64Arg_Type :: enum { 65Int , 66Uint , 67Fixed , 68String , 69Array , 70FD , 71New_ID , 72Object , 73} 74 75Arg_Enum :: union { 76string , 77Arg_Ext_Enum , 78} 79 80Arg_Ext_Enum :: struct { 81interface , suffix : string 82} 83 84Enum :: struct { 85// Attributes 86name : string , 87since : Version , 88bitfield : bool , 89// Body 90description : Description , 91entries : [ dynamic ] Enum_Entry , 92} 93 94Enum_Entry :: struct { 95// Attributes 96name : string , 97value : Enum_Value , // TODO: Consider whether to auto-detect the kind of formatting and carry it over into the code. 98summary : string , 99since : Version , 100deprecated_since : Version , 101// Body 102description : Description 103}