YAPOG  0.0.1
Yet Another Pokemon Online Game
DatabaseStream.hpp
Go to the documentation of this file.
1 #ifndef YAPOG_DATABASESTREAM_HPP
2 # define YAPOG_DATABASESTREAM_HPP
3 
4 # include "YAPOG/Macros.hpp"
7 # include "pgstream/pgstream.hpp"
8 
9 namespace yap
10 {
12  : public IWriter
13  , public IReader
14  {
16  public:
18  const yap::String& query,
19  pgs::pg_cnx& databaseConnection);
20 
23  virtual void Accept (IWriterVisitor& visitor);
24  virtual void Accept (IWriterConstVisitor& visitor) const;
25 
26  virtual void Write (const String& value);
27  virtual void Write (const String& name, const String& value);
28 
29  virtual void Write (const bool& value);
30  virtual void Write (const String& name, const bool& value);
31 
32  virtual void Write (const char& value);
33  virtual void Write (const String& name, const char& value);
34 
35  virtual void Write (const uchar& value);
36  virtual void Write (const String& name, const uchar& value);
37 
38  virtual void Write (const Int16& value);
39  virtual void Write (const String& name, const Int16& value);
40 
41  virtual void Write (const UInt16& value);
42  virtual void Write (const String& name, const UInt16& value);
43 
44  virtual void Write (const int& value);
45  virtual void Write (const String& name, const int& value);
46 
47  virtual void Write (const uint& value);
48  virtual void Write (const String& name, const uint& value);
49 
50  virtual void Write (const Int64& value);
51  virtual void Write (const String& name, const Int64& value);
52 
53  virtual void Write (const UInt64& value);
54  virtual void Write (const String& name, const UInt64& value);
55 
56  virtual void Write (const float& value);
57  virtual void Write (const String& name, const float& value);
58 
59  virtual void Write (const double& value);
60  virtual void Write (const String& name, const double& value);
61 
62  virtual void Write (const Vector2& value);
63  virtual void Write (const String& name, const Vector2& value);
64 
65  virtual void Write (const ID& value);
66  virtual void Write (const String& name, const ID& value);
68 
71  virtual void Accept (IReaderVisitor& visitor);
72  virtual void Accept (IReaderConstVisitor& visitor) const;
73 
74  virtual String ReadString ();
75  virtual String ReadString (const String& name);
76 
77  virtual bool ReadBool ();
78  virtual bool ReadBool (const String& name);
79 
80  virtual char ReadChar ();
81  virtual char ReadChar (const String& name);
82 
83  virtual uchar ReadUChar ();
84  virtual uchar ReadUChar (const String& name);
85 
86  virtual Int16 ReadInt16 ();
87  virtual Int16 ReadInt16 (const String& name);
88 
89  virtual UInt16 ReadUInt16 ();
90  virtual UInt16 ReadUInt16 (const String& name);
91 
92  virtual int ReadInt ();
93  virtual int ReadInt (const String& name);
94 
95  virtual uint ReadUInt ();
96  virtual uint ReadUInt (const String& name);
97 
98  virtual Int64 ReadInt64 ();
99  virtual Int64 ReadInt64 (const String& name);
100 
101  virtual UInt64 ReadUInt64 ();
102  virtual UInt64 ReadUInt64 (const String& name);
103 
104  virtual float ReadFloat ();
105  virtual float ReadFloat (const String& name);
106 
107  virtual double ReadDouble ();
108  virtual double ReadDouble (const String& name);
109 
110  virtual Vector2 ReadVector2 ();
111  virtual Vector2 ReadVector2 (const String& name);
112 
113  virtual ID ReadID ();
114  virtual ID ReadID (const String& name);
116 
119  int EndOfStream ();
120  int AffectedRows () const;
121  bool ReturnValueIsEmpty () const;
123 
124  private:
125  template <typename T>
126  void WriteData (const T& data);
127 
128  template <typename T>
129  T ReadData ();
130 
132  };
133 } // namespace yap
134 
136 
137 #endif // YAPOG_DATABASESTREAM_HPP