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/01 05:44:39 UTC
cvs commit: xml-axis/c/src/common Param.h Param.cpp BasicTypeSerializer.h BasicTypeSerializer.cpp
susantha 2003/06/30 20:44:39
Modified: c/src/common Param.h Param.cpp BasicTypeSerializer.h
BasicTypeSerializer.cpp
Log:
some improvements to handler other basic types
Revision Changes Path
1.3 +2 -1 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.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Param.h 30 Jun 2003 03:59:44 -0000 1.2
+++ Param.h 1 Jul 2003 03:44:39 -0000 1.3
@@ -119,13 +119,14 @@
public: //Conversion functions
int SetValue(string& sValue);
XSDTYPE GetType() const;
- const string& ToString();
int serialize(string& sSerialized);
//Following functions are used by wrapper class methods making sure of the valid type.
int GetInt();
float GetFloat();
const string& GetString();
+ const string& GetHexString();
+ const string& GetBase64String();
const AccessBean* GetUserType() const;
void setPrefix(const string &prefix);
void setUri(const string &uri);
1.3 +36 -19 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.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Param.cpp 30 Jun 2003 03:59:44 -0000 1.2
+++ Param.cpp 1 Jul 2003 03:44:39 -0000 1.3
@@ -165,6 +165,34 @@
return m_sValue;
}
+const string& Param::GetHexString()
+{
+ if (m_Type == XSD_HEXBINARY){}
+ else if (m_Type == XSD_UNKNOWN) //see GetInt() to see why we do this
+ {
+ m_Type = XSD_HEXBINARY;
+ }
+ else
+ {
+ //exception
+ }
+ return m_sValue;
+}
+
+const string& Param::GetBase64String()
+{
+ if (m_Type == XSD_BASE64BINARY){}
+ else if (m_Type == XSD_UNKNOWN) //see GetInt() to see why we do this
+ {
+ m_Type = XSD_BASE64BINARY;
+ }
+ else
+ {
+ //exception
+ }
+ return m_sValue;
+}
+
int Param::GetInt()
{
if (m_Type == XSD_INT){}
@@ -199,25 +227,6 @@
return m_Value.f;
}
-//This function may be called only for basic types
-const string& Param::ToString()
-{
- if (m_Type == XSD_STRING) return m_sValue;
- switch (m_Type)
- {
- case XSD_INT:
- sprintf(m_Buf,"%d", m_Value.n);
- break;
- case XSD_FLOAT:
- sprintf(m_Buf,"%f", m_Value.f);
- break;
- //Continue this for all basic types
- default:; //this is an unexpected situation
- }
- m_sValue = m_Buf;
- return m_sValue;
-}
-
XSDTYPE Param::GetType() const
{
return m_Type;
@@ -235,6 +244,12 @@
case XSD_STRING:
m_sSZ = BasicTypeSerializer::serialize(m_sName, m_sValue);
break;
+ case XSD_HEXBINARY:
+ m_sSZ = BasicTypeSerializer::serialize(m_sName, m_sValue, XSD_HEXBINARY);
+ break;
+ case XSD_BASE64BINARY:
+ m_sSZ = BasicTypeSerializer::serialize(m_sName, m_sValue, XSD_BASE64BINARY);
+ break;
case XSD_ARRAY:
//m_sSZ = "<abc:ArrayOfPhoneNumbers xmlns:abc="http://example.org/2001/06/numbers"
// xmlns:enc="http://www.w3.org/2001/06/soap-encoding"
@@ -307,6 +322,8 @@
m_Value.f = atof(sValue.c_str());
break;
case XSD_STRING:
+ case XSD_HEXBINARY:
+ case XSD_BASE64BINARY:
m_sValue = sValue;
break;
//Continue this for all basic types
1.2 +1 -1 xml-axis/c/src/common/BasicTypeSerializer.h
Index: BasicTypeSerializer.h
===================================================================
RCS file: /home/cvs/xml-axis/c/src/common/BasicTypeSerializer.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BasicTypeSerializer.h 25 Jun 2003 07:11:19 -0000 1.1
+++ BasicTypeSerializer.h 1 Jul 2003 03:44:39 -0000 1.2
@@ -79,7 +79,7 @@
class BasicTypeSerializer
{
public:
- static string& serialize(const string& sName, string& sValue);
+ static string& serialize(const string& sName, string& sValue, XSDTYPE type=XSD_STRING);
static string& serialize(const string& sName, float fValue);
static string& serialize(const string& sName, int nValue);
static const char* BasicTypeStr(XSDTYPE type);
1.2 +8 -6 xml-axis/c/src/common/BasicTypeSerializer.cpp
Index: BasicTypeSerializer.cpp
===================================================================
RCS file: /home/cvs/xml-axis/c/src/common/BasicTypeSerializer.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BasicTypeSerializer.cpp 25 Jun 2003 07:11:19 -0000 1.1
+++ BasicTypeSerializer.cpp 1 Jul 2003 03:44:39 -0000 1.2
@@ -100,9 +100,9 @@
return m_sSZ;
}
-string& BasicTypeSerializer::serialize(const string &sName, string &sValue)
+string& BasicTypeSerializer::serialize(const string &sName, string &sValue, XSDTYPE type)
{
- m_Type = XSD_STRING;
+ m_Type = type;
HelpSerialize(sName, sValue);
return m_sSZ;
}
@@ -114,12 +114,12 @@
m_sSZ +=" xsi:type=\"xsd:";
m_sSZ += BasicTypeStr(m_Type);
m_sSZ += "\">";
- if (m_Type == XSD_STRING)
+ switch (m_Type)
{
+ case XSD_STRING:
m_sSZ = sValue.c_str();
- }
- else
- {
+ break;
+ default:
m_sSZ += m_Buf;
}
m_sSZ += "</";
@@ -134,6 +134,8 @@
case XSD_INT: return "int";
case XSD_FLOAT: return "float";
case XSD_STRING: return "string";
+ case XSD_HEXBINARY: return "hexBinary";
+ case XSD_BASE64BINARY: return "base64Binary";
default: return " ";
}
}