Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Examples  

IParam.h

00001 /*
00002  *   Copyright 2003-2004 The Apache Software 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 
00017 #if !defined(_IPARAM_H____OF_AXIS_INCLUDED_)
00018 #define _IPARAM_H____OF_AXIS_INCLUDED_
00019 
00020 #include "AxisUserAPI.h"
00021 #include "AxisWrapperAPI.h"
00022 #include "TypeMapping.h"
00023 #include "time.h"
00024 
00025 #include <string>
00026 
00027 AXIS_CPP_NAMESPACE_START
00028 
00029 using namespace std;
00030 /*
00031  *  @class ComplexObjectHandler
00032  *  @brief
00033  *
00034  *  @author Susantha Kumara (skumara@virtusa.com)
00035  */
00036 class ComplexObjectHandler
00037 {
00038 public:
00039     void* pObject;
00040     AXIS_SERIALIZE_FUNCT pSZFunct;
00041     AXIS_OBJECT_CREATE_FUNCT pCreFunct;
00042     AXIS_OBJECT_DELETE_FUNCT pDelFunct;
00043     AXIS_DESERIALIZE_FUNCT pDZFunct;
00044     AXIS_OBJECT_SIZE_FUNCT pSizeFunct;
00045     AxisString m_TypeName;
00046     AxisString m_URI;
00047 public:
00048     ComplexObjectHandler();
00049     ~ComplexObjectHandler();
00050     void init();
00051 };
00052 
00053 typedef union uParamValue
00054 {
00055     int nValue;
00056     unsigned int unValue;
00057     short sValue;
00058     unsigned short usValue;
00059     long lValue;
00060     unsigned ulValue;
00061     char cValue;
00062     unsigned char ucValue;
00063     float fValue;
00064     double dValue;
00065     struct tm tValue;/* this will hold the c type tm struct*/
00066     xsd__hexBinary hbValue;
00067     xsd__base64Binary b64bValue;
00068     long lDuration;/* duration in seconds*/
00069     class ArrayBean* pArray; /* this is used to hold arrays */
00070     class IArrayBean* pIArray; /* used by wrapper classes */
00071     ComplexObjectHandler* pCplxObj;
00072     const AxisChar* pStrValue;
00073     AnyType* pAnyObject; /* used to hold AnyType struct for xsd:any */
00074 } uParamValue;
00075 
00076 class IParam  
00077 {
00078 public:
00079     IParam(){};
00080     virtual ~IParam(){};
00081     virtual int setArrayElements(void* pElements)= 0;
00082     virtual int setArrayElements(void* pObject, 
00083         AXIS_DESERIALIZE_FUNCT pDZFunct, AXIS_OBJECT_DELETE_FUNCT pDelFunct, 
00084         AXIS_OBJECT_SIZE_FUNCT pSizeFunct)=0;
00085     virtual int setUserType(void* pObject, AXIS_DESERIALIZE_FUNCT pDZFunct, 
00086         AXIS_OBJECT_DELETE_FUNCT pDelFunct)=0;
00087     virtual void setName(const AxisChar* sName)=0;
00088 };
00089 
00090 AXIS_CPP_NAMESPACE_END
00091 
00092 #endif 
00093 

Generated on Wed Aug 18 11:42:24 2004 for AxisC++ by doxygen1.2.18