You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by su...@apache.org on 2003/07/21 16:10:43 UTC

cvs commit: xml-axis/c/src/common IParam.h IArrayBean.h IAccessBean.h ArrayBean.h ArrayBean.cpp Param.h Param.cpp MessageData.h MessageData.cpp ISoapSerializer.h ISoapMethod.h ISoapDeSerializer.h IMessageData.h AccessBean.h AccessBean.cpp

susantha    2003/07/21 07:10:42

  Modified:    c/src/common Param.h Param.cpp MessageData.h MessageData.cpp
                        ISoapSerializer.h ISoapMethod.h ISoapDeSerializer.h
                        IMessageData.h AccessBean.h AccessBean.cpp
  Added:       c/src/common IParam.h IArrayBean.h IAccessBean.h ArrayBean.h
                        ArrayBean.cpp
  Log:
  Introduced Interfaces to AccessBean, ArrayBean and Param classes for
  1. Making wrapper class API simple
  2. Avoid code duplication in Webservice DLLs (Web service DLLs having its own copy of linked code)
  
  Revision  Changes    Path
  1.7       +13 -16    xml-axis/c/src/common/Param.h
  
  Index: Param.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/Param.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Param.h	18 Jul 2003 05:18:19 -0000	1.6
  +++ Param.h	21 Jul 2003 14:10:17 -0000	1.7
  @@ -73,17 +73,18 @@
   #pragma once
   #endif // _MSC_VER > 1000
   
  -#include <string>
  -#include "../soap/TypeMapping.h"
  -#include "ISoapSerializer.h"
  +#include "IParam.h"
   
  +#include <string>
   using namespace std;
   
   class AccessBean;
   class ArrayBean;
   
  -class Param  
  +class Param : public IParam
   {
  +	friend class SoapDeSerializer;
  +	friend class XMLStreamHandler;
   public:
   	Param(){ m_Type = USER_TYPE;}; //if there is no attribute that says the type
   	Param(Param& param);
  @@ -94,18 +95,9 @@
   	virtual ~Param();
   	void operator=(Param &param);
   
  -public:
  -	union uValue
  -	{
  -		int n;
  -		float f;
  -		double d;
  -		//all basic types should come here
  -		ArrayBean* a; //holds array types
  -		AccessBean* o; //this is used to hold user types 
  -	} m_Value;
  -
  -	string m_sValue; //value in case of XSD_STRING 
  +private:
  +	uParamValue m_Value;
  +	string m_sValue; //value in case of XSD_STRING, XSD_HEXBINARY and XSD_BASE64BINARY
   	string m_sName; //Name of the parameter
   	XSDTYPE m_Type; //Type of the parameter
   
  @@ -118,6 +110,7 @@
   
   public: //Conversion functions
   	int SetValue(string& sValue);
  +	int SetValue(XSDTYPE nType, uParamValue Value);
   	XSDTYPE GetType() const;	
   	int serialize(ISoapSerializer& pSZ);
   
  @@ -129,6 +122,10 @@
   	const string& GetBase64String();
   	void setPrefix(const string &prefix);
   	void setUri(const string &uri);
  +	int GetArraySize();
  +	int SetArrayElements(void* pElements);
  +	int SetUserType(IAccessBean* pObject);
  +	void SetName(char* sName);
   };
   
   #endif // !defined(AFX_PARAM_H__351B13BB_5D03_40C5_93F5_56D17295A8BD__INCLUDED_)
  
  
  
  1.7       +90 -31    xml-axis/c/src/common/Param.cpp
  
  Index: Param.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/Param.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Param.cpp	16 Jul 2003 14:15:54 -0000	1.6
  +++ Param.cpp	21 Jul 2003 14:10:33 -0000	1.7
  @@ -66,6 +66,7 @@
   //////////////////////////////////////////////////////////////////////
   
   #include "Param.h"
  +#include "ArrayBean.h"
   #include "AccessBean.h"
   #include "BasicTypeSerializer.h"
   #include <stdlib.h>
  @@ -84,18 +85,18 @@
   	m_Type = param.m_Type;	
   	if (m_Type == USER_TYPE) 
   	{
  -		m_Value.o = new AccessBean();
  -		m_Value.o->m_TypeName = param.m_Value.o->m_TypeName;
  -		m_Value.o->m_URI = param.m_Value.o->m_URI;
  +		m_Value.pBean = new AccessBean();
  +		m_Value.pBean->m_TypeName = param.m_Value.pBean->m_TypeName;
  +		m_Value.pBean->m_URI = param.m_Value.pBean->m_URI;
   	}
   	else if(m_Type == XSD_ARRAY)
   	{
  -		m_Value.a = new ArrayBean();
  -		m_Value.a->m_TypeName = param.m_Value.a->m_TypeName;
  -		m_Value.a->m_URI = param.m_Value.a->m_URI;
  -		m_Value.a->m_type = param.m_Value.a->m_type;
  -		m_Value.a->m_size = param.m_Value.a->m_size;
  -		m_Value.a->m_ItemName = param.m_Value.a->m_ItemName;
  +		m_Value.pArray = new ArrayBean();
  +		m_Value.pArray->m_TypeName = param.m_Value.pArray->m_TypeName;
  +		m_Value.pArray->m_URI = param.m_Value.pArray->m_URI;
  +		m_Value.pArray->m_type = param.m_Value.pArray->m_type;
  +		m_Value.pArray->m_size = param.m_Value.pArray->m_size;
  +		m_Value.pArray->m_ItemName = param.m_Value.pArray->m_ItemName;
   		//copy constructor is not intended to use to copy the array in
   		//union v
   	}	
  @@ -120,21 +121,21 @@
   Param::Param(int nValue)
   {
   	m_sName = "Int";
  -	m_Value.n = nValue;
  +	m_Value.nValue = nValue;
   	m_Type = XSD_INT;
   }
   
   Param::Param(float fValue)
   {
   	m_sName = "Float";
  -	m_Value.f = fValue;
  +	m_Value.fValue = fValue;
   	m_Type = XSD_FLOAT;
   }
   
   Param::Param(double dValue)
   {
   	m_sName = "Double";
  -	m_Value.d = dValue;
  +	m_Value.dValue = dValue;
   	m_Type = XSD_DOUBLE;
   }
   
  @@ -142,10 +143,10 @@
   {
   	switch (m_Type){
   	case XSD_ARRAY:
  -		if (m_Value.a) delete m_Value.a;
  +		if (m_Value.pArray) delete m_Value.pArray;
   		break;
   	case USER_TYPE:
  -		if (m_Value.o) delete m_Value.o;
  +		if (m_Value.pBean) delete m_Value.pBean;
   		break;
   	default:;
   	}
  @@ -209,7 +210,7 @@
   	{
   		//exception
   	}
  -	return m_Value.n;
  +	return m_Value.nValue;
   }
   
   float Param::GetFloat()
  @@ -224,7 +225,7 @@
   	{
   		//exception
   	}
  -	return m_Value.f;
  +	return m_Value.fValue;
   }
   
   XSDTYPE Param::GetType() const
  @@ -237,10 +238,10 @@
   	string ATprefix;
   	switch (m_Type){
   	case XSD_INT:
  -		pSZ << BasicTypeSerializer::serialize(m_sName, m_Value.n).c_str();
  +		pSZ << BasicTypeSerializer::serialize(m_sName, m_Value.nValue).c_str();
   		break;
   	case XSD_FLOAT:
  -		pSZ << BasicTypeSerializer::serialize(m_sName, m_Value.f).c_str();
  +		pSZ << BasicTypeSerializer::serialize(m_sName, m_Value.fValue).c_str();
   		break;
   	case XSD_STRING:
   		pSZ << BasicTypeSerializer::serialize(m_sName, m_sValue).c_str();
  @@ -255,7 +256,7 @@
   		//pSZ << "<abc:ArrayOfPhoneNumbers xmlns:abc="http://example.org/2001/06/numbers"
   		//				xmlns:enc="http://www.w3.org/2001/06/soap-encoding" 
           //              enc:arrayType="abc:phoneNumberType[2]" >";
  -		if (!m_Value.a) return FAIL; //error condition
  +		if (!m_Value.pArray) return FAIL; //error condition
   		pSZ << "<";
   		if (!m_strPrefix.empty())
   		{
  @@ -270,29 +271,29 @@
   
   		pSZ << " xmlns:enc"; 
   		pSZ << "=\"http://www.w3.org/2001/06/soap-encoding\"";
  -		if (m_Value.a->m_type == USER_TYPE)
  +		if (m_Value.pArray->m_type == USER_TYPE)
   		{
  -			pSZ << " xmlns:" << ATprefix.c_str() << "=" << m_Value.a->m_URI.c_str(); //this prefix should be dynamically taken from serializer.
  +			pSZ << " xmlns:" << ATprefix.c_str() << "=" << m_Value.pArray->m_URI.c_str(); //this prefix should be dynamically taken from serializer.
   		}
   		pSZ << "enc:arrayType=";
  -		if (m_Value.a->m_type == USER_TYPE)
  +		if (m_Value.pArray->m_type == USER_TYPE)
   		{
  -			pSZ << ATprefix.c_str() << ":" << m_Value.a->m_TypeName.c_str(); //this prefix should be dynamically taken from serializer.
  +			pSZ << ATprefix.c_str() << ":" << m_Value.pArray->m_TypeName.c_str(); //this prefix should be dynamically taken from serializer.
   		}
   		else //basic type array
   		{
   			pSZ << "xsd:";
  -			pSZ << BasicTypeSerializer::BasicTypeStr(m_Value.a->m_type);
  +			pSZ << BasicTypeSerializer::BasicTypeStr(m_Value.pArray->m_type);
   		}
   		{
  -			for (list<int>::iterator it=m_Value.a->m_size.begin(); it!=m_Value.a->m_size.end(); it++)
  +			for (list<int>::iterator it=m_Value.pArray->m_size.begin(); it!=m_Value.pArray->m_size.end(); it++)
   			{
   				sprintf(m_Buf,"[%d]", *it);
   				pSZ << m_Buf;
   			}
   		}
   		pSZ << ">";
  -		m_Value.a->Serialize(pSZ); //Only serializes the inner items
  +		m_Value.pArray->Serialize(pSZ); //Only serializes the inner items
   		pSZ << "</";
   		if (!m_strPrefix.empty())
   		{
  @@ -305,7 +306,7 @@
   		pSZ << ">";
   		break;
   	case USER_TYPE:
  -		m_Value.o->Serialize(pSZ);
  +		m_Value.pBean->Serialize(pSZ);
   		break;
   	default:;
   	}
  @@ -321,10 +322,10 @@
   	switch (m_Type)
   	{
   	case XSD_INT:
  -		m_Value.n = atoi(sValue.c_str());
  +		m_Value.nValue = atoi(sValue.c_str());
   		break;
   	case XSD_FLOAT:
  -		m_Value.f = atof(sValue.c_str());
  +		m_Value.fValue = atof(sValue.c_str());
   		break;
   	case XSD_STRING:
   	case XSD_HEXBINARY:
  @@ -342,6 +343,35 @@
   	return SUCCESS;
   }
   
  +int Param::SetValue(XSDTYPE nType, uParamValue Value)
  +{
  +	m_Type = nType;
  +	switch (m_Type)
  +	{
  +	case XSD_INT:
  +		m_Value.nValue = Value.nValue;
  +		break;
  +	case XSD_FLOAT:
  +		m_Value.fValue = Value.fValue;
  +		break;
  +	case XSD_STRING:
  +	case XSD_HEXBINARY:
  +	case XSD_BASE64BINARY:
  +		m_sValue = Value.pStrValue->c_str();
  +		break;
  +	//Continue this for all basic types
  +	case XSD_ARRAY:
  +		m_Value.pArray = Value.pArray;
  +		break;
  +	case USER_TYPE:
  +		m_Value.pBean = Value.pBean;
  +		break;
  +	default:
  +		return FAIL; //this is an unexpected situation
  +	}
  +	return SUCCESS;
  +}
  +
   void Param::setPrefix(const string &prefix)
   {
   	m_strPrefix = prefix;
  @@ -359,14 +389,43 @@
   	m_Type = param.m_Type;	
   	if (m_Type == USER_TYPE) 
   	{
  -		m_Value.o = param.m_Value.o;
  +		m_Value.pBean = param.m_Value.pBean;
   	}
   	else if(m_Type == XSD_ARRAY)
   	{
  -		m_Value.a = param.m_Value.a;
  +		m_Value.pArray = param.m_Value.pArray;
   	}	
   	else 
   	{
   		m_Value = param.m_Value;
   	}
   }
  +
  +int Param::GetArraySize()
  +{
  +	if (m_Type != XSD_ARRAY) return 0;
  +	return m_Value.pArray->GetArraySize();
  +}
  +
  +int Param::SetUserType(IAccessBean* pObject)
  +{
  +	if (m_Type != USER_TYPE) return FAIL;
  +	m_Value.pIBean = pObject;
  +	return SUCCESS;
  +}
  +
  +int Param::SetArrayElements(void* pElements)
  +{
  +	if (m_Type != XSD_ARRAY) return FAIL;
  +	if (m_Value.pArray)
  +	{
  +		m_Value.pArray->m_value.sta = pElements;
  +		return SUCCESS;
  +	}
  +	return FAIL;
  +}
  +
  +void Param::SetName(char* sName)
  +{
  +	m_sName = sName;
  +}
  \ No newline at end of file
  
  
  
  1.5       +3 -5      xml-axis/c/src/common/MessageData.h
  
  Index: MessageData.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/MessageData.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MessageData.h	17 Jul 2003 07:02:08 -0000	1.4
  +++ MessageData.h	21 Jul 2003 14:10:34 -0000	1.5
  @@ -73,13 +73,11 @@
   #endif // _MSC_VER > 1000
   
   #include "GDefine.h"
  -#include "Param.h"
  -#include "ISoapDeSerializer.h"
  -#include "ISoapSerializer.h"
   #include "IMessageData.h"
   #include "../wsdd/WSDDService.h"
   #include "../soap/SoapSerializer.h"
   #include "../soap/SoapDeSerializer.h"
  +#include "Param.h"
   
   #include <string>
   #include <list>
  @@ -98,8 +96,8 @@
   public:
   	void SetDeSerializer(SoapDeSerializer* pDZ);
   	void SetSerializer(SoapSerializer* pSZ);
  -	void SetUserName(string m_sUserName);
  -	string GetUserName();
  +	void SetUserName(string& m_sUserName);
  +	string& GetUserName();
   	void SetService(WSDDService* argService);
   	WSDDService* GetService();  
   	AXIS_PROTOCOL_TYPE m_Protocol;
  
  
  
  1.4       +4 -5      xml-axis/c/src/common/MessageData.cpp
  
  Index: MessageData.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/MessageData.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MessageData.cpp	15 Jul 2003 05:12:41 -0000	1.3
  +++ MessageData.cpp	21 Jul 2003 14:10:34 -0000	1.4
  @@ -90,15 +90,14 @@
   	m_pDZ = pDZ;
   }
   
  -void MessageData::SetUserName(string m_sUserName)
  +void MessageData::SetUserName(string& m_sUserName)
   {
     m_sUserName = m_sUserName;
   }
  -string MessageData::GetUserName()
  +string& MessageData::GetUserName()
   {
  -  //return m_sUserName;
  -  return "damitha kumarage";
  -  
  +  return m_sUserName;
  + // return "damitha kumarage"; 
   }
   
   void MessageData::SetService(WSDDService* argService)
  
  
  
  1.3       +7 -3      xml-axis/c/src/common/ISoapSerializer.h
  
  Index: ISoapSerializer.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/ISoapSerializer.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ISoapSerializer.h	16 Jul 2003 14:15:54 -0000	1.2
  +++ ISoapSerializer.h	21 Jul 2003 14:10:34 -0000	1.3
  @@ -67,16 +67,20 @@
   #if !defined(AFX_ISOAPSERIALIZER_H__4F8E4E72_56C8_4F1C_A488_350FDEFF9028__INCLUDED_)
   #define AFX_ISOAPSERIALIZER_H__4F8E4E72_56C8_4F1C_A488_350FDEFF9028__INCLUDED_
   
  -#include "ISoapMethod.h"
  -class Param;
  +class ISoapMethod;
  +class IArrayBean;
  +class IParam;
  +union uParamValue;
  +#include "../soap/TypeMapping.h"
   
   class ISoapSerializer
   {
   public:	
  -	virtual int setResponseParam(Param* pParam)=0;
  +	virtual IParam* setResponseParam(XSDTYPE nType, uParamValue Value)=0;
   	virtual ISoapMethod* createSoapMethod()=0;
   	virtual ISoapSerializer& operator<<(const char *cSerialized)=0;
   	virtual const char* getNewNamespacePrefix()=0;
  +	virtual IArrayBean* makeArrayBean(XSDTYPE nType, void* pArray)=0;
   };
   
   #endif // !defined(AFX_ISOAPSERIALIZER_H__4F8E4E72_56C8_4F1C_A488_350FDEFF9028__INCLUDED_)
  
  
  
  1.2       +1 -1      xml-axis/c/src/common/ISoapMethod.h
  
  Index: ISoapMethod.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/ISoapMethod.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ISoapMethod.h	15 Jul 2003 06:37:04 -0000	1.1
  +++ ISoapMethod.h	21 Jul 2003 14:10:34 -0000	1.2
  @@ -60,7 +60,7 @@
    * @author Roshan Weerasuriya (roshan@jkcs.slt.lk)
    *
    */
  -// SoapMethodBase.h: interface for the SoapMethodBase class.
  +// ISoapMethod.h: interface for the ISoapMethod class.
   //
   //////////////////////////////////////////////////////////////////////
   
  
  
  
  1.2       +3 -4      xml-axis/c/src/common/ISoapDeSerializer.h
  
  Index: ISoapDeSerializer.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/ISoapDeSerializer.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ISoapDeSerializer.h	17 Jul 2003 06:35:54 -0000	1.1
  +++ ISoapDeSerializer.h	21 Jul 2003 14:10:34 -0000	1.2
  @@ -66,17 +66,16 @@
   #if !defined(AFX_ISOAPDESERIALIZER_H__BE214866_1A80_44C4_9AAD_0475B0C5EA1C__INCLUDED_)
   #define AFX_ISOAPDESERIALIZER_H__BE214866_1A80_44C4_9AAD_0475B0C5EA1C__INCLUDED_
   
  -#include "Param.h"
  -
   #include <string>
   using namespace std;
  +class IParam;
   
   class ISoapDeSerializer
   {
   public:
   	virtual string& GetMethodName()=0;
  -	virtual Param* GetParam()=0;
  -	virtual int Deserialize(Param* pParam, int bHref)=0;
  +	virtual IParam* GetParam()=0;
  +	virtual int Deserialize(IParam* pIParam, int bHref)=0;
   };
   
   #endif // !defined(AFX_ISOAPDESERIALIZER_H__BE214866_1A80_44C4_9AAD_0475B0C5EA1C__INCLUDED_)
  
  
  
  1.4       +7 -4      xml-axis/c/src/common/IMessageData.h
  
  Index: IMessageData.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/IMessageData.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IMessageData.h	17 Jul 2003 07:16:49 -0000	1.3
  +++ IMessageData.h	21 Jul 2003 14:10:35 -0000	1.4
  @@ -67,16 +67,19 @@
   #if !defined(AFX_IMESSAGEDATA_H__EEFDCDB4_6ABA_48CA_8B45_B4FDA6045822__INCLUDED_)
   #define AFX_IMESSAGEDATA_H__EEFDCDB4_6ABA_48CA_8B45_B4FDA6045822__INCLUDED_
   
  -#include "ISoapDeSerializer.h"
  -#include "ISoapSerializer.h"
  +#include <string>
  +using namespace std;
  +
  +class ISoapDeSerializer;
  +class ISoapSerializer;
   
   class IMessageData
   {
   public:
   	virtual ISoapSerializer* getSoapSerializer()=0;
   	virtual ISoapDeSerializer* getSoapDeserializer()=0;
  -  virtual void SetUserName(string m_sUserName)=0;
  -	virtual string GetUserName()=0;
  +	virtual void SetUserName(string& m_sUserName)=0;
  +	virtual string& GetUserName()=0;
   
   protected:
     string m_sUserName;  
  
  
  
  1.4       +4 -41     xml-axis/c/src/common/AccessBean.h
  
  Index: AccessBean.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/AccessBean.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AccessBean.h	16 Jul 2003 14:15:55 -0000	1.3
  +++ AccessBean.h	21 Jul 2003 14:10:35 -0000	1.4
  @@ -72,56 +72,19 @@
   #pragma once
   #endif // _MSC_VER > 1000
   
  -//this is a trick :-)
  -#define ACCESSBEAN_SERIALIZABLE int DeSerialize(ISoapDeSerializer *pDZ);int Serialize(ISoapSerializer& pSZ); int GetSize();
  -
  -#include "../common/GDefine.h"
  +#include "GDefine.h"
  +#include "IAccessBean.h"
   #include "../soap/TypeMapping.h"
  -#include "ISoapSerializer.h"
  -#include "ISoapDeSerializer.h"
   
  -#include <list>
   #include <string>
   using namespace std;
   
  -class SoapDeSerializer;
  -
  -class AccessBean  
  +class AccessBean : public IAccessBean 
   {
   public:
   	AccessBean();
   	virtual ~AccessBean(){};
  -	virtual int DeSerialize(ISoapDeSerializer *pDZ);
  -	virtual int Serialize(ISoapSerializer& pSZ);
  -	virtual int GetSize();
  -	string m_TypeName;
  -	string m_URI;
  -};
  -
  -//This class is used inside Param class and wrapper classes only.
  -class ArrayBean : public AccessBean
  -{
  -public:
  -	ArrayBean();
  -	virtual ~ArrayBean();
  -	virtual int DeSerialize(ISoapDeSerializer *pDZ);
  -	virtual int Serialize(ISoapSerializer& pSZ);
  -	int GetArraySize();
  -private:
  -	int GetArrayBlockSize(list<int>::iterator it);
  -//	void DeleteArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim);
  -//	int SerializeArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim, string& sSerialized);
  -//	int DeSerializeArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim, SoapDeSerializer *pDZ);
  -
  -public:
  -	XSDTYPE m_type; //array element type
  -	list<int> m_size; //array size only one dimensional arrays
  -	string m_ItemName;//name of an item like <item>34</item>
  -	union uAValue //this is useful only when Param is used as a return parameter
  -	{
  -		void* sta; //simple type array
  -		AccessBean* cta; //complex type array
  -	}m_value;	
  +	ACCESSBEAN_SERIALIZABLE
   };
   
   #endif // !defined(AFX_ACCESSBEAN_H__DAFED24B_0423_4501_BD9C_8EE072651FFF__INCLUDED_)
  
  
  
  1.4       +0 -262    xml-axis/c/src/common/AccessBean.cpp
  
  Index: AccessBean.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/common/AccessBean.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AccessBean.cpp	16 Jul 2003 14:16:04 -0000	1.3
  +++ AccessBean.cpp	21 Jul 2003 14:10:35 -0000	1.4
  @@ -1,6 +1,4 @@
   #include "AccessBean.h"
  -#include "../soap/SoapDeSerializer.h"
  -#include "BasicTypeSerializer.h"
   
   AccessBean::AccessBean()
   {
  @@ -22,263 +20,3 @@
   {
   	return sizeof(AccessBean);
   }
  -ArrayBean::ArrayBean()
  -{
  -	m_type = XSD_UNKNOWN;
  -	m_ItemName = "";
  -	m_value.sta = NULL;
  -}
  -
  -ArrayBean::~ArrayBean()
  -{
  -	switch (m_type)
  -	{
  -	case XSD_INT:
  -		{
  -			int* a = (int*)m_value.sta;
  -			delete [] a;
  -		}
  -		break;
  -	case XSD_FLOAT:
  -		{
  -			float* a = (float*)m_value.sta;
  -			delete [] a;
  -		}
  -		break;
  -	case XSD_STRING:
  -		{
  -			string* a = (string*)m_value.sta;
  -			delete [] a;
  -		}
  -		break;
  -		//continue this for all basic types
  -	case USER_TYPE: //array of user types
  -		{
  -			AccessBean* pItem;
  -			int itemsize = m_value.cta->GetSize();
  -			list<int>::iterator it = m_size.begin();
  -			int blocksize = GetArrayBlockSize(it);
  -			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta);
  -			for (int x=0; x<blocksize; x++)
  -			{
  -				pItem = reinterpret_cast<AccessBean*>(ptrval+x*itemsize);
  -				delete pItem;
  -			}
  -		}
  -		break;
  -	default:;
  -	}	
  -}
  -
  -int ArrayBean::GetArraySize()
  -{
  -	list<int>::iterator it = m_size.begin();	
  -	return GetArrayBlockSize(it);
  -}
  -
  -int ArrayBean::GetArrayBlockSize(list<int>::iterator it)
  -{
  -	int size = *it;
  -	it++;
  -	if (it != m_size.end())
  -	{
  -		return size*GetArrayBlockSize(it);	
  -	}
  -	else
  -	{
  -		return size;
  -	}
  -}
  -/*
  -void ArrayBean::DeleteArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim)
  -{
  -	AccessBean* p;
  -	nDim--;
  -	if (nDim > 0)
  -	{	
  -		int curdim = *it;
  -		it++;
  -		for (int d=0; d<curdim; d++) //do for each dimension
  -		{
  -			DeleteArray(it,nItemOffset + GetArrayBlockSize(it)*d,nItemSize,nDim);
  -		}
  -		return;
  -	}
  -	unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta) + nItemOffset*nItemSize;
  -	for (int x=0; x<*it; x++)
  -	{
  -		p = reinterpret_cast<AccessBean*>(ptrval+x*nItemSize);
  -		delete p;
  -	}
  -}
  -*/
  -int ArrayBean::DeSerialize(ISoapDeSerializer *pDZ)
  -{
  -	Param* p;
  -	if ((XSD_UNKNOWN == m_type) ||(0==m_size.size())||(!m_value.sta)) return FAIL;
  -	switch (m_type)
  -	{
  -	case XSD_INT:
  -		{
  -			int* a = (int*)m_value.sta;
  -			list<int>::iterator it = m_size.begin();
  -			int blocksize = GetArrayBlockSize(it);
  -			for (int ix=0;ix<blocksize;ix++)
  -			{
  -				p = pDZ->GetParam();
  -				if (!p) return FAIL;
  -				a[ix] = p->GetInt();
  -			}
  -		}
  -		break;
  -	case XSD_FLOAT:
  -		{
  -			float* a = (float*)m_value.sta;
  -			list<int>::iterator it = m_size.begin();
  -			int blocksize = GetArrayBlockSize(it);
  -			for (int ix=0;ix<blocksize;ix++)
  -			{
  -				p = pDZ->GetParam();
  -				if (!p) return FAIL;
  -				a[ix] = p->GetFloat();
  -			}
  -		}
  -		break;
  -	case XSD_STRING:
  -		{
  -			string* a = (string*)m_value.sta;
  -			list<int>::iterator it = m_size.begin();
  -			int blocksize = GetArrayBlockSize(it);
  -			for (int ix=0;ix<blocksize;ix++)
  -			{
  -				p = pDZ->GetParam();
  -				if (!p) return FAIL;
  -				a[ix] = p->GetString();
  -			}
  -		}
  -		break;
  -		//continue this for all basic types
  -	case USER_TYPE: //array of user types
  -		{
  -			AccessBean* pItem;
  -			int itemsize = m_value.cta->GetSize();
  -			list<int>::iterator it = m_size.begin();
  -			int blocksize = GetArrayBlockSize(it);
  -			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta);
  -			for (int x=0; x<blocksize; x++)
  -			{
  -				pItem = reinterpret_cast<AccessBean*>(ptrval+x*itemsize);
  -				pItem->DeSerialize(pDZ);
  -			}
  -		}
  -		break;
  -	default:;
  -	}
  -	return SUCCESS;
  -}
  -/*
  -int ArrayBean::DeSerializeArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim, SoapDeSerializer *pDZ)
  -{
  -	AccessBean* p;
  -	nDim--;
  -	if (nDim > 0)
  -	{	
  -		int curdim = *it;
  -		it++;
  -		for (int d=0; d<curdim; d++) //do for each dimension
  -		{
  -			DeSerializeArray(it,nItemOffset + GetArrayBlockSize(it)*d,nItemSize,nDim,pDZ);
  -		}
  -		return SUCCESS;
  -	}
  -	unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta) + nItemOffset*nItemSize;
  -	for (int x=0; x<*it; x++)
  -	{
  -		p = reinterpret_cast<AccessBean*>(ptrval+x*nItemSize);
  -		p->DeSerialize(pDZ);
  -	}
  -	return SUCCESS;
  -}
  -*/
  -int ArrayBean::Serialize(ISoapSerializer& pSZ)
  -{	
  -	switch (m_type)
  -	{
  -	case XSD_INT:
  -		{
  -			int* pInt = (int*)m_value.sta;
  -			list<int>::iterator it = m_size.begin();
  -			int blocksize = GetArrayBlockSize(it);
  -			for (int ix=0;ix<blocksize;ix++)
  -			{
  -				pSZ << BasicTypeSerializer::serialize(m_ItemName, *pInt).c_str();
  -				pInt++;
  -			}
  -		}
  -		break;
  -	case XSD_FLOAT:
  -		{
  -			float* pFloat = (float*)m_value.sta;
  -			list<int>::iterator it = m_size.begin();
  -			int blocksize = GetArrayBlockSize(it);
  -			for (int ix=0;ix<blocksize;ix++)
  -			{
  -				pSZ << BasicTypeSerializer::serialize(m_ItemName, *pFloat).c_str();
  -				pFloat++;
  -			}
  -		}
  -		break;
  -	case XSD_STRING:
  -		{
  -			string* pStr = (string*)m_value.sta;
  -			list<int>::iterator it = m_size.begin();
  -			int blocksize = GetArrayBlockSize(it);
  -			for (int ix=0;ix<blocksize;ix++)
  -			{
  -				pSZ << BasicTypeSerializer::serialize(m_ItemName, *pStr).c_str();
  -				pStr++;
  -			}
  -		}
  -		break;
  -	case USER_TYPE:
  -		{
  -			AccessBean* pItem;
  -			int itemsize = m_value.cta->GetSize();
  -			list<int>::iterator it = m_size.begin();
  -			int blocksize = GetArrayBlockSize(it);
  -			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta);
  -			for (int x=0; x<blocksize; x++)
  -			{
  -				pItem = reinterpret_cast<AccessBean*>(ptrval+x*itemsize);
  -				pItem->Serialize(pSZ);
  -			}
  -		}
  -		break;
  -	default:;
  -	}
  -	return SUCCESS;
  -}
  -/*
  -int ArrayBean::SerializeArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim, string& sSerialized)
  -{
  -	AccessBean* p;
  -	nDim--;
  -	if (nDim > 0)
  -	{	
  -		int curdim = *it;
  -		it++;
  -		for (int d=0; d<curdim; d++) //do for each dimension
  -		{
  -			SerializeArray(it,nItemOffset + GetArrayBlockSize(it)*d,nItemSize,nDim,sSerialized);
  -		}
  -		return SUCCESS;
  -	}
  -	unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta) + nItemOffset*nItemSize;
  -	for (int x=0; x<*it; x++)
  -	{
  -		p = reinterpret_cast<AccessBean*>(ptrval+x*nItemSize);
  -		p->Serialize(sSerialized);
  -	}
  -	return SUCCESS;
  -}
  -*/
  \ No newline at end of file
  
  
  
  1.1                  xml-axis/c/src/common/IParam.h
  
  Index: IParam.h
  ===================================================================
  // IParam.h: interface for the IParam class.
  //
  //////////////////////////////////////////////////////////////////////
  
  #if !defined(AFX_IPARAM_H__25C278BB_5875_49E6_A3EC_B6AD3E543D69__INCLUDED_)
  #define AFX_IPARAM_H__25C278BB_5875_49E6_A3EC_B6AD3E543D69__INCLUDED_
  
  #if _MSC_VER > 1000
  #pragma once
  #endif // _MSC_VER > 1000
  
  #include "IAccessBean.h"
  #include "../soap/TypeMapping.h"
  #include <string>
  using namespace std;
  
  typedef union uParamValue
  {
  	int nValue;
  	float fValue;
  	double dValue;
  	string* pStrValue;
  	//all basic types should come here
  	class ArrayBean* pArray; //this is used to hold arrays
  	class IArrayBean* pIArray; //used by wrapper classes
  	class AccessBean* pBean; //this is used to hold user types
  	class IAccessBean* pIBean; //used by wrapper classes
  } uParamValue;
  
  class IParam  
  {
  public:
  	IParam(){};
  	virtual ~IParam(){};
  	virtual int GetInt()=0;
  	virtual float GetFloat()=0;
  	virtual const string& GetString()=0;
  	virtual const string& GetHexString()=0;
  	virtual const string& GetBase64String()=0;
  	virtual int GetArraySize()=0;
  	virtual int SetArrayElements(void* pElements)=0;
  	virtual int SetUserType(IAccessBean* pObject)=0;
  	virtual void SetName(char* sName)=0;
  };
  
  #endif // !defined(AFX_IPARAM_H__25C278BB_5875_49E6_A3EC_B6AD3E543D69__INCLUDED_)
  
  
  
  1.1                  xml-axis/c/src/common/IArrayBean.h
  
  Index: IArrayBean.h
  ===================================================================
  // IArrayBean.h: interface for the IArrayBean class.
  //
  //////////////////////////////////////////////////////////////////////
  
  #if !defined(AFX_IARRAYBEAN_H__6E27008D_DCA0_4F28_AC82_FEEBE1A1CBBB__INCLUDED_)
  #define AFX_IARRAYBEAN_H__6E27008D_DCA0_4F28_AC82_FEEBE1A1CBBB__INCLUDED_
  
  #if _MSC_VER > 1000
  #pragma once
  #endif // _MSC_VER > 1000
  
  class IArrayBean  
  {
  public:
  	IArrayBean(){};
  	virtual ~IArrayBean(){};
  	//API needed for the Wrapper class to manipulate ArrayBeans
  	virtual void AddDimension(int nDim)=0;
  	virtual void SetItemName(char* sName)=0;
  };
  
  #endif // !defined(AFX_IARRAYBEAN_H__6E27008D_DCA0_4F28_AC82_FEEBE1A1CBBB__INCLUDED_)
  
  
  
  1.1                  xml-axis/c/src/common/IAccessBean.h
  
  Index: IAccessBean.h
  ===================================================================
  // IAccessBean.h: interface for the IAccessBean class.
  //
  //////////////////////////////////////////////////////////////////////
  
  #if !defined(AFX_IACCESSBEAN_H__63D8C61C_7F96_4E01_89BB_0EB528DADB00__INCLUDED_)
  #define AFX_IACCESSBEAN_H__63D8C61C_7F96_4E01_89BB_0EB528DADB00__INCLUDED_
  
  #if _MSC_VER > 1000
  #pragma once
  #endif // _MSC_VER > 1000
  
  //this is a trick :-)
  #define ACCESSBEAN_SERIALIZABLE int DeSerialize(ISoapDeSerializer *pDZ);int Serialize(ISoapSerializer& pSZ); int GetSize();
  
  #include "ISoapSerializer.h"
  #include "ISoapDeSerializer.h"
  
  class IAccessBean  
  {
  	friend class Param;
  	friend class XMLStreamHandler;
  public:
  	IAccessBean(){};
  	virtual ~IAccessBean(){};
  	virtual int DeSerialize(ISoapDeSerializer *pDZ) = 0;
  	virtual int Serialize(ISoapSerializer& pSZ) = 0;
  	virtual int GetSize() = 0;
  protected:
  	string m_TypeName;
  	string m_URI;
  };
  
  #endif // !defined(AFX_IACCESSBEAN_H__63D8C61C_7F96_4E01_89BB_0EB528DADB00__INCLUDED_)
  
  
  
  1.1                  xml-axis/c/src/common/ArrayBean.h
  
  Index: ArrayBean.h
  ===================================================================
  // ArrayBean.h: interface for the ArrayBeanI class.
  //
  //////////////////////////////////////////////////////////////////////
  
  #if !defined(AFX_ARRAYBEAN_H__374BEDCF_E850_4907_9CF0_F2EBC61E54CF__INCLUDED_)
  #define AFX_ARRAYBEAN_H__374BEDCF_E850_4907_9CF0_F2EBC61E54CF__INCLUDED_
  
  #if _MSC_VER > 1000
  #pragma once
  #endif // _MSC_VER > 1000
  
  #include "IArrayBean.h"
  
  #include <list>
  using namespace std;
  
  class AccessBean;
  //This class is used inside Param class and wrapper classes only.
  class ArrayBean : public IArrayBean
  {
  public:
  	ArrayBean();
  	virtual ~ArrayBean();
  	virtual int DeSerialize(ISoapDeSerializer *pDZ);
  	virtual int Serialize(ISoapSerializer& pSZ);
  	int GetArraySize();
  private:
  	int GetArrayBlockSize(list<int>::iterator it);
  //	void DeleteArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim);
  //	int SerializeArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim, string& sSerialized);
  //	int DeSerializeArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim, SoapDeSerializer *pDZ);
  
  public:
  	XSDTYPE m_type; //array element type
  	list<int> m_size; //array size only one dimensional arrays
  	string m_ItemName;//name of an item like <item>34</item>
  	union uAValue //this is useful only when Param is used as a return parameter
  	{
  		void* sta; //simple type array
  		AccessBean* cta; //complex type array
  	}m_value;	
  	string m_TypeName;
  	string m_URI;
  public: //IArrayBean Interface
  	void AddDimension(int nDim);
  	void SetItemName(char* sName);
  };
  
  #endif // !defined(AFX_ARRAYBEAN_H__374BEDCF_E850_4907_9CF0_F2EBC61E54CF__INCLUDED_)
  
  
  
  1.1                  xml-axis/c/src/common/ArrayBean.cpp
  
  Index: ArrayBean.cpp
  ===================================================================
  // ArrayBean.cpp: implementation of the ArrayBeanI class.
  //
  //////////////////////////////////////////////////////////////////////
  #include "AccessBean.h"
  #include "ArrayBean.h"
  #include "BasicTypeSerializer.h"
  #include "Param.h"
  
  //////////////////////////////////////////////////////////////////////
  // Construction/Destruction
  //////////////////////////////////////////////////////////////////////
  
  ArrayBean::ArrayBean()
  {
  	m_type = XSD_UNKNOWN;
  	m_ItemName = "";
  	m_value.sta = NULL;
  }
  
  ArrayBean::~ArrayBean()
  {
  	switch (m_type)
  	{
  	case XSD_INT:
  		{
  			int* a = (int*)m_value.sta;
  			delete [] a;
  		}
  		break;
  	case XSD_FLOAT:
  		{
  			float* a = (float*)m_value.sta;
  			delete [] a;
  		}
  		break;
  	case XSD_STRING:
  		{
  			string* a = (string*)m_value.sta;
  			delete [] a;
  		}
  		break;
  		//continue this for all basic types
  	case USER_TYPE: //array of user types
  		{
  			AccessBean* pItem;
  			int itemsize = m_value.cta->GetSize();
  			list<int>::iterator it = m_size.begin();
  			int blocksize = GetArrayBlockSize(it);
  			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta);
  			for (int x=0; x<blocksize; x++)
  			{
  				pItem = reinterpret_cast<AccessBean*>(ptrval+x*itemsize);
  				delete pItem;
  			}
  		}
  		break;
  	default:;
  	}	
  }
  
  int ArrayBean::GetArraySize()
  {
  	list<int>::iterator it = m_size.begin();	
  	return GetArrayBlockSize(it);
  }
  
  int ArrayBean::GetArrayBlockSize(list<int>::iterator it)
  {
  	int size = *it;
  	it++;
  	if (it != m_size.end())
  	{
  		return size*GetArrayBlockSize(it);	
  	}
  	else
  	{
  		return size;
  	}
  }
  /*
  void ArrayBean::DeleteArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim)
  {
  	AccessBean* p;
  	nDim--;
  	if (nDim > 0)
  	{	
  		int curdim = *it;
  		it++;
  		for (int d=0; d<curdim; d++) //do for each dimension
  		{
  			DeleteArray(it,nItemOffset + GetArrayBlockSize(it)*d,nItemSize,nDim);
  		}
  		return;
  	}
  	unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta) + nItemOffset*nItemSize;
  	for (int x=0; x<*it; x++)
  	{
  		p = reinterpret_cast<AccessBean*>(ptrval+x*nItemSize);
  		delete p;
  	}
  }
  */
  int ArrayBean::DeSerialize(ISoapDeSerializer *pDZ)
  {
  	Param* p;
  	if ((XSD_UNKNOWN == m_type) ||(0==m_size.size())||(!m_value.sta)) return FAIL;
  	switch (m_type)
  	{
  	case XSD_INT:
  		{
  			int* a = (int*)m_value.sta;
  			list<int>::iterator it = m_size.begin();
  			int blocksize = GetArrayBlockSize(it);
  			for (int ix=0;ix<blocksize;ix++)
  			{
  				p = (Param*)pDZ->GetParam();
  				if (!p) return FAIL;
  				a[ix] = p->GetInt();
  			}
  		}
  		break;
  	case XSD_FLOAT:
  		{
  			float* a = (float*)m_value.sta;
  			list<int>::iterator it = m_size.begin();
  			int blocksize = GetArrayBlockSize(it);
  			for (int ix=0;ix<blocksize;ix++)
  			{
  				p = (Param*)pDZ->GetParam();
  				if (!p) return FAIL;
  				a[ix] = p->GetFloat();
  			}
  		}
  		break;
  	case XSD_STRING:
  		{
  			string* a = (string*)m_value.sta;
  			list<int>::iterator it = m_size.begin();
  			int blocksize = GetArrayBlockSize(it);
  			for (int ix=0;ix<blocksize;ix++)
  			{
  				p = (Param*)pDZ->GetParam();
  				if (!p) return FAIL;
  				a[ix] = p->GetString();
  			}
  		}
  		break;
  		//continue this for all basic types
  	case USER_TYPE: //array of user types
  		{
  			IAccessBean* pItem;
  			int itemsize = m_value.cta->GetSize();
  			list<int>::iterator it = m_size.begin();
  			int blocksize = GetArrayBlockSize(it);
  			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta);
  			for (int x=0; x<blocksize; x++)
  			{
  				pDZ->GetParam(); //discard outer param corresponding to custom type - get only inner members
  				pItem = reinterpret_cast<IAccessBean*>(ptrval+x*itemsize);
  				pItem->DeSerialize(pDZ);
  			}
  		}
  		break;
  	default:;
  	}
  	return SUCCESS;
  }
  /*
  int ArrayBean::DeSerializeArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim, SoapDeSerializer *pDZ)
  {
  	AccessBean* p;
  	nDim--;
  	if (nDim > 0)
  	{	
  		int curdim = *it;
  		it++;
  		for (int d=0; d<curdim; d++) //do for each dimension
  		{
  			DeSerializeArray(it,nItemOffset + GetArrayBlockSize(it)*d,nItemSize,nDim,pDZ);
  		}
  		return SUCCESS;
  	}
  	unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta) + nItemOffset*nItemSize;
  	for (int x=0; x<*it; x++)
  	{
  		p = reinterpret_cast<AccessBean*>(ptrval+x*nItemSize);
  		p->DeSerialize(pDZ);
  	}
  	return SUCCESS;
  }
  */
  int ArrayBean::Serialize(ISoapSerializer& pSZ)
  {	
  	switch (m_type)
  	{
  	case XSD_INT:
  		{
  			int* pInt = (int*)m_value.sta;
  			list<int>::iterator it = m_size.begin();
  			int blocksize = GetArrayBlockSize(it);
  			for (int ix=0;ix<blocksize;ix++)
  			{
  				pSZ << BasicTypeSerializer::serialize(m_ItemName, *pInt).c_str();
  				pInt++;
  			}
  		}
  		break;
  	case XSD_FLOAT:
  		{
  			float* pFloat = (float*)m_value.sta;
  			list<int>::iterator it = m_size.begin();
  			int blocksize = GetArrayBlockSize(it);
  			for (int ix=0;ix<blocksize;ix++)
  			{
  				pSZ << BasicTypeSerializer::serialize(m_ItemName, *pFloat).c_str();
  				pFloat++;
  			}
  		}
  		break;
  	case XSD_STRING:
  		{
  			string* pStr = (string*)m_value.sta;
  			list<int>::iterator it = m_size.begin();
  			int blocksize = GetArrayBlockSize(it);
  			for (int ix=0;ix<blocksize;ix++)
  			{
  				pSZ << BasicTypeSerializer::serialize(m_ItemName, *pStr).c_str();
  				pStr++;
  			}
  		}
  		break;
  	case USER_TYPE:
  		{
  			AccessBean* pItem;
  			int itemsize = m_value.cta->GetSize();
  			list<int>::iterator it = m_size.begin();
  			int blocksize = GetArrayBlockSize(it);
  			unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta);
  			for (int x=0; x<blocksize; x++)
  			{
  				pItem = reinterpret_cast<AccessBean*>(ptrval+x*itemsize);
  				pItem->Serialize(pSZ);
  			}
  		}
  		break;
  	default:;
  	}
  	return SUCCESS;
  }
  /*
  int ArrayBean::SerializeArray(list<int>::iterator it, int nItemOffset, int nItemSize, int nDim, string& sSerialized)
  {
  	AccessBean* p;
  	nDim--;
  	if (nDim > 0)
  	{	
  		int curdim = *it;
  		it++;
  		for (int d=0; d<curdim; d++) //do for each dimension
  		{
  			SerializeArray(it,nItemOffset + GetArrayBlockSize(it)*d,nItemSize,nDim,sSerialized);
  		}
  		return SUCCESS;
  	}
  	unsigned long ptrval = reinterpret_cast<unsigned long>(m_value.cta) + nItemOffset*nItemSize;
  	for (int x=0; x<*it; x++)
  	{
  		p = reinterpret_cast<AccessBean*>(ptrval+x*nItemSize);
  		p->Serialize(sSerialized);
  	}
  	return SUCCESS;
  }
  */
  void ArrayBean::AddDimension(int nDim)
  {
  	m_size.push_back(nDim);
  }
  
  void ArrayBean::SetItemName(char* sName)
  {
  	m_ItemName = sName;
  }