Back to index

lightning-sunbird  0.9+nobinonly
FunctionLib.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is TransforMiiX XSLT processor code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * The MITRE Corporation.
00019  * Portions created by the Initial Developer are Copyright (C) 1999
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *   Keith Visco <kvisco@ziplink.net> (Original Author)
00024  *
00025  * Alternatively, the contents of this file may be used under the terms of
00026  * either the GNU General Public License Version 2 or later (the "GPL"), or
00027  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00028  * in which case the provisions of the GPL or the LGPL are applicable instead
00029  * of those above. If you wish to allow use of your version of this file only
00030  * under the terms of either the GPL or the LGPL, and not to allow others to
00031  * use your version of this file under the terms of the MPL, indicate your
00032  * decision by deleting the provisions above and replace them with the notice
00033  * and other provisions required by the GPL or the LGPL. If you do not delete
00034  * the provisions above, a recipient may use your version of this file under
00035  * the terms of any one of the MPL, the GPL or the LGPL.
00036  *
00037  * ***** END LICENSE BLOCK ***** */
00038 
00039 #ifndef TRANSFRMX_FUNCTIONLIB_H
00040 #define TRANSFRMX_FUNCTIONLIB_H
00041 
00042 #include "Expr.h"
00043 #include "nsIAtom.h"
00044 
00070 class BooleanFunctionCall : public FunctionCall {
00071 
00072 public:
00073 
00074     enum BooleanFunctions {
00075         TX_BOOLEAN,  // boolean()
00076         TX_FALSE,    // false()
00077         TX_LANG,     // lang()
00078         TX_NOT,      // not()
00079         TX_TRUE      // true()
00080     };
00081 
00085     BooleanFunctionCall(BooleanFunctions aType);
00086 
00087     TX_DECL_FUNCTION;
00088 
00089 private:
00090     BooleanFunctions mType;
00091 }; //-- BooleanFunctionCall
00092 
00093 /*
00094  * A representation of the XPath NodeSet funtions
00095  */
00096 class NodeSetFunctionCall : public FunctionCall {
00097 
00098 public:
00099 
00100     enum NodeSetFunctions {
00101         COUNT,          // count()
00102         ID,             // id()
00103         LAST,           // last()
00104         LOCAL_NAME,     // local-name()
00105         NAMESPACE_URI,  // namespace-uri()
00106         NAME,           // name()
00107         POSITION        // position()
00108     };
00109 
00110     /*
00111      * Creates a NodeSetFunctionCall of the given type
00112      */
00113     NodeSetFunctionCall(NodeSetFunctions aType);
00114 
00115     TX_DECL_FUNCTION;
00116 
00117 private:
00118     NodeSetFunctions mType;
00119 };
00120 
00121 
00125 class StringFunctionCall : public FunctionCall {
00126 
00127 public:
00128 
00129     enum StringFunctions {
00130         CONCAT,            // concat()
00131         CONTAINS,          // contains()
00132         NORMALIZE_SPACE,   // normalize-space()
00133         STARTS_WITH,       // starts-with()
00134         STRING,            // string()
00135         STRING_LENGTH,     // string-length()
00136         SUBSTRING,         // substring()
00137         SUBSTRING_AFTER,   // substring-after()
00138         SUBSTRING_BEFORE,  // substring-before()
00139         TRANSLATE          // translate()
00140     };
00141 
00145     StringFunctionCall(StringFunctions aType);
00146 
00147     TX_DECL_FUNCTION;
00148 
00149 private:
00150     StringFunctions mType;
00151 }; //-- StringFunctionCall
00152 
00153 
00154 /*
00155  * Represents the XPath Number Function Calls
00156  */
00157 class NumberFunctionCall : public FunctionCall {
00158 
00159 public:
00160 
00161     enum NumberFunctions {
00162         NUMBER,   // number()
00163         ROUND,    // round()
00164         FLOOR,    // floor()
00165         CEILING,  // ceiling()
00166         SUM       // sum()
00167     };
00168 
00169     /*
00170      * Creates a Number function of the given type
00171      */
00172     NumberFunctionCall(NumberFunctions aType);
00173 
00174     TX_DECL_FUNCTION;
00175 
00176 private:
00177     NumberFunctions mType;
00178 };
00179 
00180 #endif