Skip to content
Commits on Source (3)
Libzeep was developed to make it easy to create SOAP servers. And since working with SOAP means working with XML and no decent C++ XML library existed on my radar I've created a full XML library as well.
The XML part of libzeep consists of a validating parser, a DOM(-like) node implementation, an XPath search engine and a XML writer/formatter. The validation works based on DOCTYPE definitions, XML schema support will be added in a later release.
The performance of the parser is not optimal yet although it performs very decently. If speed is critical and you really need that few percent saving you can choose to use expat as a parser instead.
Please note that libzeep aims to provide a fully compliant XML processor as specified by the W3 organisation (see: http://www.w3.org/TR/xml ). This means it is as strict as the standard requires and it stops processing a file when a validation of the well-formedness is encountered, or when a document appears to be invalid when it is in validating mode. Error reporting is done in this case, although I admit that error reporting should be improved.
The SOAP server part of libzeep makes it very easy to create a SOAP server software in C++. You use it to export a C++ object's methods as SOAP actions. The library generates a WSDL on-the-fly for the exported actions and it also has a REST style interface.
libzeep requires the Boost libraries and currently requires at least version 1.36 of Boost since it uses the new asio library for network I/O. The current version of libzeep has been tested with boost 1.39 and newer only.
To use libzeep, you have to edit the makefile and make sure the paths to your installation of boost libraries are correct. After this you simply type 'make zeep-test' and a 'zeep-test' executable is build. You can also cd into the tests directory and build the two test applications called xpath-test and parser-test. For Windows users there's a VC solution file in the msvc directory.
XML Library -- usage
Using the XML library of libzeep is fairly trivial. The first class you use is the zeep::xml::document class. You can use this class to read XML files and write them out again. Reading and writing is strictly done using stl iostreams. Make sure you open these streams in binary mode, random parsing errors will occur if you don't when running in Windows.
[![Build Status](https://travis-ci.org/mhekkel/libzeep.svg?branch=master)](https://travis-ci.org/mhekkel/libzeep)
About libzeep
=============
Libzeep was developed to make it easy to create SOAP servers. And since
working with SOAP means working with XML and no decent C++ XML library
existed on my radar I've created a full XML library as well.
The XML part of libzeep consists of a validating parser, a DOM(-like) node
implementation, an XPath search engine and a XML writer/formatter. The
validation works based on DOCTYPE definitions, XML schema support will be
added in a later release.
The performance of the parser is not optimal yet although it performs very
decently. If speed is critical and you really need that few percent saving
you can choose to use expat as a parser instead.
Please note that libzeep aims to provide a fully compliant XML processor as
specified by the W3 organisation (see: http://www.w3.org/TR/xml ). This means
it is as strict as the standard requires and it stops processing a file when
a validation of the well-formedness is encountered, or when a document
appears to be invalid when it is in validating mode. Error reporting is done
in this case, although I admit that error reporting should be improved.
The SOAP server part of libzeep makes it very easy to create a SOAP server
software in C++. You use it to export a C++ object's methods as SOAP actions.
The library generates a WSDL on-the-fly for the exported actions and it also
has a REST style interface.
libzeep requires the Boost libraries and currently requires at least version
1.36 of Boost since it uses the new asio library for network I/O. The current
version of libzeep has been tested with boost 1.55 and newer only.
To use libzeep, you have to edit the makefile and make sure the paths to your
installation of boost libraries are correct. After this you simply type
`make zeep-test` and a `zeep-test` executable is build. You can also cd into
the tests directory and build the two test applications called xpath-test and
parser-test. For Windows users there's a VC solution file in the msvc
directory.
Full documentation for libzeep in docbook format can be found at
[www.hekkelman.com/libzeep-doc](http://www.hekkelman.com/libzeep-doc/)
## XML Library -- usage
Using the XML library of libzeep is fairly trivial. The first class you use
is the `zeep::xml::document` class. You can use this class to read XML files
and write them out again. Reading and writing is strictly done using stl
iostreams. Make sure you open these streams in binary mode, random parsing
errors will occur if you don't when running in Windows.
#include <fstream>
#include "zeep/xml/document.hpp"
......@@ -29,22 +63,34 @@ Using the XML library of libzeep is fairly trivial. The first class you use is t
ifstream file("/...", ios::binary); // avoid CRLF translation
file >> doc;
Now that you have a document, you can walk its content which is organised in nodes. There are several nodes classes, the most interesting for most is xml::element. These elements can have children, some of which are also elements.
Now that you have a document, you can walk its content which is organised in
nodes. There are several nodes classes, the most interesting for most is
`xml::element`. These elements can have children, some of which are also
elements.
Internally the nodes are stored as linked lists. However, to conform to STL coding practices, xml::element can used like a container. The iterator of xml::element (which it inherits from its base class xml::container) only returns child xml::element objects skipping over comments and processing instructions.
Internally the nodes are stored as linked lists. However, to conform to STL
coding practices, `xml::element` can used like a container. The iterator of
`xml::element` (which it inherits from its base class `xml::container`) only
returns child `xml::element` objects skipping over comments and processing
instructions.
So, to iterate over all elements directly under the first element of a document, we do something like this:
So, to iterate over all elements directly under the first element of a
document, we do something like this:
xml::element& first = *doc.child();
for (xml::document::iterator e = first.begin(); e != first.end(); ++e)
cout << e.name() << endl;
Likewise you can iterate over the attributes of an xml::element, like this:
Likewise you can iterate over the attributes of an `xml::element`, like this:
for (xml::element::attribute_iterator a = e.attr_begin(); a != e.attr_end(); ++a)
cout << a->name() << endl;
More often you're interested in a specific element among many others. Now you can recursively iterate the tree until you've found what you're looking for, but it is way easier to use xpaths in that case. Let say you need the element 'book' having an attribute 'title' with value 'Du côté de chez Swann', you could do this:
More often you're interested in a specific element among many others. Now you
can recursively iterate the tree until you've found what you're looking for,
but it is way easier to use xpaths in that case. Let say you need the element
`book` having an attribute `title` with value *Du côté de chez Swann*, you
could do this:
xml::element* book = doc.find("//book[@title='Du côté de chez Swann']");
......@@ -56,15 +102,18 @@ And the content, contained in the text nodes of an element:
cout << book->content() << endl;
And writing out an XML file again can be done by writing an xml::document:
And writing out an XML file again can be done by writing an `xml::document`:
cout << doc;
Or by using xml::writer directly.
Or by using `xml::writer` directly.
libzeep has XML Namespace support. The qname method of the nodes returns a qualified name, that is the namespace prefix, a colon and the localname contatenated. (Something like 'ns:book'). The method name() returns the qname() with its prefix stripped off.
libzeep has XML Namespace support. The qname method of the nodes returns a
qualified name, that is the namespace prefix, a colon and the localname
contatenated. (Something like `ns:book`). The method name() returns the
qname() with its prefix stripped off.
SOAP Server -- usage
## SOAP Server -- usage
Have a look at the zeep-test.cpp file to see how to create a server. This
example server is not entirely trivial since it has three exported methods
......@@ -86,7 +135,7 @@ that allow more than one value.
The steps to create a server are:
Create a new server object that derives from soap::server. The constructor
Create a new server object that derives from `soap::server`. The constructor
of this object should call the inherited constructor passing it the
namespace and the service name for this new SOAP server as well as the
internet address and port to listen to.
......@@ -102,11 +151,11 @@ action in the WSDL. To the outside world this method will look like it has
multiple output parameters. This was done to be compatible with another
popular SOAP tool but the result may be a bit confusing at times.
To register the methods you have to call the inherited 'register_action'
To register the methods you have to call the inherited `register_action`
method which takes four parameters:
- the name of the action as it is published
- the pointer for your server object, usually it is 'this'.
- the pointer for your server object, usually it is `this`.
- a pointer to the method of your server object you want to export
- an array of pointers to the exported names for each of the parameters
of the exported method/action. The size of this array should be exactly
......@@ -133,14 +182,14 @@ The next thing you need for each struct is to set its exported name using the
SOAP_XML_SET_STRUCT_NAME macro.
And that's it. The moment the constructor is done, your server is ready to
run. You can start it by calling the 'run' method, normally you do this from
run. You can start it by calling the `run` method, normally you do this from
a new thread. The servers will start listening to the address and port you
specified. Beware though that the server is multithreaded and so your exported
methods should be reentrant. The number of threads the server will use can be
specified in the constructor of the soap::server base class.
specified in the constructor of the `soap::server` base class.
If your server is behind a reverse proxy, you set the actual location in the
WSDL from which it is accessible by calling the server's set_location method.
WSDL from which it is accessible by calling the server's `set_location` method.
Inside your server method you have access to the ostream object used to write
out log entries by using the inherited log() member function.
......@@ -148,6 +197,6 @@ out log entries by using the inherited log() member function.
That's it.
This is a first release, please send all the problems and/or bugs you encounter
to: m.hekkelman@cmbi.ru.nl
to: maarten@hekkelman.com
-maarten hekkelman
libzeep (3.0.5-1) UNRELEASED; urgency=medium
* New upstream version
-- Maarten L. Hekkelman <maarten@hekkelman.com> Thu, 09 May 2019 11:25:15 +0200
libzeep (3.0.2-7) unstable; urgency=medium
[ Andreas Tille ]
......
Source: libzeep
Maintainer: Debian Med Packaging Team <debian-med-packaging@lists.alioth.debian.org>
Uploaders: Maarten L. Hekkelman <m.hekkelman@cmbi.ru.nl>,
Uploaders: Maarten L. Hekkelman <maarten@hekkelman.com>,
Andreas Tille <tille@debian.org>
Section: libs
Priority: optional
......@@ -14,7 +14,7 @@ Build-Depends: debhelper (>= 11~),
Standards-Version: 4.2.1
Vcs-Browser: https://salsa.debian.org/med-team/libzeep
Vcs-Git: https://salsa.debian.org/med-team/libzeep.git
Homepage: http://sourceforge.net/projects/libzeep/
Homepage: http://github.com/mhekkel/libzeep
Package: libzeep-dev
Architecture: any
......
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: libzeep
Upstream-Contact: Maarten L. Hekkelman <m.hekkelman@cmbi.ru.nl>
Upstream-Contact: Maarten L. Hekkelman <maarten@hekkelman.com>
Source: http://www.cmbi.ru.nl/libzeep/
Files: *
Copyright: © 2009-2014, Maarten L. Hekkelman <m.hekkelman@cmbi.ru.nl>
Copyright: © 2009-2019, Maarten L. Hekkelman <maarten@hekkelman.com>
License: Boost-1.0
Files: debian/*
Copyright: © 2014, Maarten L. Hekkelman <m.hekkelman@cmbi.ru.nl>
Copyright: © 2014-2019, Maarten L. Hekkelman <maarten@hekkelman.com>
License: Boost-1.0
License: Boost-1.0
......
Document: libzeep-dev
Title: Libzeep documentation
Author: Maarten L. Hekkelman <m.hekkelman@cmbi.ru.nl>
Author: Maarten L. Hekkelman <maarten@hekkelman.com>
Abstract: This manual documents the libzeep API.
Section: Programming
Format: HTML
Index: /usr/share/doc/libzeep-dev/index.html
Files: /usr/share/doc/libzeep-dev/*.html
/usr/share/doc/libzeep-dev/index/*.html
/usr/share/doc/libzeep-dev/libzeep/*.html
/usr/share/doc/libzeep-dev/zeep/*.html
/usr/share/doc/libzeep-dev/zeep/http/*.html
/usr/share/doc/libzeep-dev/zeep/http/el/*.html
/usr/share/doc/libzeep-dev/zeep/http/el/object/*.html
/usr/share/doc/libzeep-dev/zeep/http/preforked_server_base/*.html
/usr/share/doc/libzeep-dev/zeep/xml/*.html
/usr/share/doc/libzeep-dev/zeep/xml/container/*.html
/usr/share/doc/libzeep-dev/zeep/xml/doctype/*.html
/usr/share/doc/libzeep-dev/zeep/xml/element/*.html
Index: /usr/share/doc/libzeep-dev/html/index.html
Files: /usr/share/doc/libzeep-dev/html/*.html
/usr/share/doc/libzeep-dev/html/index/*.html
/usr/share/doc/libzeep-dev/html/libzeep/*.html
/usr/share/doc/libzeep-dev/html/zeep/*.html
/usr/share/doc/libzeep-dev/html/zeep/xml/*.html
/usr/share/doc/libzeep-dev/html/zeep/xml/doctype/*.html
/usr/share/doc/libzeep-dev/html/zeep/xml/element/*.html
/usr/share/doc/libzeep-dev/html/zeep/xml/container/*.html
/usr/share/doc/libzeep-dev/html/zeep/http/*.html
/usr/share/doc/libzeep-dev/html/zeep/http/basic_webapp/*.html
/usr/share/doc/libzeep-dev/html/zeep/http/el/*.html
/usr/share/doc/libzeep-dev/html/zeep/http/el/object/*.html
......@@ -7,30 +7,15 @@ Description: assorted fixes
Author: Maarten L. Hekkelman <m.hekkelman@cmbi.ru.nl>
--- a/src/preforked-http-server.cpp
+++ b/src/preforked-http-server.cpp
@@ -42,8 +42,11 @@
{
kill(m_pid, SIGKILL);
@@ -23,6 +23,11 @@
- int status;
- waitpid(m_pid, &status, WUNTRACED | WCONTINUED);
+ int status, flags = WUNTRACED;
+#ifdef WCONTINUED
+ flags |= WCONTINUED;
+#endif
+ waitpid(m_pid, &status, flags);
}
m_io_service.stop();
@@ -149,7 +152,11 @@
#include <sys/wait.h>
while (count-- > 0)
{
- if (waitpid(m_pid, &status, WUNTRACED | WCONTINUED | WNOHANG) == -1)
+ int flags = WUNTRACED | WNOHANG;
+#ifdef WCONTINUED
+ flags |= WCONTINUED;
+// for Hurd
+#if not defined(WCONTINUED)
+#define WCONTINUED 0
+#endif
+ if (waitpid(m_pid, &status, flags) == -1)
break;
+
using namespace std;
if (WIFEXITED(status))
namespace zeep { namespace http {
--- a/doc/Jamfile.v2
+++ b/doc/Jamfile.v2
@@ -1,3 +1,11 @@
+using xsltproc ;
+using boostbook
+ : /usr/share/xml/docbook/stylesheet/nwalsh
+ : /usr/share/xml/docbook/schema/dtd/4.2
+ ;
+using doxygen ;
+using quickbook ;
+
doxygen autodoc
:
[ glob ../zeep/*.hpp ]
......@@ -19,7 +19,7 @@ Author: Maarten L. Hekkelman <m.hekkelman@cmbi.ru.nl>
-LIBDIR ?= $(PREFIX)/lib
-INCDIR ?= $(PREFIX)/include
-MANDIR ?= $(PREFIX)/man/man3
-DOCDIR ?= $(PREFIX)/share/libzeep
-DOCDIR ?= $(PREFIX)/share/doc/libzeep-doc
+LIBDIR = $(DESTDIR)/usr/lib
+INCDIR = $(DESTDIR)/usr/include
+MANDIR = $(DESTDIR)/usr/share/man/man3
......@@ -29,26 +29,25 @@ Author: Maarten L. Hekkelman <m.hekkelman@cmbi.ru.nl>
+CXXFLAGS += $(shell dpkg-buildflags --get CPPFLAGS)
+LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
BOOST_LIBS = system thread filesystem regex math_c99
BOOST_LIBS = system thread filesystem regex math_c99 random
BOOST_LIBS := $(BOOST_LIBS:%=boost_%$(BOOST_LIB_SUFFIX))
@@ -31,12 +29,10 @@
SO_NAME = libzeep.so.$(VERSION_MAJOR)
@@ -32,13 +30,9 @@
LIB_NAME = $(SO_NAME).$(VERSION_MINOR)
-CXX ?= c++
-CFLAGS += -O2 $(BOOST_INC_DIR:%=-I%) -I. -fPIC -pthread -shared -std=c++0x
CXX ?= c++
-#CFLAGS += -O2 $(BOOST_INC_DIR:%=-I%) -I. -fPIC -pthread -std=c++11 -stdlib=libc++
-CFLAGS += -O2 $(BOOST_INC_DIR:%=-I%) -I. -fPIC -pthread -std=c++11
-#CFLAGS += -g $(BOOST_INC_DIR:%=-I%) -I. -fPIC -pthread -shared # -std=c++0x
-CFLAGS += -Wall
-CFLAGS += -g
-LD ?= ld
+CXX ?= c++
+CXXFLAGS += -O2 -I. -fPIC -pthread -shared -std=c++0x
+CXXFLAGS += -O2 -I. -fPIC -pthread -shared -std=c++11
+CXXFLAGS += -Wall
+LD ?= ld
LD ?= ld
-LD_CONFIG ?= ldconfig
VPATH += src
@@ -60,7 +56,7 @@
@@ -63,7 +57,7 @@
obj/xpath.o \
obj/writer.o
......@@ -56,18 +55,33 @@ Author: Maarten L. Hekkelman <m.hekkelman@cmbi.ru.nl>
+lib: libzeep.so
libzeep.a: $(OBJECTS)
ld -r -o $@ $(OBJECTS)
@@ -113,8 +109,6 @@
for d in . images libzeep zeep zeep/http zeep/http/preforked_server_base zeep/http/el \
zeep/http/el/object zeep/xml zeep/xml/doctype zeep/xml/container zeep/xml/element \
index; do install -d $(DOCDIR)/$$d; install doc/html/$$d/*.* $(DOCDIR)/$$d; done;
ar rc $@ $(OBJECTS)
@@ -88,14 +82,10 @@
install $(LIB_NAME) $(LIBDIR)/$(LIB_NAME)
strip --strip-unneeded $(LIBDIR)/$(LIB_NAME)
ln -Tfs $(LIB_NAME) $(LIBDIR)/$(SO_NAME)
- ln -Tfs $(LIB_NAME) $(LIBDIR)/libzeep.so
- $(LD_CONFIG) -n $(LIBDIR)
-install-dev: libzeep.a
+install-dev:
install -d $(LIBDIR) $(INCDIR)/zeep/xml $(INCDIR)/zeep/http $(INCDIR)/zeep/http/webapp
for f in `find zeep -name "*.hpp"`; do install $$f $(INCDIR)/$$f; done
- install ./libzeep.a $(LIBDIR)/libzeep.a
- strip -SX $(LIBDIR)/libzeep.a
ln -Tfs $(LIB_NAME) $(LIBDIR)/libzeep.so
install: install-libs install-dev
@@ -129,7 +123,7 @@
cp $(DIST_NAME).tgz ../ppa/libzeep_$(VERSION).orig.tar.gz
install-doc: doc
install -d $(MANDIR) $(DOCDIR)/html
@@ -110,7 +100,6 @@
mkdir -p $(DIST_NAME)
git archive master | tar xC $(DIST_NAME)
find doc/html -depth | cpio -pd $(DIST_NAME)
- rm -rf $(DIST_NAME)/tests
tar czf $(DIST_NAME).tgz $(DIST_NAME)
rm -rf $(DIST_NAME)
@@ -118,12 +107,12 @@
cd doc; bjam
obj/%.o: %.cpp | obj
- $(CXX) -MD -c -o $@ $< $(CFLAGS)
......@@ -75,12 +89,9 @@ Author: Maarten L. Hekkelman <m.hekkelman@cmbi.ru.nl>
obj:
mkdir -p obj
@@ -138,8 +132,5 @@
-include $(OBJECTS:%.o=%.d)
+-include $(OBJECTS:%.o=%.d)
$(OBJECTS:.o=.d):
-test: libzeep.a
- make -C tests
-
clean:
rm -rf obj/* libzeep.a libzeep.so* zeep-test $(DIST_NAME) $(DIST_NAME).tgz
hurd-patch
makefile.diff
linking-order.diff
libzeep-3.0-g++6-boost1.60.patch
spelling.patch
boost-1.65-compat.patch
0007-Fix-for-Boost-version-1.67.patch
......@@ -4,7 +4,7 @@ Last-Update: Tue, 28 Nov 2017 08:32:15 +0100
--- a/src/xpath.cpp
+++ b/src/xpath.cpp
@@ -1879,7 +1879,7 @@ string xpath_imp::describe_token(Token t
@@ -1882,7 +1882,7 @@
case xp_NodeType: result << "node type specification"; break;
case xp_OperatorUnion: result << "union operator"; break;
case xp_OperatorAdd: result << "addition operator"; break;
......
......@@ -12,4 +12,4 @@ override_dh_auto_build:
override_dh_auto_install:
$(MAKE) DESTDIR=$(CURDIR)/debian/libzeep3.0v5 install-libs
$(MAKE) DESTDIR=$(CURDIR)/debian/libzeep-dev install-dev
$(MAKE) DESTDIR=$(CURDIR)/debian/libzeep-dev install-dev install-doc
doc/html/images/callouts/1.png
doc/html/images/callouts/2.png
doc/html/images/callouts/3.png
doc/html/images/callouts/4.png
doc/html/images/callouts/5.png
doc/html/images/callouts/6.png
doc/html/images/callouts/7.png
doc/html/images/callouts/8.png
doc/html/images/callouts/9.png
doc/html/images/callouts/10.png
doc/html/images/callouts/11.png
doc/html/images/callouts/12.png
doc/html/images/callouts/13.png
doc/html/images/callouts/14.png
doc/html/images/callouts/15.png
extend-diff-ignore = "(^|/)(.vscode/.*|msvc|\.gitignore|\.travis\.yml|tests|zeep-test.*|webapp-test.cpp)$"
# Note: May be it is better to point to sf.net ???
version=3
opts="pasv" \
ftp://ftp.cmbi.ru.nl/pub/software/libzeep/libzeep-([0-9.]+).t[bg]z debian uupdate
version=4
opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/libzeep-$1\.tar\.gz/ \
https://github.com/mhekkel/libzeep/tags .*/v?(\d\S+)\.tar\.gz
......@@ -3,17 +3,15 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Macro SOAP_SERVER_HAS_PREFORK</title>
<link rel="stylesheet" href="boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="libzeep 3.0">
<link rel="up" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.config_hpp" title="Header &lt;/home/maarten/projects/libzeep/zeep/config.hpp&gt;">
<link rel="up" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.config_hpp" title="Header &lt;/home/maarten/projects/libzeep@debian/zeep/config.hpp&gt;">
<link rel="prev" href="SOAP_XML_HAS_EXPAT_SUPPORT.html" title="Macro SOAP_XML_HAS_EXPAT_SUPPORT">
<link rel="next" href="zeep/dispatcher.html" title="Class dispatcher">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="SOAP_XML_HAS_EXPAT_SUPPORT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="zeep/dispatcher.html"><img src="images/next.png" alt="Next"></a>
<a accesskey="p" href="SOAP_XML_HAS_EXPAT_SUPPORT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="zeep/dispatcher.html"><img src="images/next.png" alt="Next"></a>
</div>
<div class="refentry">
<a name="SOAP_SERVER_HAS_PREFORK"></a><div class="titlepage"></div>
......@@ -22,17 +20,17 @@
<p>SOAP_SERVER_HAS_PREFORK</p>
</div>
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.config_hpp" title="Header &lt;/home/maarten/projects/libzeep/zeep/config.hpp&gt;">/home/maarten/projects/libzeep/zeep/config.hpp</a>&gt;
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.config_hpp" title="Header &lt;/home/maarten/projects/libzeep@debian/zeep/config.hpp&gt;">/home/maarten/projects/libzeep@debian/zeep/config.hpp</a>&gt;
</span>SOAP_SERVER_HAS_PREFORK</pre></div>
<div class="refsect1">
<a name="idp35662064"></a><h2>Description</h2>
<a name="idm1866"></a><h2>Description</h2>
<p>The http server implementation in libzeep can use a preforked mode. That means the main process listens to a network port and passes the socket to a client process for doing the actual handling. The advantages for a setup like this is that if the client fails, the server can detect this and restart the client thereby guaranteeing a better uptime. </p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2012 Maarten L. Hekkelman<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2012-2019 Maarten L. Hekkelman<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
......@@ -40,7 +38,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="SOAP_XML_HAS_EXPAT_SUPPORT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="zeep/dispatcher.html"><img src="images/next.png" alt="Next"></a>
<a accesskey="p" href="SOAP_XML_HAS_EXPAT_SUPPORT.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="zeep/dispatcher.html"><img src="images/next.png" alt="Next"></a>
</div>
</body>
</html>
......@@ -3,17 +3,15 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Macro SOAP_XML_ADD_ENUM</title>
<link rel="stylesheet" href="boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="libzeep 3.0">
<link rel="up" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.xml.serialize_hpp" title="Header &lt;/home/maarten/projects/libzeep/zeep/xml/serialize.hpp&gt;">
<link rel="up" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp" title="Header &lt;/home/maarten/projects/libzeep@debian/zeep/xml/serialize.hpp&gt;">
<link rel="prev" href="SOAP_XML_SET_STRUCT_NAME.html" title="Macro SOAP_XML_SET_STRUCT_NAME">
<link rel="next" href="zeep/xml/unicode.html" title="Type definition unicode">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="SOAP_XML_SET_STRUCT_NAME.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.xml.serialize_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="zeep/xml/unicode.html"><img src="images/next.png" alt="Next"></a>
<a accesskey="p" href="SOAP_XML_SET_STRUCT_NAME.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="zeep/xml/unicode.html"><img src="images/next.png" alt="Next"></a>
</div>
<div class="refentry">
<a name="SOAP_XML_ADD_ENUM"></a><div class="titlepage"></div>
......@@ -22,21 +20,21 @@
<p>SOAP_XML_ADD_ENUM &#8212; A macro to add the name of an enum value to the serializer. </p>
</div>
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.xml.serialize_hpp" title="Header &lt;/home/maarten/projects/libzeep/zeep/xml/serialize.hpp&gt;">/home/maarten/projects/libzeep/zeep/xml/serialize.hpp</a>&gt;
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp" title="Header &lt;/home/maarten/projects/libzeep@debian/zeep/xml/serialize.hpp&gt;">/home/maarten/projects/libzeep@debian/zeep/xml/serialize.hpp</a>&gt;
</span>SOAP_XML_ADD_ENUM(e, v)</pre></div>
<div class="refsect1">
<a name="idp45478992"></a><h2>Description</h2>
<p>To be able to correctly use enum values in a WSDL file or when serializing, you have to specify the enum values.</p>
<a name="idm22118"></a><h2>Description</h2>
<p>To be able to correctly use enum values in a schema file or when serializing, you have to specify the enum values.</p>
<p>E.g., if you have a struct name Algorithm with values 'vector', 'dice' and 'jaccard' you would write:</p>
<p>&gt; enum Algorithm { vector, dice, jaccard }; &gt; SOAP_XML_ADD_ENUM(Algorithm, vector); &gt; SOAP_XML_ADD_ENUM(Algorithm, dice); &gt; SOAP_XML_ADD_ENUM(Algorithm, jaccard);</p>
<div class="blockquote"><blockquote class="blockquote"><p>enum Algorithm { vector, dice, jaccard }; SOAP_XML_ADD_ENUM(Algorithm, vector); SOAP_XML_ADD_ENUM(Algorithm, dice); SOAP_XML_ADD_ENUM(Algorithm, jaccard); </p></blockquote></div>
<p>An alternative (better?) way to do this is:</p>
<p>&gt; zeep::xml::enum_map&lt;Algorithm&gt;::instance("Algorithm").add_enum() &gt; ("vector", vector) &gt; ("dice", dice) &gt; ("jaccard", jaccard); </p>
<div class="blockquote"><blockquote class="blockquote"><p>zeep::xml::enum_map&lt;Algorithm&gt;::instance("Algorithm").add_enum() ("vector", vector) ("dice", dice) ("jaccard", jaccard); </p></blockquote></div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2012 Maarten L. Hekkelman<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2012-2019 Maarten L. Hekkelman<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
......@@ -44,7 +42,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="SOAP_XML_SET_STRUCT_NAME.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.xml.serialize_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="zeep/xml/unicode.html"><img src="images/next.png" alt="Next"></a>
<a accesskey="p" href="SOAP_XML_SET_STRUCT_NAME.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="zeep/xml/unicode.html"><img src="images/next.png" alt="Next"></a>
</div>
</body>
</html>
......@@ -3,17 +3,15 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Macro SOAP_XML_HAS_EXPAT_SUPPORT</title>
<link rel="stylesheet" href="boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="libzeep 3.0">
<link rel="up" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.config_hpp" title="Header &lt;/home/maarten/projects/libzeep/zeep/config.hpp&gt;">
<link rel="up" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.config_hpp" title="Header &lt;/home/maarten/projects/libzeep@debian/zeep/config.hpp&gt;">
<link rel="prev" href="index/s05.html" title="Reference">
<link rel="next" href="SOAP_SERVER_HAS_PREFORK.html" title="Macro SOAP_SERVER_HAS_PREFORK">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="index/s05.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="SOAP_SERVER_HAS_PREFORK.html"><img src="images/next.png" alt="Next"></a>
<a accesskey="p" href="index/s05.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="SOAP_SERVER_HAS_PREFORK.html"><img src="images/next.png" alt="Next"></a>
</div>
<div class="refentry">
<a name="SOAP_XML_HAS_EXPAT_SUPPORT"></a><div class="titlepage"></div>
......@@ -22,17 +20,17 @@
<p>SOAP_XML_HAS_EXPAT_SUPPORT</p>
</div>
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.config_hpp" title="Header &lt;/home/maarten/projects/libzeep/zeep/config.hpp&gt;">/home/maarten/projects/libzeep/zeep/config.hpp</a>&gt;
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.config_hpp" title="Header &lt;/home/maarten/projects/libzeep@debian/zeep/config.hpp&gt;">/home/maarten/projects/libzeep@debian/zeep/config.hpp</a>&gt;
</span>SOAP_XML_HAS_EXPAT_SUPPORT</pre></div>
<div class="refsect1">
<a name="idp35657888"></a><h2>Description</h2>
<a name="idm1852"></a><h2>Description</h2>
<p>Libzeep comes with its own XML parser implementation. If you prefer you can use expat instead. To do so you have to define the SOAP_XML_HAS_EXPAT_SUPPORT flag and then you can call the zeep::xml::document::set_parser_type function to specify expat. </p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2012 Maarten L. Hekkelman<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2012-2019 Maarten L. Hekkelman<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
......@@ -40,7 +38,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="index/s05.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="SOAP_SERVER_HAS_PREFORK.html"><img src="images/next.png" alt="Next"></a>
<a accesskey="p" href="index/s05.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.config_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="SOAP_SERVER_HAS_PREFORK.html"><img src="images/next.png" alt="Next"></a>
</div>
</body>
</html>
......@@ -3,17 +3,15 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Macro SOAP_XML_SET_STRUCT_NAME</title>
<link rel="stylesheet" href="boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="libzeep 3.0">
<link rel="up" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.xml.serialize_hpp" title="Header &lt;/home/maarten/projects/libzeep/zeep/xml/serialize.hpp&gt;">
<link rel="prev" href="zeep/xml/wsdl_creator.html" title="Struct wsdl_creator">
<link rel="up" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp" title="Header &lt;/home/maarten/projects/libzeep@debian/zeep/xml/serialize.hpp&gt;">
<link rel="prev" href="ZEEP_ATTRIBUTE_NAME_VALUE.html" title="Macro ZEEP_ATTRIBUTE_NAME_VALUE">
<link rel="next" href="SOAP_XML_ADD_ENUM.html" title="Macro SOAP_XML_ADD_ENUM">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="zeep/xml/wsdl_creator.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.xml.serialize_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="SOAP_XML_ADD_ENUM.html"><img src="images/next.png" alt="Next"></a>
<a accesskey="p" href="ZEEP_ATTRIBUTE_NAME_VALUE.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="SOAP_XML_ADD_ENUM.html"><img src="images/next.png" alt="Next"></a>
</div>
<div class="refentry">
<a name="SOAP_XML_SET_STRUCT_NAME"></a><div class="titlepage"></div>
......@@ -22,19 +20,19 @@
<p>SOAP_XML_SET_STRUCT_NAME &#8212; A macro to assign a name to a struct used in serialization. </p>
</div>
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.xml.serialize_hpp" title="Header &lt;/home/maarten/projects/libzeep/zeep/xml/serialize.hpp&gt;">/home/maarten/projects/libzeep/zeep/xml/serialize.hpp</a>&gt;
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp" title="Header &lt;/home/maarten/projects/libzeep@debian/zeep/xml/serialize.hpp&gt;">/home/maarten/projects/libzeep@debian/zeep/xml/serialize.hpp</a>&gt;
</span>SOAP_XML_SET_STRUCT_NAME(s)</pre></div>
<div class="refsect1">
<a name="idp45472912"></a><h2>Description</h2>
<a name="idm22102"></a><h2>Description</h2>
<p>By default, libzeep uses the typeid(s).name() as the name for an element. That's often not what is intented. Calling this macro will make sure the type name you used in your code will be used instead.</p>
<p>E.g., struct FindResult { ... } might end up with a fancy name in the WSDL. To use FindResult instead, call SOAP_XML_SET_STRUCT_NAME(FindResult);</p>
<p>An alternative it to call, which allows different WSDL and struct names: zeep::xml::serialize_struct&lt;FindResult&gt;::set_struct_name("FindResult"); </p>
<p>E.g., struct FindResult { ... } might end up with a mangled name in the schema. To use FindResult instead, call SOAP_XML_SET_STRUCT_NAME(FindResult);</p>
<p>An alternative is to call, which allows different schema and struct names: zeep::xml::struct_serializer&lt;FindResult&gt;::set_struct_name("FindResult"); </p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2012 Maarten L. Hekkelman<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2012-2019 Maarten L. Hekkelman<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
......@@ -42,7 +40,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="zeep/xml/wsdl_creator.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep.zeep.xml.serialize_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="SOAP_XML_ADD_ENUM.html"><img src="images/next.png" alt="Next"></a>
<a accesskey="p" href="ZEEP_ATTRIBUTE_NAME_VALUE.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="SOAP_XML_ADD_ENUM.html"><img src="images/next.png" alt="Next"></a>
</div>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Macro ZEEP_ATTRIBUTE_NAME_VALUE</title>
<link rel="stylesheet" href="boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="libzeep 3.0">
<link rel="up" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp" title="Header &lt;/home/maarten/projects/libzeep@debian/zeep/xml/serialize.hpp&gt;">
<link rel="prev" href="ZEEP_ELEMENT_NAME_VALUE.html" title="Macro ZEEP_ELEMENT_NAME_VALUE">
<link rel="next" href="SOAP_XML_SET_STRUCT_NAME.html" title="Macro SOAP_XML_SET_STRUCT_NAME">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="spirit-nav">
<a accesskey="p" href="ZEEP_ELEMENT_NAME_VALUE.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="SOAP_XML_SET_STRUCT_NAME.html"><img src="images/next.png" alt="Next"></a>
</div>
<div class="refentry">
<a name="ZEEP_ATTRIBUTE_NAME_VALUE"></a><div class="titlepage"></div>
<div class="refnamediv">
<h2><span class="refentrytitle">Macro ZEEP_ATTRIBUTE_NAME_VALUE</span></h2>
<p>ZEEP_ATTRIBUTE_NAME_VALUE</p>
</div>
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp" title="Header &lt;/home/maarten/projects/libzeep@debian/zeep/xml/serialize.hpp&gt;">/home/maarten/projects/libzeep@debian/zeep/xml/serialize.hpp</a>&gt;
</span>ZEEP_ATTRIBUTE_NAME_VALUE(name)</pre></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2012-2019 Maarten L. Hekkelman<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="ZEEP_ELEMENT_NAME_VALUE.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index/s05.html#header..home.maarten.projects.libzeep@debian.zeep.xml.serialize_hpp"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="SOAP_XML_SET_STRUCT_NAME.html"><img src="images/next.png" alt="Next"></a>
</div>
</body>
</html>