
2 changed files with 125 additions and 113 deletions
@ -0,0 +1,121 @@ |
|||||
|
// ---------------------------------------------------------------------- |
||||
|
// stdlib candidates |
||||
|
// ---------------------------------------------------------------------- |
||||
|
def "func:autocomma" { |
||||
|
result if "position()!=last()" > , |
||||
|
} |
||||
|
|
||||
|
def "func:exists" { |
||||
|
param "xpath"; |
||||
|
|
||||
|
choose { |
||||
|
when "$xpath" |
||||
|
result "true()"; |
||||
|
otherwise |
||||
|
result "false()"; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// ---------------------------------------------------------------------- |
||||
|
// idl-api (ysl2) |
||||
|
// ---------------------------------------------------------------------- |
||||
|
|
||||
|
def "func:idl_typekind_is_defined" { |
||||
|
param "typekind"; |
||||
|
result "func:exists(/pEpACIDLang/idl/typekinds//*[name()=$typekind])" |
||||
|
} |
||||
|
|
||||
|
def "func:idl_typekind_is_generic" { |
||||
|
param "typekind"; |
||||
|
result "func:exists(/pEpACIDLang/idl/typekinds/generics/*[name()=$typekind])" |
||||
|
} |
||||
|
|
||||
|
def "func:idl_type_is_of_typekind_basetype" { |
||||
|
param "idltype"; |
||||
|
result "func:exists(/pEpACIDLang/idl/basetypes/*[name()=$idltype])"; |
||||
|
} |
||||
|
|
||||
|
def "func:idl_type_is_of_typekind_deftype" { |
||||
|
param "idltype"; |
||||
|
result "func:exists(//deftype[@name=$idltype])"; |
||||
|
} |
||||
|
|
||||
|
def "func:idl_type_is_of_typekind_enum" { |
||||
|
param "idltype"; |
||||
|
result "func:exists(//enum[@name=$idltype])"; |
||||
|
} |
||||
|
|
||||
|
def "func:idl_type_is_of_typekind_struct" { |
||||
|
param "idltype"; |
||||
|
result "func:exists(//struct[@name=$idltype])"; |
||||
|
} |
||||
|
|
||||
|
def "func:idl_type_is_of_typekind_list" { |
||||
|
param "idltype"; |
||||
|
result "false()"; |
||||
|
} |
||||
|
|
||||
|
def "func:idl_type_is_defined" { |
||||
|
param "idltype"; |
||||
|
choose { |
||||
|
when "func:idl_type_get_typekind_of_type($idltype)" |
||||
|
result "true()"; |
||||
|
otherwise |
||||
|
result "false()"; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
def "func:idl_type_get_typekind_of_type" { |
||||
|
param "idltype"; |
||||
|
choose { |
||||
|
when "func:idl_type_is_of_typekind_basetype($idltype)" |
||||
|
result > basetype |
||||
|
when "func:idl_type_is_of_typekind_deftype($idltype)" |
||||
|
result > deftype |
||||
|
when "func:idl_type_is_of_typekind_enum($idltype)" |
||||
|
result > enum |
||||
|
when "func:idl_type_is_of_typekind_struct($idltype)" |
||||
|
result > struct |
||||
|
when "func:idl_type_is_of_typekind_list($idltype)" |
||||
|
result > list |
||||
|
otherwise |
||||
|
result "false()"; |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
def "func:idl_type_get_resolved_typekind" { |
||||
|
param "idltype"; |
||||
|
const "idltypekind", "func:idl_type_get_typekind_of_type($idltype)"; |
||||
|
|
||||
|
choose { |
||||
|
when "$idltypekind = 'deftype'" |
||||
|
result "func:idl_type_get_typekind_of_type(func:idl_type_get_type_of_deftype($idltype))"; |
||||
|
otherwise |
||||
|
result "$idltypekind"; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
def "func:idl_type_get_resolved_type" { |
||||
|
param "idltype"; |
||||
|
const "idltypekind", "func:idl_type_get_typekind_of_type($idltype)"; |
||||
|
|
||||
|
choose { |
||||
|
when "$idltypekind = 'deftype'" |
||||
|
result "func:idl_type_get_type_of_deftype($idltype)"; |
||||
|
otherwise |
||||
|
result "$idltype"; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
def "func:idl_type_get_type_of_deftype" { |
||||
|
param "idltype"; |
||||
|
choose { |
||||
|
when "func:idl_type_is_of_typekind_deftype($idltype)" |
||||
|
result "//deftype[@name=$idltype]/as/@type"; |
||||
|
otherwise |
||||
|
error > idl_resolve_deftype - is not a deftype: «$idltype»; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
Loading…
Reference in new issue