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
SerialClass.h
1 /*
2  * $Id$
3  * Copyright (c) 2006, IRIT UPS.
4  *
5  * elm/serial/SerialClass.h -- SerialClass and GenSerialClass interfaces.
6  */
7 #ifndef ELM_SERIAL_SERIAL_CLASS_H
8 #define ELM_SERIAL_SERIAL_CLASS_H
9 
10 #include <elm/string.h>
11 #include <elm/genstruct/HashTable.h>
12 
13 namespace elm { namespace serial {
14 
15 // External classes
16 class Unserializer;
17 
18 // SerialClass class
19 class SerialClass {
20 private:
21  CString _name;
22 
23  SerialClass *next;
24  static bool initialized;
25  static SerialClass *first;
27  static void initialize(void);
28 
29 public:
31  virtual ~SerialClass(void) { }
32  inline CString name(void) const { return _name; };
33  static SerialClass *find(CString name);
34 
35  virtual void *create(void) = 0;
36  virtual void unserialize(void *ptr, Unserializer& unserializer) = 0;
37 };
38 
39 
40 // Templated serialized class
41 template <class T>
42 class GenSerialClass: public SerialClass {
43 public:
45 
46  // SerialClass overload
47  virtual void *create(void) {
48  return new T;
49  }
50 
51  virtual void unserialize(void *ptr, Unserializer& unserializer) {
52  ((T *)ptr)->__serialize(unserializer);
53  }
54 
55 };
56 
57 } } // elm::serial
58 
59 #endif // ELM_SERIAL_SERIAL_CLASS_H
Definition: SerialClass.h:19
Definition: CString.h:17
Definition: SerialClass.h:42
GenSerialClass(CString name)
Definition: SerialClass.h:44
SerialClass(elm::CString name)
Definition: serial_SerialClass.cpp:52
virtual void unserialize(void *ptr, Unserializer &unserializer)
Definition: SerialClass.h:51
Definition: Unserializer.h:17
virtual ~SerialClass(void)
Definition: SerialClass.h:31
CString name(void) const
Definition: SerialClass.h:32
static SerialClass * find(CString name)
Definition: serial_SerialClass.cpp:75
virtual void * create(void)=0
virtual void unserialize(void *ptr, Unserializer &unserializer)=0
virtual void * create(void)
Definition: SerialClass.h:47
Definition: HashTable.h:34