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
SerialTable.h
1 /*
2  * $Id$
3  * Copyright (c) 2006, IRIT - UPS.
4  *
5  * elm/serial/SerialTable.h -- SerialTable<T> class interface.
6  */
7 #ifndef ELM_SERIAL_SERIAL_TABLE_H
8 #define ELM_SERIAL_SERIAL_TABLE_H
9 
10 #include <elm/serial/SerialClass.h>
11 #include <elm/genstruct/Table.h>
12 #include <elm/genstruct/Vector.h>
13 /*#include <elm/serial/Serializer.h>
14 #include <elm/serial/Unerializer.h>*/
15 
16 namespace elm { namespace serial {
17 
18 // Extern Classes
19 class Serializer;
20 class Unserializer;
21 
22 // SerialTable<T> Interface
23 template <class T>
25 public:
26  virtual ~SerialTable(void) { }
27  inline SerialTable(void);
28  inline SerialTable(T *table, int count);
29  inline SerialTable(const genstruct::Table<T> &table);
30 
32  virtual void __serialize(Serializer& _serializer) const;
33  void __serialize(Unserializer& _serializer);
34 };
35 
36 // SerialTable<T> Implementation
37 template <class T>
39 }
40 
41 template <class T>
42 inline SerialTable<T>::SerialTable(T *table, int count)
43 : genstruct::AllocatedTable<T>(table, count) {
44 }
45 
46 template <class T>
48 : genstruct::AllocatedTable<T>(table) {
49 }
50 
51 #ifdef ELM_SERIAL_IMPLEMENT_H
52 
53 template <class T>
54 void SerialTable<T>::__serialize(Serializer& _serializer) const {
55 
56 }
57 
58 template <class T>
59 void SerialTable<T>::__serialize(Unserializer& _serializer) {
61  for(bool next = _serializer.beginList(); next; next = _serializer.nextItem()) {
62  vec.add();
63  _serializer >> vec[vec.count() - 1];
64  }
65  _serializer.endList();
66  copy(vec.detach());
67 }
68 
69 template <class T>
70 elm::serial::SerialClass& SerialTable<T>::__class
71  = __make_class<SerialTable<T> >("elm::serial::Table<T>");
72 
73 #endif // ELM_SERIAL_IMPLEMENT_H
74 
75 } } // elm::serial
76 
77 #endif // ELM_SERIAL_SERIAL_TABLE_H
Definition: SerialClass.h:19
void copy(T *target, const T *source, int size)
Definition: array.h:59
table< T > detach(void)
Definition: Vector.h:131
Definition: Serializer.h:15
SerialTable(void)
Definition: SerialTable.h:38
static SerialClass & __class
Definition: SerialTable.h:31
Definition: Table.h:33
Definition: Table.h:130
void add(void)
Definition: Vector.h:179
Definition: Unserializer.h:17
virtual ~SerialTable(void)
Definition: SerialTable.h:26
Definition: SerialTable.h:24
int count(void) const
Definition: Table.h:71
Definition: Table.h:98
Definition: Vector.h:35
virtual void __serialize(Serializer &_serializer) const
int count(void) const
Definition: Vector.h:58