// ---------------------------------------------------------------------- // 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»; } }