Browse Source

ig-c99: refactor and update enums

main
heck 2 years ago
parent
commit
e6cc313d28
  1. 45
      lm-c99/ig-c99.ysl2

45
lm-c99/ig-c99.ysl2

@ -91,9 +91,7 @@ tstylesheet {
// -------- // --------
``apply "deftype", 0 ``apply "deftype", 0
// Enums ``call "enums"
// -----
``apply "enum", 0
// Structs // Structs
// ------- // -------
@ -181,10 +179,25 @@ tstylesheet {
result "yml:ucase(concat($pkg_name, '_', $name))"; result "yml:ucase(concat($pkg_name, '_', $name))";
} }
function "enums" {
||
// Enums
// -----
``apply "enum"
||
}
template "enum" { template "enum" {
const "idl_name", "@name"; call "enum"
const "pkg_name", "../../@name"; with "idl_enum_name", "@name",
const "enum_name", "func:idltype_to_ctype_enum($pkg_name, $idl_name)"; with "idl_pkg_name", "../../@name";
}
function "enum" {
param "idl_enum_name";
param "idl_pkg_name";
const "enum_name", "func:idltype_to_ctype_enum($idl_pkg_name, $idl_enum_name)";
|| ||
typedef enum _«$enum_name» { typedef enum _«$enum_name» {
``apply "item" with "enum_name", "$enum_name" ``apply "item" with "enum_name", "$enum_name"
@ -195,19 +208,25 @@ tstylesheet {
template "item" { template "item" {
param "enum_name"; param "enum_name";
const "item_name_idl", "@name"; const "idl_item_name", "@name";
const "item_name", "yml:ucase(concat($enum_name, '_', $item_name_idl))"; const "c99_item_name", "yml:ucase(concat($enum_name, '_', $idl_item_name))";
const "idl_value", "text()";
const "c99_value", "func:enum_item_value($idl_value)";
apply "@doc", 0, mode="multiline"; apply "@doc", 0, mode="multiline";
| «$c99_item_name»«$c99_value»«func:autocomma()»`apply "@doc" , 0, mode="oneline"`
}
def "func:enum_item_value" {
param "idl_value";
choose { choose {
when "@output='hex'" when "string-length($idl_value) > 0"
| «$item_name»`if "text()" { " = 0x" value "yml:dec2hex(., 2)" }`«func:autocomma()»`apply "@doc" , 0, mode="oneline"` result > = «$idl_value»
otherwise otherwise
| «$item_name»`if "text()" { " = " value "." }``apply "@doc" , 0, mode="oneline"` result >
} }
}
}
// STRUCT // STRUCT
// ------ // ------

Loading…
Cancel
Save