Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 44143 invoked from network); 21 Jan 2005 17:08:03 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 21 Jan 2005 17:08:03 -0000 Received: (qmail 82048 invoked by uid 500); 21 Jan 2005 17:07:59 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 81992 invoked by uid 500); 21 Jan 2005 17:07:58 -0000 Mailing-List: contact axis-cvs-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-cvs@ws.apache.org Received: (qmail 81948 invoked by uid 99); 21 Jan 2005 17:07:58 -0000 X-ASF-Spam-Status: No, hits=-9.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from minotaur.apache.org (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Fri, 21 Jan 2005 09:07:57 -0800 Received: (qmail 44001 invoked by uid 1877); 21 Jan 2005 17:07:56 -0000 Date: 21 Jan 2005 17:07:56 -0000 Message-ID: <20050121170756.44000.qmail@minotaur.apache.org> From: dicka@apache.org To: ws-axis-cvs@apache.org Subject: cvs commit: ws-axis/c/src/soap/xsd Byte.cpp Byte.hpp X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N dicka 2005/01/21 09:07:56 Modified: c/src/common BasicTypeSerializer.cpp BasicTypeSerializer.h c/src/soap Makefile.am SoapDeSerializer.cpp SoapDeSerializer.h c/vc AxisClientDLL.dsp AxisServerDLL.dsp Added: c/src/soap/xsd Byte.cpp Byte.hpp Log: Add Byte type to Simple types OO model. Submitted by: Adrian Dick Revision Changes Path 1.43 +8 -4 ws-axis/c/src/common/BasicTypeSerializer.cpp Index: BasicTypeSerializer.cpp =================================================================== RCS file: /home/cvs/ws-axis/c/src/common/BasicTypeSerializer.cpp,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- BasicTypeSerializer.cpp 21 Jan 2005 15:53:29 -0000 1.42 +++ BasicTypeSerializer.cpp 21 Jan 2005 17:07:56 -0000 1.43 @@ -81,8 +81,10 @@ m_sSZ += m_Buf; break; case XSD_BYTE: - AxisSprintf (m_Buf, BTS_BUFFSIZE, "%d", *((char*)(pValue))); - m_sSZ += m_Buf; + { + Byte byteSerializer; + m_sSZ += byteSerializer.serialize(pValue); + } break; case XSD_UNSIGNEDBYTE: AxisSprintf (m_Buf, BTS_BUFFSIZE, "%u", @@ -302,8 +304,10 @@ m_sSZ += m_Buf; break; case XSD_BYTE: - AxisSprintf (m_Buf, BTS_BUFFSIZE, "%c", *((char*)(pValue))); - m_sSZ += m_Buf; + { + Byte byteSerializer; + m_sSZ += byteSerializer.serialize(pValue); + } break; case XSD_UNSIGNEDBYTE: AxisSprintf (m_Buf, BTS_BUFFSIZE, "%c", 1.27 +1 -0 ws-axis/c/src/common/BasicTypeSerializer.h Index: BasicTypeSerializer.h =================================================================== RCS file: /home/cvs/ws-axis/c/src/common/BasicTypeSerializer.h,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- BasicTypeSerializer.h 21 Jan 2005 15:53:29 -0000 1.26 +++ BasicTypeSerializer.h 21 Jan 2005 17:07:56 -0000 1.27 @@ -47,6 +47,7 @@ #include "../soap/xsd/Long.hpp" #include "../soap/xsd/Int.hpp" #include "../soap/xsd/Short.hpp" +#include "../soap/xsd/Byte.hpp" using namespace std; 1.19 +1 -0 ws-axis/c/src/soap/Makefile.am Index: Makefile.am =================================================================== RCS file: /home/cvs/ws-axis/c/src/soap/Makefile.am,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- Makefile.am 21 Jan 2005 15:53:29 -0000 1.18 +++ Makefile.am 21 Jan 2005 17:07:56 -0000 1.19 @@ -40,6 +40,7 @@ xsd/Time.cpp \ xsd/XSD_QName.cpp \ xsd/Short.cpp \ + xsd/Byte.cpp \ xsd/constraints/WhiteSpace.cpp \ xsd/constraints/Pattern.cpp \ xsd/constraints/MinLength.cpp \ 1.131 +25 -14 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.130 retrieving revision 1.131 diff -u -r1.130 -r1.131 --- SoapDeSerializer.cpp 21 Jan 2005 15:53:29 -0000 1.130 +++ SoapDeSerializer.cpp 21 Jan 2005 17:07:56 -0000 1.131 @@ -877,6 +877,7 @@ /* Following macros are used just to shorten the coding */ #define CONV_STRTOL(str) strtol(str, &m_pEndptr, 10) +#define CONV_STRTOBYTE(str) AxisSoapDeSerializerStringToByte(str) #define CONV_STRTOSHORT(str) AxisSoapDeSerializerStringToShort(str) #define CONV_STRTOINT(str) AxisSoapDeSerializerStringToInt(str) #define CONV_STRTOLONG(str) AxisSoapDeSerializerStringToLong(str) @@ -897,6 +898,12 @@ #define CONV_STRTOQNAME(str) AxisSoapDeSerializerStringToQName(str) #define CONV_STRTONOTATION(str) AxisSoapDeSerializerStringToNotation(str) +char AxisSoapDeSerializerStringToByte(const char *valueAsChar) +{ + Byte byteDeserializer; + return *(byteDeserializer.deserializeByte(valueAsChar)); +} + short AxisSoapDeSerializerStringToShort(const char *valueAsChar) { Short shortDeserializer; @@ -1158,7 +1165,7 @@ case XSD_UNSIGNEDSHORT: DESERIALIZE_ENCODED_ARRAY_BLOCK(unsigned short, CONV_STRTOUL) case XSD_BYTE: - DESERIALIZE_ENCODED_ARRAY_BLOCK (char, CONV_STRTOL) + DESERIALIZE_ENCODED_ARRAY_BLOCK (char, CONV_STRTOBYTE) case XSD_UNSIGNEDBYTE: DESERIALIZE_ENCODED_ARRAY_BLOCK (unsigned char, CONV_STRTOUL) case XSD_LONG: @@ -1245,7 +1252,7 @@ case XSD_UNSIGNEDSHORT: DESERIALIZE_LITERAL_ARRAY_BLOCK (unsigned short, CONV_STRTOUL) case XSD_BYTE: - DESERIALIZE_LITERAL_ARRAY_BLOCK (char, CONV_STRTOL) + DESERIALIZE_LITERAL_ARRAY_BLOCK (char, CONV_STRTOBYTE) case XSD_UNSIGNEDBYTE: DESERIALIZE_LITERAL_ARRAY_BLOCK (unsigned char, CONV_STRTOUL) case XSD_LONG: @@ -2291,9 +2298,10 @@ m_pNode = m_pParser->next (true); /* charactor node */ if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type)) { - ret = strtol (m_pNode->m_pchNameOrValue, &m_pEndptr, 10); - m_pNode = m_pParser->next (); /* skip end element node too */ - return ret; + Byte byteDeserializer; + ret = *( byteDeserializer.deserializeByte(m_pNode->m_pchNameOrValue)); + m_pNode = m_pParser->next (); /* skip end element node too */ + return ret; } } else @@ -2316,13 +2324,14 @@ m_pNode = m_pParser->next (true); /* charactor node */ if (m_pNode && (CHARACTER_ELEMENT == m_pNode->m_type)) { - ret = strtol (m_pNode->m_pchNameOrValue, &m_pEndptr, 10); - m_pNode = m_pParser->next (); /* skip end element node too */ - m_pNode = NULL; - /* this is important in doc/lit style when deserializing - * arrays - */ - return ret; + Byte byteDeserializer; + ret = *( byteDeserializer.deserializeByte(m_pNode->m_pchNameOrValue)); + m_pNode = m_pParser->next (); /* skip end element node too */ + m_pNode = NULL; + /* this is important in doc/lit style when deserializing + * arrays + */ + return ret; } else { @@ -4090,8 +4099,10 @@ strtoul (m_pNode->m_pchNameOrValue, &m_pEndptr, 10); break; case XSD_BYTE: - *((char *) (pValue)) = - (char) strtod (m_pNode->m_pchNameOrValue, &m_pEndptr); + { + Byte byteDeserializer; + pValue = byteDeserializer.deserialize(m_pNode->m_pchNameOrValue); + } break; case XSD_UNSIGNEDBYTE: *((unsigned char *) (pValue)) = 1.30 +1 -0 ws-axis/c/src/soap/SoapDeSerializer.h Index: SoapDeSerializer.h =================================================================== RCS file: /home/cvs/ws-axis/c/src/soap/SoapDeSerializer.h,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- SoapDeSerializer.h 21 Jan 2005 15:53:29 -0000 1.29 +++ SoapDeSerializer.h 21 Jan 2005 17:07:56 -0000 1.30 @@ -38,6 +38,7 @@ #include "xsd/Long.hpp" #include "xsd/Int.hpp" #include "xsd/Short.hpp" +#include "xsd/Byte.hpp" #include "../platforms/PlatformAutoSense.hpp" AXIS_CPP_NAMESPACE_START 1.29 +8 -0 ws-axis/c/vc/AxisClientDLL.dsp Index: AxisClientDLL.dsp =================================================================== RCS file: /home/cvs/ws-axis/c/vc/AxisClientDLL.dsp,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- AxisClientDLL.dsp 21 Jan 2005 15:06:56 -0000 1.28 +++ AxisClientDLL.dsp 21 Jan 2005 17:07:56 -0000 1.29 @@ -190,6 +190,10 @@ # End Source File # Begin Source File +SOURCE=..\src\soap\xsd\Byte.cpp +# End Source File +# Begin Source File + SOURCE=..\src\engine\client\Call.cpp # End Source File # Begin Source File @@ -331,6 +335,10 @@ # Begin Source File SOURCE=..\src\engine\SharedObject.cpp +# End Source File +# Begin Source File + +SOURCE=..\src\soap\xsd\Short.cpp # End Source File # Begin Source File 1.28 +8 -0 ws-axis/c/vc/AxisServerDLL.dsp Index: AxisServerDLL.dsp =================================================================== RCS file: /home/cvs/ws-axis/c/vc/AxisServerDLL.dsp,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- AxisServerDLL.dsp 21 Jan 2005 15:06:56 -0000 1.27 +++ AxisServerDLL.dsp 21 Jan 2005 17:07:56 -0000 1.28 @@ -194,6 +194,10 @@ # End Source File # Begin Source File +SOURCE=..\src\soap\xsd\Byte.cpp +# End Source File +# Begin Source File + SOURCE=..\src\soap\CharacterElement.cpp # End Source File # Begin Source File @@ -331,6 +335,10 @@ # Begin Source File SOURCE=..\src\engine\SharedObject.cpp +# End Source File +# Begin Source File + +SOURCE=..\src\soap\xsd\Short.cpp # End Source File # Begin Source File 1.1 ws-axis/c/src/soap/xsd/Byte.cpp Index: Byte.cpp =================================================================== #include "Byte.hpp" AXIS_CPP_NAMESPACE_START Byte::Byte():m_Byte(NULL) { } Byte::~Byte() { if (m_Byte) delete m_Byte; } AxisChar* Byte::serialize(const void* value) throw (AxisSoapException) { return serialize((char*) value); } void* Byte::deserializer(const AxisChar* valueAsChar) throw (AxisSoapException) { return (void*) deserializeByte(valueAsChar); } AxisChar* Byte::serialize(const char* value) throw (AxisSoapException) { short valueAsShort = static_cast(*value); return Short::serialize(&valueAsShort); } char* Byte::deserializeByte(const AxisChar* valueAsChar) throw (AxisSoapException) { short* returnValue = Short::deserializeShort(valueAsChar); if(m_Byte) { delete m_Byte; m_Byte = NULL; } m_Byte = new char; *m_Byte = static_cast (*returnValue); return m_Byte; } AXIS_CPP_NAMESPACE_END 1.1 ws-axis/c/src/soap/xsd/Byte.hpp Index: Byte.hpp =================================================================== /* -*- C++ -*- */ /* * Copyright 2003-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * * @author Adrian Dick (adrian.dick@uk.ibm.com) * */ #if !defined(_BYTE_HPP____OF_AXIS_INCLUDED_) #define _BYTE_HPP____OF_AXIS_INCLUDED_ #include "Short.hpp" AXIS_CPP_NAMESPACE_START using namespace std; class Byte : public Short { public: /** * Constructor */ Byte(); /** * Destructor */ ~Byte(); /** * Serialize value to it's on-the-wire string form. * @param value The value to be serialized. * @return Serialized form of value. */ AxisChar* serialize(const void* value) throw (AxisSoapException); /** * Deserialize value from it's on-the-wire string form. * @param valueAsChar Serialized form of value. * @return Deserialized value. */ void* deserializer(const AxisChar* valueAsChar) throw (AxisSoapException); /** * Serialize Byte value to it's on-the-wire string form. * @param value The Byte value to be serialized. * @return Serialized form of Byte value. */ AxisChar* serialize(const char* value) throw (AxisSoapException); /** * Deserialized Byte value from it's on-the-wire string form. * @param valueAsChar Serialized form of Byte value. * @return Deserialized Byte value. */ char* deserializeByte(const AxisChar* valueAsChar) throw (AxisSoapException); private: char* m_Byte; }; AXIS_CPP_NAMESPACE_END #endif