Remote Call Framework 3.2
I_Stream.hpp
1 
2 //******************************************************************************
3 // RCF - Remote Call Framework
4 //
5 // Copyright (c) 2005 - 2020, Delta V Software. All rights reserved.
6 // http://www.deltavsoft.com
7 //
8 // RCF is distributed under dual licenses - closed source or GPL.
9 // Consult your particular license for conditions of use.
10 //
11 // If you have not purchased a commercial license, you are using RCF
12 // under GPL terms.
13 //
14 // Version: 3.2
15 // Contact: support <at> deltavsoft.com
16 //
17 //******************************************************************************
18 
19 #ifndef INCLUDE_SF_I_STREAM_HPP
20 #define INCLUDE_SF_I_STREAM_HPP
21 
22 #include <RCF/Export.hpp>
23 
24 #include <SF/PortableTypes.hpp>
25 #include <RCF/Tools.hpp>
26 
27 namespace SF {
28 
29  //*************************************************************************
30  // Stream interfaces
31 
32  class DataPtr;
33  class Node;
34 
35  typedef std::pair<void *, const std::type_info *> ObjectId;
36 
37  //--------------------------------------------------------------------------
38  // I_Encoding
39 
40  class RCF_EXPORT I_Encoding
41  {
42  public:
43  virtual ~I_Encoding()
44  {}
45 
46 #define SF_DECLARE_GETCOUNT_PV(T) \
47  virtual UInt32 getCount( \
48  DataPtr & data, \
49  T * ) = 0;
50 
51 #define SF_DECLARE_TODATA_PV(T) \
52  virtual void toData( \
53  DataPtr & data, \
54  T * pObj, \
55  int nCount) = 0;
56 
57 #define SF_DECLARE_TOOBJECT_PV(T) \
58  virtual void toObject( \
59  DataPtr & data, \
60  T * pObj, \
61  int nCount) = 0;
62 
63  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_GETCOUNT_PV )
64  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TODATA_PV )
65  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TOOBJECT_PV )
66 
67 #undef SF_DECLARE_GETCOUNT_PV
68 #undef SF_DECLARE_TODATA_PV
69 #undef SF_DECLARE_TOOBJECT_PV
70 
71  };
72 
73  //--------------------------------------------------------------------------
74  // EncodingTest, EncodingBinaryNative, EncodingBinaryPortable
75 
76 #define SF_DECLARE_GETCOUNT(T) \
77  virtual UInt32 getCount( \
78  DataPtr & data, \
79  T * );
80 
81 #define SF_DECLARE_TODATA(T) \
82  virtual void toData( \
83  DataPtr & data, \
84  T * pObj, \
85  int nCount);
86 
87 #define SF_DECLARE_TOOBJECT(T) \
88  virtual void toObject( \
89  DataPtr & data, \
90  T * pObj, \
91  int nCount);
92 
93 
94  class RCF_EXPORT EncodingText : public I_Encoding
95  {
96  public:
97 
98  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_GETCOUNT )
99  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TODATA )
100  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TOOBJECT )
101 
102  };
103 
104  class RCF_EXPORT EncodingBinaryNative : public I_Encoding
105  {
106  public:
107 
108  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_GETCOUNT )
109  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TODATA )
110  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TOOBJECT )
111 
112  };
113 
114  class RCF_EXPORT EncodingBinaryPortable : public I_Encoding
115  {
116  public:
117 
118  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_GETCOUNT )
119  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TODATA )
120  SF_FOR_EACH_FUNDAMENTAL_TYPE( SF_DECLARE_TOOBJECT )
121 
122  };
123 
124 #undef SF_DECLARE_GETCOUNT
125 #undef SF_DECLARE_TODATA
126 #undef SF_DECLARE_TOOBJECT
127 
128 }
129 
130 #endif // ! INCLUDE_SF_I_STREAM_HPP
Definition: ByteBuffer.hpp:189