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/10/17 16:03:13 UTC

cvs commit: ws-axis/c/src/soap SoapDeSerializer.cpp

susantha    2003/10/17 07:03:13

  Modified:    c/src/common ArrayBean.cpp
               c/src/soap SoapDeSerializer.cpp
  Log:
  Added some missing functionality to support some basic types
  
  Revision  Changes    Path
  1.11      +215 -0    ws-axis/c/src/common/ArrayBean.cpp
  
  Index: ArrayBean.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/ArrayBean.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ArrayBean.cpp	16 Oct 2003 11:49:25 -0000	1.10
  +++ ArrayBean.cpp	17 Oct 2003 14:03:13 -0000	1.11
  @@ -98,24 +98,74 @@
   	{
   		switch (m_type)
   		{
  +		case XSD_BYTE:
  +		case XSD_UNSIGNEDBYTE:
  +			{
  +				char* a = (char*)m_value.sta;
  +				delete [] a;
  +			}
  +			break;
  +		case XSD_SHORT:
  +		case XSD_UNSIGNEDSHORT:
  +			{
  +				short* a = (short*)m_value.sta;
  +				delete [] a;
  +			}
  +			break;
   		case XSD_INT:
  +		case XSD_UNSIGNEDINT:
  +		case XSD_BOOLEAN:
   			{
   				int* a = (int*)m_value.sta;
   				delete [] a;
   			}
   			break;
  +		case XSD_LONG:
  +		case XSD_UNSIGNEDLONG:
  +		case XSD_INTEGER:
  +		case XSD_DURATION:		
  +			{
  +				long* a = (long*)m_value.sta;
  +				delete [] a;
  +			}
  +			break;
   		case XSD_FLOAT:
   			{
   				float* a = (float*)m_value.sta;
   				delete [] a;
   			}
   			break;
  +		case XSD_DOUBLE:
  +		case XSD_DECIMAL:
  +			{
  +				double* a = (double*)m_value.sta;
  +				delete [] a;
  +			}
  +			break;
   		case XSD_STRING:
  +		case XSD_HEXBINARY:
  +		case XSD_BASE64BINARY:
  +		case XSD_ANYURI:
  +		case XSD_QNAME:
  +		case XSD_NOTATION:			
   			{
   				string* a = (string*)m_value.sta;
   				delete [] a;
   			}
   			break;
  +		case XSD_DATETIME:
  +		case XSD_TIME:
  +		case XSD_DATE:
  +		case XSD_YEARMONTH:
  +		case XSD_YEAR:
  +		case XSD_MONTHDAY:
  +		case XSD_DAY:
  +		case XSD_MONTH:
  +			{
  +				tm* a = (tm*)m_value.sta;
  +				delete [] a;
  +			}
  +			break;
   			//continue this for all basic types
   		default:;
   		}	
  @@ -148,7 +198,87 @@
   	if ((XSD_UNKNOWN == m_type) ||(0==m_size.size())||(!m_value.sta)) return FAIL;
   	switch (m_type)
   	{
  +	case XSD_BYTE:
  +	case XSD_UNSIGNEDBYTE:
  +		{
  +			char* a = (char*)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->GetByte();
  +			}		
  +		}
  +		break;
  +	case XSD_SHORT:
  +	case XSD_UNSIGNEDSHORT:
  +		{
  +			short* a = (short*)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->GetShort();
  +			}		
  +		}
  +		break;
  +	case XSD_LONG:
  +	case XSD_UNSIGNEDLONG:
  +	case XSD_INTEGER:
  +	case XSD_DURATION:		
  +		{
  +			long* a = (long*)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->GetLong();
  +			}		
  +		}
  +		break;
  +	case XSD_DOUBLE:
  +	case XSD_DECIMAL:
  +		{
  +			double* a = (double*)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->GetDouble();
  +			}		
  +		}
  +		break;
  +	case XSD_DATETIME:
  +	case XSD_TIME:
  +	case XSD_DATE:
  +	case XSD_YEARMONTH:
  +	case XSD_YEAR:
  +	case XSD_MONTHDAY:
  +	case XSD_DAY:
  +	case XSD_MONTH:
  +		{
  +			tm* a = (tm*)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->GetDate();
  +			}		
  +		}
  +		break;	
   	case XSD_INT:
  +	case XSD_UNSIGNEDINT:
  +	case XSD_BOOLEAN:
   		{
   			int* a = (int*)m_value.sta;
   			list<int>::iterator it = m_size.begin();
  @@ -175,6 +305,11 @@
   		}
   		break;
   	case XSD_STRING:
  +	case XSD_HEXBINARY:
  +	case XSD_BASE64BINARY:
  +	case XSD_ANYURI:
  +	case XSD_QNAME:
  +	case XSD_NOTATION:			
   		{
   			AxisString* a = (AxisString*)m_value.sta;
   			list<int>::iterator it = m_size.begin();
  @@ -212,7 +347,82 @@
   {	
   	switch (m_type)
   	{
  +	case XSD_BYTE:
  +	case XSD_UNSIGNEDBYTE:
  +		{
  +			char* p = (char*)m_value.sta;
  +			list<int>::iterator it = m_size.begin();
  +			int blocksize = GetArrayBlockSize(it);
  +			for (int ix=0;ix<blocksize;ix++)
  +			{
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p);
  +				p++;
  +			}
  +		}
  +		break;
  +	case XSD_SHORT:
  +	case XSD_UNSIGNEDSHORT:
  +		{
  +			short* p = (short*)m_value.sta;
  +			list<int>::iterator it = m_size.begin();
  +			int blocksize = GetArrayBlockSize(it);
  +			for (int ix=0;ix<blocksize;ix++)
  +			{
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p);
  +				p++;
  +			}
  +		}
  +		break;
  +	case XSD_LONG:
  +	case XSD_UNSIGNEDLONG:
  +	case XSD_INTEGER:
  +	case XSD_DURATION:		
  +		{
  +			long* p = (long*)m_value.sta;
  +			list<int>::iterator it = m_size.begin();
  +			int blocksize = GetArrayBlockSize(it);
  +			for (int ix=0;ix<blocksize;ix++)
  +			{
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p);
  +				p++;
  +			}
  +		}
  +		break;
  +	case XSD_DOUBLE:
  +	case XSD_DECIMAL:
  +		{
  +			double* p = (double*)m_value.sta;
  +			list<int>::iterator it = m_size.begin();
  +			int blocksize = GetArrayBlockSize(it);
  +			for (int ix=0;ix<blocksize;ix++)
  +			{
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p);
  +				p++;
  +			}
  +		}
  +		break;
  +	case XSD_DATETIME:
  +	case XSD_TIME:
  +	case XSD_DATE:
  +	case XSD_YEARMONTH:
  +	case XSD_YEAR:
  +	case XSD_MONTHDAY:
  +	case XSD_DAY:
  +	case XSD_MONTH:
  +		{
  +/*			tm* p = (tm*)m_value.sta;
  +			list<int>::iterator it = m_size.begin();
  +			int blocksize = GetArrayBlockSize(it);
  +			for (int ix=0;ix<blocksize;ix++)
  +			{
  +				pSZ << m_BTSZ.serialize(m_ItemName.c_str(), *p);
  +				p++;
  +			}
  +*/		}
  +		break;
   	case XSD_INT:
  +	case XSD_UNSIGNEDINT:
  +	case XSD_BOOLEAN:
   		{
   			int* pInt = (int*)m_value.sta;
   			list<int>::iterator it = m_size.begin();
  @@ -237,6 +447,11 @@
   		}
   		break;
   	case XSD_STRING:
  +	case XSD_HEXBINARY:
  +	case XSD_BASE64BINARY:
  +	case XSD_ANYURI:
  +	case XSD_QNAME:
  +	case XSD_NOTATION:			
   		{
   			AxisString* pStr = (AxisString*)m_value.sta;
   			list<int>::iterator it = m_size.begin();
  
  
  
  1.15      +2 -0      ws-axis/c/src/soap/SoapDeSerializer.cpp
  
  Index: SoapDeSerializer.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapDeSerializer.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- SoapDeSerializer.cpp	13 Oct 2003 05:03:14 -0000	1.14
  +++ SoapDeSerializer.cpp	17 Oct 2003 14:03:13 -0000	1.15
  @@ -436,6 +436,7 @@
   	{
   	case XSD_INT:
   	case XSD_UNSIGNEDINT:
  +	case XSD_BOOLEAN:
   		return new int[nSize];
   	case XSD_FLOAT:
   		return new float[nSize];
  @@ -480,6 +481,7 @@
   	{
   	case XSD_INT:
   	case XSD_UNSIGNEDINT:
  +	case XSD_BOOLEAN:
   		delete [] ((int*)pArray); return;
   	case XSD_FLOAT:
   		delete [] ((float*)pArray); return;