Elm  1.0
ELM is a library providing generic data structures, OS-independent interface, plugins and XML.
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
XOMSerializer.h
1 /*
2  * $Id$
3  * Copyright (c) 2006, IRIT - UPS.
4  *
5  * XOMUnserializer class interface.
6  */
7 #ifndef ELM_SERIAL2_XOM_SERIALIZER_H
8 #define ELM_SERIAL2_XOM_SERIALIZER_H
9 
10 #include <elm/genstruct/HashTable.h>
11 #include <elm/genstruct/Vector.h>
12 #include <elm/serial2/Serializer.h>
13 #include <elm/genstruct/HashTable.h>
14 #include <elm/genstruct/VectorQueue.h>
15 #include <elm/util/Pair.h>
16 
17 namespace elm {
18 
19 // Extern classes
20 
21 namespace xom {
22  class Document;
23  class Attribute;
24  class Element;
25 }
26 
27 namespace serial2 {
28 
29 
30 class XOMSerializer: public Serializer {
31 public:
33  virtual ~XOMSerializer(void);
34 
35  // XOMUnserializer overload
36  virtual void flush(void);
37  virtual void beginObject(AbstractType& clazz, const void *object);
38  virtual void endObject(AbstractType& clazz, const void *object);
39  virtual void beginField(CString name);
40  virtual void endField(void);
41  virtual void onPointer(AbstractType& clazz, const void *object);
42  virtual void beginCompound(const void*);
43  virtual void endCompound(const void*);
44  virtual void onEnum(const void *address, int value, AbstractEnum& clazz);
45  virtual void onValue(const bool& v);
46  virtual void onValue(const signed int& v);
47  virtual void onValue(const unsigned int& v);
48  virtual void onValue(const char& v);
49  virtual void onValue(const signed char& v);
50  virtual void onValue(const unsigned char& v);
51  virtual void onValue(const signed short& v);
52  virtual void onValue(const unsigned short& v);
53  virtual void onValue(const signed long& v);
54  virtual void onValue(const unsigned long& v);
55  virtual void onValue(const signed long long& v);
56  virtual void onValue(const unsigned long long& v);
57  virtual void onValue(const float& v);
58  virtual void onValue(const double& v);
59  virtual void onValue(const long double& v);
60  virtual void onValue(const CString& v);
61  virtual void onValue(const String& v);
62  virtual void onItem (void);
63 
64 private:
65 
66  xom::Document *doc;
67  const elm::CString &path;
72 
73  typedef struct context_t {
74  xom::Element *elem;
75  bool firstItem;
76  } context_t;
77  context_t ctx;
79  int ref_current;
80 
81  int refGet(const void* object) {
82  if (!idmap.hasKey(object)) {
83  idmap.put(object, ref_current);
84  ref_current++;
85  }
86  return idmap.get(object, -1);
87  }
88 };
89 
90 } } // elm::serial2
91 
92 #endif // ELM_SERIAL2_XOM_SERIALIZER_H
93 
Definition: CString.h:17
virtual void flush(void)
Definition: serial2_XOMSerializer.cpp:51
virtual void endObject(AbstractType &clazz, const void *object)
Definition: serial2_XOMSerializer.cpp:127
Definition: serial.h:147
bool hasKey(const K &key)
Definition: HashTable.h:107
Definition: XOMSerializer.h:30
virtual void endField(void)
Definition: serial2_XOMSerializer.cpp:146
virtual void beginCompound(const void *)
Definition: serial2_XOMSerializer.cpp:181
Option< T > get(const K &key)
Definition: HashTable.h:103
virtual void onItem(void)
Definition: serial2_XOMSerializer.cpp:216
value_t value(CString name, int value)
Definition: rtti.h:40
Definition: Document.h:20
virtual void beginObject(AbstractType &clazz, const void *object)
Definition: serial2_XOMSerializer.cpp:80
Definition: serial.h:205
void put(const K &key, const T &value)
Definition: HashTable.h:113
XOMSerializer(elm::CString path)
Definition: serial2_XOMSerializer.cpp:33
virtual void endCompound(const void *)
Definition: serial2_XOMSerializer.cpp:195
virtual void beginField(CString name)
Definition: serial2_XOMSerializer.cpp:136
Definition: String.h:31
virtual ~XOMSerializer(void)
Definition: serial2_XOMSerializer.cpp:45
virtual void onEnum(const void *address, int value, AbstractEnum &clazz)
Definition: serial2_XOMSerializer.cpp:199
Definition: Element.h:21
virtual void onPointer(AbstractType &clazz, const void *object)
Definition: serial2_XOMSerializer.cpp:151
Definition: Serializer.h:18
virtual void onValue(const bool &v)
Definition: serial2_XOMSerializer.cpp:204
Definition: VectorQueue.h:32