Mercurial > repos > ktnyt > gembassy
diff GEMBASSY-1.0.3/gsoap/custom/README.txt @ 2:8947fca5f715 draft default tip
Uploaded
author | ktnyt |
---|---|
date | Fri, 26 Jun 2015 05:21:44 -0400 |
parents | 84a17b3fad1f |
children |
line wrap: on
line diff
--- a/GEMBASSY-1.0.3/gsoap/custom/README.txt Fri Jun 26 05:20:29 2015 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ - -OVERVIEW - -This directory contains custom serializers for common data types. - -CONTENTS - -Custom serializers replace the soapcpp2-generated serialization routines. -See the notes in the source files on specific usage. - -The following serializers are available: - -long_double.* Serializes long double (extended double) type -struct_tm.* Serializes <time.h> struct tm -struct_timeval.* Serializes struct timeval (precision in usec) -duration.* Serializes LONG64 values as xsd:duration - -USAGE - -To use a custom serializer add an import statement to your gSOAP header file: - -#import "struct_tm.h" - -This replaces time_t for xsd__dateTime by struct tm. You can use xsd__dateTime -as XML elements and attributes: - -struct ns__example -{ @xsd__dateTime start; // attribute - xsd__dateTime end; // element -}; - -Then compile with soapcpp2 and cc and link struct_tm.c - -HOW TO MODIFY TYPEMAP.DAT TO AUTOMATE THE MAPPING TO A CUSTOM TYPE WITH WSDL2H - -The mapping is specified in typemap.dat as follows: - -xsd__dateTime = #import "custom/struct_tm.h" - -which maps xsd:dateTime to struct tm when wsdl2h is applied to a WSDL. - -xsd__decimal = #import "custom/long_double.h" | long double - -this maps xsd:decimal to long double (the column after | specifies usage). - -IMPLEMENTING YOUR OWN CUSTOM SERIALIZERS - -To build your own custom serializers: a custom serializer is typically declared -in the imported file as follows - -extern typedef Type X; - -To implement custom serializers you should implement the following routines: - -void soap_default_X(struct soap*, X*); - sets default values for X -void soap_serialize_X(struct soap*, const X*); - analyzes X for id-ref serialization (maybe empty) -int soap_out_X(struct soap*, const char *tag, int id, const X*, const char *type); - emits X in XML as <tag xsi:type=type> (type is optional) -X *soap_in_X(struct soap*, const char *tag, X*, const char *type); - parses X from XML as <tag xsi:type=type> - -To support XML attribute serialization, you should also define: - -int soap_s2X(struct soap*, const char *value, X*); - converts string to X and returns SOAP_OK -const char *soap_X2s(struct soap*, X); - converts X to string (or NULL when error)