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
XOMUnserializer.h
1 /*
2  * $Id$
3  * Copyright (c) 2006, IRIT - UPS.
4  *
5  * elm/serial/XOMUnserializer.h -- XOMUnserializer class interface.
6  */
7 #ifndef ELM_SERIAL_XOM_UNSERIALIZER_H
8 #define ELM_SERIAL_XOM_UNSERIALIZER_H
9 
10 #include <elm/genstruct/HashTable.h>
11 #include <elm/genstruct/Vector.h>
12 #include <elm/serial/Unserializer.h>
13 
14 namespace elm {
15 
16 // Extern classes
17 namespace xom {
18  class Document;
19  class Element;
20 }
21 
22 namespace serial {
23 
24 // XOMUnserializer class
26 
27  typedef struct patch_t {
28  struct patch_t *next;
29  void *& ptr;
30  inline patch_t(void*& _ptr): ptr(_ptr) { };
31  } patch_t;
32 
33  typedef struct ref_t {
34  void *ptr;
35  patch_t *patches;
36  inline ref_t(void *_ptr = 0): ptr(_ptr), patches(0) { };
37  void put(void *&_ptr);
38  void record(void *_ptr);
39  } ref_t;
40 
41  typedef struct context_t {
42  int i;
43  xom::Element *elem;
44  } context_t;
45 
46  xom::Document *doc;
47  context_t ctx;
48  elm::io::Input in;
51 
52 public:
53  XOMUnserializer(xom::Element *element);
55  ~XOMUnserializer(void);
56 
57  // Unserializer overload
58  virtual void close(void);
59  virtual void readPointer(SerialClass& clazz, void *&ptr);
60  virtual void beginObject(CString name, void *ptr);
61  virtual void endObject(void);
62  virtual bool beginField(CString name);
63  virtual void endField(void);
64  virtual bool beginList(void);
65  virtual void endList(void);
66  virtual bool nextItem(void);
67  virtual int readEnum(Pair<elm::CString, int> values[]);
68 
69  virtual void read(bool& val);
70  virtual void read(char& val);
71  virtual void read(unsigned char& val);
72  virtual void read(short& val);
73  virtual void read(unsigned short& val);
74  virtual void read(long& val);
75  virtual void read(unsigned long& val);
76  virtual void read(int& val);
77  virtual void read(unsigned int& val);
78  virtual void read(long long& val);
79  virtual void read(unsigned long long& val);
80  virtual void read(float& val);
81  virtual void read(double& val);
82  virtual void read(CString& val);
83  virtual void read(String& val);
84 };
85 
86 } } // elm::serial
87 
88 #endif // ELM_SERIAL_XOM_UNSERIALIZER_H
89 
Definition: SerialClass.h:19
Definition: CString.h:17
virtual bool beginField(CString name)
Definition: serial_XOMUnserializer.cpp:152
virtual int readEnum(Pair< elm::CString, int > values[])
Definition: serial_XOMUnserializer.cpp:369
virtual bool beginList(void)
Definition: serial_XOMUnserializer.cpp:330
virtual void read(bool &val)
Definition: serial_XOMUnserializer.cpp:171
virtual void close(void)
Definition: serial_XOMUnserializer.cpp:83
Definition: Input.h:33
virtual void endObject(void)
Definition: serial_XOMUnserializer.cpp:146
Definition: Document.h:20
Definition: Unserializer.h:17
virtual void beginObject(CString name, void *ptr)
Definition: serial_XOMUnserializer.cpp:132
virtual bool nextItem(void)
Definition: serial_XOMUnserializer.cpp:352
virtual void endList(void)
Definition: serial_XOMUnserializer.cpp:346
~XOMUnserializer(void)
Definition: serial_XOMUnserializer.cpp:75
elm::ref_t ref_t
virtual void readPointer(SerialClass &clazz, void *&ptr)
Definition: serial_XOMUnserializer.cpp:94
Definition: String.h:31
XOMUnserializer(xom::Element *element)
Definition: serial_XOMUnserializer.cpp:51
Definition: Element.h:21
virtual void endField(void)
Definition: serial_XOMUnserializer.cpp:164
Definition: Pair.h:16
Definition: HashTable.h:34
Definition: XOMUnserializer.h:25