Expression::Ptr XSLT20CoreFunctions::retrieveExpression(const QXmlName lname, const Expression::List &args, const FunctionSignature::Ptr &sign) const { Q_ASSERT(sign); Expression::Ptr fn; #define testXSLTFN(ln, cname) else if(lname.localName() == StandardLocalNames::ln) fn = Expression::Ptr(new cname()) if(false) /* Dummy for the macro handling. Will be optimized away anyway. */ return Expression::Ptr(); /* Alphabetic order. */ testXSLTFN(current, CurrentFN); testXSLTFN(document, DocumentFN); testXSLTFN(element_available, ElementAvailableFN); testXSLTFN(function_available, FunctionAvailableFN); testXSLTFN(generate_id, GenerateIDFN); testXSLTFN(system_property, SystemPropertyFN); testXSLTFN(type_available, TypeAvailableFN); testXSLTFN(unparsed_entity_public_id, UnparsedEntityPublicIDFN); testXSLTFN(unparsed_entity_uri, UnparsedEntityURIFN); testXSLTFN(unparsed_text_available, UnparsedTextAvailableFN); testXSLTFN(unparsed_text, UnparsedTextFN); #undef testXSLTFN Q_ASSERT(fn); fn->setOperands(args); fn->as<FunctionCall>()->setSignature(sign); return fn; }
Expression::Ptr XPath10CoreFunctions::retrieveExpression(const QXmlName name, const Expression::List &args, const FunctionSignature::Ptr &sign) const { Q_ASSERT(sign); /* if(name.namespaceURI() == StandardNamespaces::fn) return Expression::Ptr(); */ Expression::Ptr fn; #define testFN(ln, cname) else if(name.localName() == StandardLocalNames::ln) fn = Expression::Ptr(new cname()) if(false) /* Dummy for the macro handling. Will be optimized away anyway. */ return Expression::Ptr(); /* Alphabetic order. */ testFN(boolean, BooleanFN); testFN(ceiling, CeilingFN); testFN(concat, ConcatFN); testFN(contains, ContainsFN); testFN(count, CountFN); testFN(False, FalseFN); testFN(floor, FloorFN); testFN(id, IdFN); testFN(lang, LangFN); testFN(last, LastFN); testFN(local_name, LocalNameFN); testFN(name, NameFN); testFN(namespace_uri, NamespaceURIFN); testFN(normalize_space, NormalizeSpaceFN); testFN(Not, NotFN); testFN(number, NumberFN); testFN(position, PositionFN); testFN(round, RoundFN); testFN(starts_with, StartsWithFN); testFN(string, StringFN); testFN(string_length, StringLengthFN); testFN(substring, SubstringFN); testFN(substring_after, SubstringAfterFN); testFN(substring_before, SubstringBeforeFN); testFN(sum, SumFN); testFN(translate, TranslateFN); testFN(True, TrueFN); #undef testFN Q_ASSERT(fn); fn->setOperands(args); fn->as<FunctionCall>()->setSignature(sign); return fn; }
Expression::Ptr XSLT10CoreFunctions::retrieveExpression(const QXmlName lname, const Expression::List &args, const FunctionSignature::Ptr &sign) const { Q_ASSERT(sign); Expression::Ptr fn; #define testXSLTFN(ln, cname) else if(lname.localName() == StandardLocalNames::ln) fn = Expression::Ptr(new cname()) if(false) /* Dummy for the macro handling. Will be optimized away anyway. */ return Expression::Ptr(); /* Alphabetic order. */ testXSLTFN(function_available, FunctionAvailableFN); testXSLTFN(system_property, SystemPropertyFN); #undef testXSLTFN Q_ASSERT(fn); fn->setOperands(args); fn->as<FunctionCall>()->setSignature(sign); return fn; }