SmartFoxServer 2X C++ API
ISFSArray.h
1 // ===================================================================
2 //
3 // Description
4 // Contains the definition of ISFSArray interface
5 //
6 // Revision history
7 // Date Description
8 // 30-Nov-2012 First version
9 //
10 // ===================================================================
11 #ifndef __ISFSArray__
12 #define __ISFSArray__
13 
14 // Forward class declaration
15 namespace Sfs2X {
16 namespace Entities {
17 namespace Data {
18  class ISFSArray;
19 } // namespace Data
20 } // namespace Entities
21 } // namespace Sfs2X
22 
23 
24 #include "../../Util/ByteArray.h"
25 #include "SFSDataWrapper.h"
26 #include "ISFSObject.h"
27 
28 #include <boost/shared_ptr.hpp> // Boost Asio shared pointer
29 
30 #if defined(_MSC_VER)
31 #pragma warning(disable:4786) // STL library: disable warning 4786; this warning is generated due to a Microsoft bug
32 #endif
33 #include <string> // STL library: string object
34 #include <vector> // STL library: vector object
35 using namespace std; // STL library: declare the STL namespace
36 
37 using namespace Sfs2X::Util;
38 
39 namespace Sfs2X {
40 namespace Entities {
41 namespace Data {
42 
46  class DLLImportExport ISFSArray
47  {
48  public:
58  virtual bool Contains(boost::shared_ptr<void> obj) = 0;
59 
69  virtual boost::shared_ptr<void> GetElementAt(long int index) = 0;
70 
71  virtual boost::shared_ptr<SFSDataWrapper> GetWrappedElementAt(long int index) = 0;
72 
82  virtual boost::shared_ptr<void> RemoveElementAt(unsigned long int index) = 0;
83 
90  virtual long int Size() = 0;
91 
98  virtual boost::shared_ptr<ByteArray> ToBinary() = 0;
99 
109  virtual boost::shared_ptr<string> GetDump(bool format) = 0;
110 
117  virtual boost::shared_ptr<string> GetDump() = 0; // Default to true
118 
125  virtual boost::shared_ptr<string> GetHexDump() = 0;
126 
127  /*
128  * :::::::::::::::::::::::::::::::::::::::::
129  * Type setters
130  * :::::::::::::::::::::::::::::::::::::::::
131  */
132 
133  // Primitives
137  virtual void AddNull() = 0;
138 
145  virtual void AddBool(boost::shared_ptr<bool> val) = 0;
146 
153  virtual void AddBool(bool val) = 0;
154 
161  virtual void AddByte(boost::shared_ptr<unsigned char> val) = 0;
162 
169  virtual void AddByte(unsigned char val) = 0;
170 
177  virtual void AddShort(boost::shared_ptr<short int> val) = 0;
178 
185  virtual void AddShort(short int val) = 0;
186 
193  virtual void AddInt(boost::shared_ptr<long int> val) = 0;
194 
201  virtual void AddInt(long int val) = 0;
202 
209  virtual void AddLong(boost::shared_ptr<long long> val) = 0;
210 
217  virtual void AddLong(long long val) = 0;
218 
225  virtual void AddFloat(boost::shared_ptr<float> val) = 0;
226 
233  virtual void AddFloat(float val) = 0;
234 
241  virtual void AddDouble(boost::shared_ptr<double> val) = 0;
242 
249  virtual void AddDouble(double val) = 0;
250 
257  virtual void AddUtfString(boost::shared_ptr<string> val) = 0;
258 
265  virtual void AddUtfString(string val) = 0;
266 
273  virtual void AddText(boost::shared_ptr<string> val) = 0;
274 
281  virtual void AddText(string val) = 0;
282 
289  virtual void AddBoolArray(boost::shared_ptr<vector<boost::shared_ptr<bool> > > val) = 0;
290 
297  virtual void AddByteArray(boost::shared_ptr<ByteArray> val) = 0;
298 
305  virtual void AddShortArray(boost::shared_ptr<vector<boost::shared_ptr<short int> > > val) = 0;
306 
313  virtual void AddIntArray(boost::shared_ptr<vector<boost::shared_ptr<long int> > > val) = 0;
314 
321  virtual void AddLongArray(boost::shared_ptr<vector<boost::shared_ptr<long long> > > val) = 0;
322 
329  virtual void AddFloatArray(boost::shared_ptr<vector<boost::shared_ptr<float> > > val) = 0;
330 
337  virtual void AddDoubleArray(boost::shared_ptr<vector<boost::shared_ptr<double> > > val) = 0;
338 
345  virtual void AddUtfStringArray(boost::shared_ptr<vector<boost::shared_ptr<string> > > val) = 0;
346 
353  virtual void AddSFSArray(boost::shared_ptr<ISFSArray> val) = 0;
354 
362  virtual void AddSFSObject(boost::shared_ptr<ISFSObject> val) = 0;
363 
428  virtual void AddClass(boost::shared_ptr<void> val) = 0;
429 
430  virtual void Add(boost::shared_ptr<SFSDataWrapper> val) = 0;
431 
432  /*
433  * :::::::::::::::::::::::::::::::::::::::::
434  * Type getters
435  * :::::::::::::::::::::::::::::::::::::::::
436  */
437 
447  virtual bool IsNull(unsigned long int index) = 0;
448 
458  virtual bool GetBool(unsigned long int index) = 0;
459 
469  virtual unsigned char GetByte(unsigned long int index) = 0;
470 
480  virtual short int GetShort(unsigned long int index) = 0;
481 
491  virtual long int GetInt(unsigned long int index) = 0;
492 
502  virtual long long GetLong(unsigned long int index) = 0;
503 
513  virtual float GetFloat(unsigned long int index) = 0;
514 
524  virtual double GetDouble(unsigned long int index) = 0;
525 
535  virtual boost::shared_ptr<string> GetUtfString(unsigned long int index) = 0;
536 
546  virtual boost::shared_ptr<string> GetText(unsigned long int index) = 0;
547 
557  virtual boost::shared_ptr<vector<bool> > GetBoolArray(unsigned long int index) = 0;
558 
568  virtual boost::shared_ptr<ByteArray> GetByteArray(unsigned long int index) = 0;
569 
579  virtual boost::shared_ptr<vector<short int> > GetShortArray(unsigned long int index) = 0;
580 
590  virtual boost::shared_ptr<vector<long int> > GetIntArray(unsigned long int index) = 0;
591 
601  virtual boost::shared_ptr<vector<long long> > GetLongArray(unsigned long int index) = 0;
602 
612  virtual boost::shared_ptr<vector<float> > GetFloatArray(unsigned long int index) = 0;
613 
623  virtual boost::shared_ptr<vector<double> > GetDoubleArray(unsigned long int index) = 0;
624 
634  virtual boost::shared_ptr<vector<string> > GetUtfStringArray(unsigned long int index) = 0;
635 
645  virtual boost::shared_ptr<ISFSArray> GetSFSArray(unsigned long int index) = 0;
646 
656  virtual boost::shared_ptr<ISFSObject> GetSFSObject(unsigned long int index) = 0;
657 
668  virtual boost::shared_ptr<void> GetClass(unsigned long int index) = 0;
669  };
670 
671 } // namespace Data
672 } // namespace Entities
673 } // namespace Sfs2X
674 
675 #endif
STL namespace.
Definition: BuddyOnlineState.h:15
SFSArray interface
Definition: ISFSArray.h:46
Definition: SmartFox.cpp:24