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;