You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.1 KiB
121 lines
3.1 KiB
// ----------------------------------------------------------------------
|
|
// 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»;
|
|
}
|
|
}
|
|
|
|
|
|
|