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
TextSerializer.h
1 /*
2  * $Id$
3  * Copyright (c) 2006, IRIT UPS.
4  *
5  * TextSerializer class interface.
6  */
7 #ifndef ELM_SERIAL2_TEXT_SERIALIZER_H
8 #define ELM_SERIAL2_TEXT_SERIALIZER_H
9 
10 #include <elm/io.h>
11 #include <elm/serial2/Serializer.h>
12 #include <elm/genstruct/HashTable.h>
13 #include <elm/genstruct/VectorQueue.h>
14 #include <elm/util/Pair.h>
15 
16 namespace elm { namespace serial2 {
17 
18 using namespace genstruct;
19 
20 // TextSerializer class
21 class TextSerializer: public Serializer {
22 public:
23  inline TextSerializer(io::Output &out = cout): level(0), _out(out) { }
24  virtual void flush(void);
25 
26  // Complex type serializers
27  virtual void beginObject(AbstractType& clazz, const void *object);
28  virtual void endObject(AbstractType& clazz, const void *object);
29  virtual void beginField(CString name);
30  virtual void endField(void);
31  virtual void onPointer(AbstractType& clazz, const void *object);
32  virtual void beginCompound(const void*);
33  virtual void onItem(void);
34  virtual void endCompound(const void*);
35  virtual void onEnum(const void *address, int value, AbstractEnum& clazz);
36 
37  // Base value serializers
38  virtual void onValue(const bool& v);
39  virtual void onValue(const signed int& v);
40  virtual void onValue(const unsigned int& v);
41  virtual void onValue(const signed char& v);
42  virtual void onValue(const unsigned char& v);
43  virtual void onValue(const signed short& v);
44  virtual void onValue(const unsigned short& v);
45  virtual void onValue(const signed long& v);
46  virtual void onValue(const unsigned long& v);
47  virtual void onValue(const signed long long& v);
48  virtual void onValue(const unsigned long long& v);
49  virtual void onValue(const float& v);
50  virtual void onValue(const double& v);
51  virtual void onValue(const long double& v);
52  virtual void onValue(const CString& v);
53  virtual void onValue(const String& v);
54 
55 private:
56  typedef Pair<const void *, AbstractType *> delay_t;
58  VectorQueue<delay_t> to_process;
59  int level;
60  io::Output& _out;
61  void prefix(AbstractType& type, const void *object);
62  void suffix(void);
63 };
64 
65 } } // elm::serial2
66 
67 #endif // ELM_SERIAL2_TEXT_SERIALIZER_H
Definition: CString.h:17
Definition: Output.h:161
Definition: serial.h:147
Definition: TextSerializer.h:21
value_t value(CString name, int value)
Definition: rtti.h:40
AbstractType & type(void)
Definition: serial.h:58
Definition: serial.h:205
sys::SystemOutStream & out
Definition: system_SystemIO.cpp:101
Definition: String.h:31
Definition: Pair.h:16
TextSerializer(io::Output &out=cout)
Definition: TextSerializer.h:23
io::Output cout
Definition: Serializer.h:18
Definition: VectorQueue.h:32