00001 #ifndef _IT_BUS_SYS_BINARY_ANY_SIMPLE_TYPE_CXX_
00002 #define _IT_BUS_SYS_BINARY_ANY_SIMPLE_TYPE_CXX_
00003
00004
00005
00006
00007 #include <assert.h>
00008 #include <it_bus/any_type.h>
00009 #include <it_bus/any_simple_type.h>
00010 #include <it_bus/reflect/value_ref.h>
00011
00012 #ifndef IT_MINIMISE_INCLUDES
00013 #include <it_bus/any_simple_type_reader.h>
00014 #include <it_bus/any_simple_type_writer.h>
00015 #include <it_bus/binary_type.h>
00016 #include <it_bus/complex_type_reader.h>
00017 #include <it_bus/complex_type_writer.h>
00018 #include <it_bus/schema_type_traits.h>
00019 #endif
00020
00021 namespace IT_Bus
00022 {
00023 class BinaryOutParam;
00024 class BinaryInParam;
00031 class IT_AFC_API BinaryAnySimpleType : public AnySimpleType
00032 {
00033 public:
00034 virtual AnyType::Kind
00035 get_kind() const;
00036
00037 virtual IT_Reflect::Reflection*
00038 get_reflection() throw((IT_Reflect::ReflectException));
00039
00040 virtual const IT_Reflect::Reflection*
00041 get_reflection() const throw((IT_Reflect::ReflectException));
00042
00043 virtual const IT_Bus::BinaryBuffer&
00044 get_buffer() const = 0;
00045 };
00046
00053 class IT_AFC_API BinaryOutParamAnySimpleType : public BinaryAnySimpleType
00054 {
00055 public:
00056 BinaryOutParamAnySimpleType(
00057 IT_Bus::BinaryOutParam& value
00058 ) throw(()) :
00059 m_value(value)
00060 {
00061
00062 }
00063
00064 virtual const QName&
00065 get_type() const;
00066
00067 virtual void
00068 write(
00069 const QName&,
00070 ComplexTypeWriter&
00071 ) const throw((SerializationException));
00072
00073 virtual void
00074 write_value(
00075 AnySimpleTypeWriter&
00076 ) const throw((SerializationException));
00077
00078 virtual void
00079 read(
00080 const QName& name,
00081 ComplexTypeReader& reader
00082 ) throw((DeserializationException));
00083
00084 virtual void
00085 read_value(
00086 AnySimpleTypeReader& reader
00087 ) throw((DeserializationException));
00088
00089 virtual AnyType&
00090 copy(
00091 const AnyType & rhs
00092 );
00093
00094 virtual const IT_Bus::BinaryBuffer&
00095 get_buffer() const;
00096
00097 virtual IT_Bus::BinaryBuffer&
00098 get_buffer();
00099
00100 private:
00101 IT_Bus::BinaryOutParam& m_value;
00102 };
00103
00110 class IT_AFC_API BinaryInParamAnySimpleType : public BinaryAnySimpleType
00111 {
00112 public:
00113 BinaryInParamAnySimpleType(
00114 const IT_Bus::BinaryInParam& value
00115 ) throw(()) :
00116 m_value(value)
00117 {
00118
00119 }
00120
00121 virtual const QName&
00122 get_type() const;
00123
00124 virtual void
00125 write(
00126 const QName& name,
00127 ComplexTypeWriter& writer
00128 ) const throw((SerializationException));
00129
00130 virtual void
00131 write_value(
00132 AnySimpleTypeWriter& writer
00133 ) const throw((SerializationException));
00134
00135 virtual void
00136 read(
00137 const QName&,
00138 ComplexTypeReader&
00139 ) throw((DeserializationException));
00140
00141 virtual void
00142 read_value(
00143 AnySimpleTypeReader&
00144 ) throw((DeserializationException));
00145
00146 virtual AnyType&
00147 copy(
00148 const AnyType &
00149 );
00150
00151 virtual const IT_Bus::BinaryBuffer&
00152 get_buffer() const;
00153
00154 private:
00155 const IT_Bus::BinaryInParam& m_value;
00156 };
00157 }
00158
00159 #endif