00001 /* 00002 * Copyright 2006-2008 The FLWOR Foundation. 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 #ifndef ZORBA_EXTERNAL_FUNCTION_PARAM_API_H 00017 #define ZORBA_EXTERNAL_FUNCTION_PARAM_API_H 00018 00019 namespace zorba { 00020 00021 /** 00022 * Instances of subclasses of this abstract class may 00023 * be used as parameters to the DynamicContext::addExternalFunctionParameter 00024 * function. This is useful in the implementation of 00025 * external modules/functions in order to store information 00026 * between several invocations of the same function. 00027 * 00028 * The destroy method is called by Zorba at the end 00029 * of the execution of an XQuery program, when the corresponding 00030 * DynamicContext is destroyed. 00031 * 00032 */ 00033 class ExternalFunctionParameter 00034 { 00035 public: 00036 /** 00037 * This function is invoked by Zorba when the DynamicContext 00038 * that contains the instance is destroyed. This allows 00039 * the user to release resources. In the simplest case, 00040 * an implementation might simply call "delete this" to 00041 * destroy the object. 00042 */ 00043 virtual void destroy() throw() = 0; 00044 00045 /** 00046 * Virtual destructor with an empty implementation 00047 */ 00048 virtual ~ExternalFunctionParameter() {} 00049 }; 00050 00051 } 00052 00053 #endif