9#ifndef CLASSDESC_XML_PACK_EPILOGUE_H
10#define CLASSDESC_XML_PACK_EPILOGUE_H
11#include <typeName_epilogue.h>
12#include "polyAccessXMLPack.h"
13#include "xml_pack-allCDs.h"
23#ifdef CLASSDESC_XML_PACK_BASE_H
27 void operator()(classdesc::xml_pack_t& t,
const classdesc::string& d,
const T& a)
32#ifdef CLASSDESC_XML_UNPACK_BASE_H
36 void operator()(classdesc::xml_unpack_t& t,
const classdesc::string& d,T& a)
42 void operator()(classdesc::xml_unpack_t& t,
const classdesc::string& d,
const T& a)
58 Or< is_sequence<T>, is_associative_container<T> >,
69#ifdef CLASSDESC_XML_PACK_BASE_H
70 template <
class T>
typename
71 enable_if<AllOtherXMLPackpTypes<T>,
void >::T
72 xml_packp(xml_pack_t& t,
const string& d, T& a, dummy<0> dum=0)
74 xml_pack_t::Tag tag(t,d);
79#ifdef CLASSDESC_XML_UNPACK_BASE_H
80 template <
class T>
typename
84 classdesc_access::access_xml_unpack<T>()(t,d,a);
87 template <
class T>
typename
91 classdesc_access::access_xml_unpack<T>()(t,d,a);
100#ifdef CLASSDESC_XML_PACK_BASE_H
101 template <
class T>
void xml_pack(
xml_pack_t& t,
const string& d,
T& a)
106 template <
class T>
void xml_pack(
xml_pack_t& t,
const string& d,
const T& a)
108 xml_packp(t,d,
const_cast<T&
>(a));
112 {xml_pack(t,
"root",
const_cast<T&
>(a));
return t;}
116#ifdef CLASSDESC_XML_UNPACK_BASE_H
117 template <
class T>
void xml_unpack(
xml_unpack_t& t,
const string& d,
T& a)
123 {xml_unpack(t,
"root",a);
return t;}
133 void operator()(cd::xml_pack_t& p,
const std::string& d,
const cd::CDATA& c)
139#ifdef CLASSDESC_POLYPACKBASE_H
140#ifdef CLASSDESC_XML_PACK_BASE_H
142 public cd::NullDescriptor<cd::xml_pack_t> {};
143 template <
class T>
struct access_xml_pack<cd::PolyPack<T> >:
144 public cd::NullDescriptor<cd::xml_pack_t> {};
146#ifdef CLASSDESC_XML_UNPACK_BASE_H
154#ifdef CLASSDESC_POLYJSONBASE_H
155#ifdef CLASSDESC_XML_PACK_BASE_H
161#ifdef CLASSDESC_XML_UNPACK_BASE_H
169#ifdef CLASSDESC_POLYXMLBASE_H
184#ifdef CLASSDESC_REF_H
185#ifdef CLASSDESC_XML_PACK_BASE_H
188 void operator()(cd::xml_pack_t& x,
const cd::string& d, cd::ref<T>& a)
190 if (a) xml_pack(x,d,*a);
195#ifdef CLASSDESC_XML_UNPACK_BASE_H
198 void operator()(cd::xml_unpack_t& x,
const cd::string& d, cd::ref<T>& a)
207#ifdef CLASSDESC_XML_PACK_BASE_H
211 void operator()(
cd::xml_pack_t& targ,
const cd::string& desc, T*&)
218#ifdef CLASSDESC_XML_UNPACK_BASE_H
Definition xml_pack_base.h:56
void pack_notag(const string &d, const T &x)
Definition xml_pack_base.h:161
Definition xml_unpack_base.h:317
void unpack(std::string key, T &var)
simple data type deserialisation
Definition xml_unpack_base.h:410
Contains access_* structs, and nothing else. These structs are used to gain access to private members...
Definition classdesc_access.h:20
Contains definitions related to classdesc functionality.
Definition xml_pack_epilogue.h:64
Definition classdesc.h:405
helper for constructing null descriptors
Definition classdesc.h:1106
Definition classdesc.h:299
controlled template specialisation: stolen from boost::enable_if.
Definition classdesc.h:282
base class for exceptions thrown by classdesc
Definition classdesc.h:546
Definition classdesc_access.h:23
Definition classdesc_access.h:24