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