Mercurial > repos > ktnyt > gembassy
comparison GEMBASSY-1.0.3/gsoap/custom/README.txt @ 0:8300eb051bea draft
Initial upload
author | ktnyt |
---|---|
date | Fri, 26 Jun 2015 05:19:29 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:8300eb051bea |
---|---|
1 | |
2 OVERVIEW | |
3 | |
4 This directory contains custom serializers for common data types. | |
5 | |
6 CONTENTS | |
7 | |
8 Custom serializers replace the soapcpp2-generated serialization routines. | |
9 See the notes in the source files on specific usage. | |
10 | |
11 The following serializers are available: | |
12 | |
13 long_double.* Serializes long double (extended double) type | |
14 struct_tm.* Serializes <time.h> struct tm | |
15 struct_timeval.* Serializes struct timeval (precision in usec) | |
16 duration.* Serializes LONG64 values as xsd:duration | |
17 | |
18 USAGE | |
19 | |
20 To use a custom serializer add an import statement to your gSOAP header file: | |
21 | |
22 #import "struct_tm.h" | |
23 | |
24 This replaces time_t for xsd__dateTime by struct tm. You can use xsd__dateTime | |
25 as XML elements and attributes: | |
26 | |
27 struct ns__example | |
28 { @xsd__dateTime start; // attribute | |
29 xsd__dateTime end; // element | |
30 }; | |
31 | |
32 Then compile with soapcpp2 and cc and link struct_tm.c | |
33 | |
34 HOW TO MODIFY TYPEMAP.DAT TO AUTOMATE THE MAPPING TO A CUSTOM TYPE WITH WSDL2H | |
35 | |
36 The mapping is specified in typemap.dat as follows: | |
37 | |
38 xsd__dateTime = #import "custom/struct_tm.h" | |
39 | |
40 which maps xsd:dateTime to struct tm when wsdl2h is applied to a WSDL. | |
41 | |
42 xsd__decimal = #import "custom/long_double.h" | long double | |
43 | |
44 this maps xsd:decimal to long double (the column after | specifies usage). | |
45 | |
46 IMPLEMENTING YOUR OWN CUSTOM SERIALIZERS | |
47 | |
48 To build your own custom serializers: a custom serializer is typically declared | |
49 in the imported file as follows | |
50 | |
51 extern typedef Type X; | |
52 | |
53 To implement custom serializers you should implement the following routines: | |
54 | |
55 void soap_default_X(struct soap*, X*); | |
56 sets default values for X | |
57 void soap_serialize_X(struct soap*, const X*); | |
58 analyzes X for id-ref serialization (maybe empty) | |
59 int soap_out_X(struct soap*, const char *tag, int id, const X*, const char *type); | |
60 emits X in XML as <tag xsi:type=type> (type is optional) | |
61 X *soap_in_X(struct soap*, const char *tag, X*, const char *type); | |
62 parses X from XML as <tag xsi:type=type> | |
63 | |
64 To support XML attribute serialization, you should also define: | |
65 | |
66 int soap_s2X(struct soap*, const char *value, X*); | |
67 converts string to X and returns SOAP_OK | |
68 const char *soap_X2s(struct soap*, X); | |
69 converts X to string (or NULL when error) |