diff --git a/extensions/transformiix/source/xslt/functions/GenerateIdFunctionCall.cpp b/extensions/transformiix/source/xslt/functions/GenerateIdFunctionCall.cpp new file mode 100644 index 000000000000..bc7a9d8e443d --- /dev/null +++ b/extensions/transformiix/source/xslt/functions/GenerateIdFunctionCall.cpp @@ -0,0 +1,62 @@ +/* + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is XSL:P XSLT processor. + * + * The Initial Developer of the Original Code is Keith Visco. + * Portions created by Keith Visco (C) 1999, 2000 Keith Visco. + * All Rights Reserved. + * + * Contributor(s): + * + * Keith Visco, kvisco@ziplink.net + * -- original author. + * + * $Id: GenerateIdFunctionCall.cpp,v 1.1 2000/04/19 10:39:27 kvisco%ziplink.net Exp $ + */ + +#include "XSLTFunctions.h" + +/* + Implementation of XSLT 1.0 extension function: generate-id +*/ + +/** + * Creates a new generate-id function call +**/ +GenerateIdFunctionCall::GenerateIdFunctionCall(DOMHelper* domHelper) : FunctionCall(GENERATE_ID_FN) +{ + this->domHelper = domHelper; +} //-- GenerateIdFunctionCall + +/** + * Evaluates this Expr based on the given context node and processor state + * @param context the context node for evaluation of this Expr + * @param ps the ContextState containing the stack information needed + * for evaluation + * @return the result of the evaluation + * @see FunctionCall.h +**/ +ExprResult* GenerateIdFunctionCall::evaluate(Node* context, ContextState* cs) { + + Node* node = context; + + String id; + + int argc = params.getLength(); + + + domHelper->generateId(node, id); + + return new StringResult(id); + +} //-- evaluate + diff --git a/extensions/transformiix/source/xslt/functions/Makefile b/extensions/transformiix/source/xslt/functions/Makefile new file mode 100644 index 000000000000..2805f288d556 --- /dev/null +++ b/extensions/transformiix/source/xslt/functions/Makefile @@ -0,0 +1,35 @@ + + +ROOT = ../.. +BASE = $(ROOT)/base +XPATH = $(ROOT)/xpath +XML = $(ROOT)/xml +XML_UTIL = $(XML)/util +DOM = $(XML)/dom +XSLT = $(ROOT)/xslt + +ALL_OBJS = \ + GenerateIdFunctionCall.o + +INCLUDE_PATH = -I. \ + -I$(BASE) \ + -I$(XPATH) \ + -I$(XML) \ + -I$(XML_UTIL) \ + -I$(DOM) \ + -I$(XSLT) \ + -I$(XSLT)/util + +target: $(ALL_OBJS) + +GenerateIdFunctionCall.o: XSLTFunctions.h GenerateIdFunctionCall.cpp + $(CC) $(INCLUDE_PATH) -c GenerateIdFunctionCall.cpp + + + + + + + + + diff --git a/extensions/transformiix/source/xslt/functions/XSLTFunctions.h b/extensions/transformiix/source/xslt/functions/XSLTFunctions.h new file mode 100644 index 000000000000..97a44253a29c --- /dev/null +++ b/extensions/transformiix/source/xslt/functions/XSLTFunctions.h @@ -0,0 +1,59 @@ +/* + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is XSL:P XSLT processor. + * + * The Initial Developer of the Original Code is Keith Visco. + * Portions created by Keith Visco (C) 1999, 2000 Keith Visco. + * All Rights Reserved. + * + * Contributor(s): + * + * Keith Visco, kvisco@ziplink.net + * -- original author. + * + * $Id: XSLTFunctions.h,v 1.1 2000/04/19 10:40:06 kvisco%ziplink.net Exp $ + */ + +#include "dom.h" +#include "Expr.h" +#include "ExprResult.h" +#include "Names.h" +#include "DOMHelper.h" +#include "TxString.h" + +#ifndef TRANSFRMX_XSLT_FUNCTIONS_H +#define TRANSFRMX_XSLT_FUNCTIONS_H + +class GenerateIdFunctionCall : public FunctionCall { + +public: + + /** + * Creates a new generate-id function call + **/ + GenerateIdFunctionCall(DOMHelper* domHelper); + + /** + * Evaluates this Expr based on the given context node and processor state + * @param context the context node for evaluation of this Expr + * @param ps the ContextState containing the stack information needed + * for evaluation + * @return the result of the evaluation + * @see FunctionCall.h + **/ + virtual ExprResult* evaluate(Node* context, ContextState* cs); + +private: + DOMHelper* domHelper; +}; + + #endif \ No newline at end of file