blob: 6e310b34f5cf66298d9378425317eb7dc0d4f2eb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2009 Andrea Bittau, University College London, and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Andrea Bittau - initial API and implementation from the PsychoPath XPath 2.0
* David Carver (STAR) - bug 262765 - Added FnDefaultCollation.
* David Carver (STAR) - bug 285321 - implemented fn:encode-for-uri()
* Jesper Moller - bug 287369 - Support fn:codepoint-equal()
*******************************************************************************/
package org.eclipse.wst.xml.xpath2.processor.function;
import org.eclipse.wst.xml.xpath2.processor.internal.function.*;
// this is the equivalent of libc =D
/**
* Maintains a library of core functions and user defined functions.
*/
public class FnFunctionLibrary extends FunctionLibrary {
/**
* Path to xpath functions specification.
*/
public static final String XPATH_FUNCTIONS_NS = "http://www.w3.org/2005/xpath-functions";
/**
* Constructor for FnFunctionLibrary.
*/
public FnFunctionLibrary() {
super(XPATH_FUNCTIONS_NS);
// add functions here
add_function(new FnBoolean());
add_function(new FnRoot());
add_function(new FnNot());
// accessors
add_function(new FnNodeName());
add_function(new FnNilled());
add_function(new FnData());
add_function(new FnString());
add_function(new FnBaseUri());
add_function(new FnStaticBaseUri());
add_function(new FnDocumentUri());
// error
add_function(new FnError());
// trace
add_function(new FnTrace());
// numeric functions
add_function(new FnAbs());
add_function(new FnCeiling());
add_function(new FnFloor());
add_function(new FnRound());
add_function(new FnRoundHalfToEven());
// string functions
add_function(new FnCodepointsToString());
add_function(new FnStringToCodepoints());
add_function(new FnCompare());
add_function(new FnCodepointEqual());
add_function(new FnConcat());
add_function(new FnStringJoin());
add_function(new FnSubstring());
add_function(new FnStringLength());
add_function(new FnNormalizeSpace());
add_function(new FnNormalizeUnicode());
add_function(new FnUpperCase());
add_function(new FnLowerCase());
add_function(new FnTranslate());
add_function(new FnEscapeHTMLUri());
add_function(new FnIriToURI());
add_function(new FnContains());
add_function(new FnStartsWith());
add_function(new FnEndsWith());
add_function(new FnSubstringBefore());
add_function(new FnSubstringAfter());
add_function(new FnMatches());
add_function(new FnReplace());
add_function(new FnTokenize());
add_function(new FnEncodeForURI());
add_function(new FnResolveURI());
// boolean functions
add_function(new FnTrue());
add_function(new FnFalse());
// date extraction functions
add_function(new FnYearsFromDuration());
add_function(new FnMonthsFromDuration());
add_function(new FnDaysFromDuration());
add_function(new FnHoursFromDuration());
add_function(new FnMinutesFromDuration());
add_function(new FnSecondsFromDuration());
add_function(new FnYearFromDateTime());
add_function(new FnMonthFromDateTime());
add_function(new FnDayFromDateTime());
add_function(new FnHoursFromDateTime());
add_function(new FnMinutesFromDateTime());
add_function(new FnSecondsFromDateTime());
add_function(new FnTimezoneFromDateTime());
add_function(new FnYearFromDate());
add_function(new FnMonthFromDate());
add_function(new FnDayFromDate());
add_function(new FnTimezoneFromDate());
add_function(new FnHoursFromTime());
add_function(new FnMinutesFromTime());
add_function(new FnSecondsFromTime());
add_function(new FnTimezoneFromTime());
add_function(new FnDateTime());
// timezone functs
add_function(new FnImplicitTimezone());
add_function(new FnAdjustDateTimeToTimeZone());
add_function(new FnAdjustTimeToTimeZone());
add_function(new FnAdjustDateToTimeZone());
// QName functs
add_function(new FnResolveQName());
add_function(new FnQName());
add_function(new FnLocalNameFromQName());
add_function(new FnNamespaceUriFromQName());
add_function(new FnPrefixFromQName());
// XXX implement hex & binary & notations
// node functions
add_function(new FnName());
add_function(new FnLocalName());
add_function(new FnNamespaceUri());
add_function(new FnNumber());
add_function(new FnInScopePrefixes());
// node functs
add_function(new FnLang());
// sequence functions
add_function(new FnIndexOf());
add_function(new FnEmpty());
add_function(new FnExists());
add_function(new FnDistinctValues());
add_function(new FnInsertBefore());
add_function(new FnRemove());
add_function(new FnReverse());
add_function(new FnSubsequence());
add_function(new FnUnordered());
// sequence caridnality
add_function(new FnZeroOrOne());
add_function(new FnOneOrMore());
add_function(new FnExactlyOne());
add_function(new FnDeepEqual());
// aggregate functions
add_function(new FnCount());
add_function(new FnAvg());
add_function(new FnMax());
add_function(new FnMin());
add_function(new FnSum());
// XXX implement functions that generate sequences
add_function(new FnDoc());
add_function(new FnCollection());
// context functions
add_function(new FnPosition());
add_function(new FnLast());
add_function(new FnCurrentDateTime());
add_function(new FnCurrentDate());
add_function(new FnCurrentTime());
// XXX collation
add_function(new FnDefaultCollation());
// ID and IDRef
add_function(new FnID());
add_function(new FnIDREF());
}
}