1 #include "TypeCheckerDataStream.hxx"
7 template< template< StreamType type> class TREATMENTPERTYPE >
8 class DynToStaticStreamTypeDispatcher1
11 template<class T, class U>
12 static void perform(YACS::StreamType myTypeDyn, T input, U& output) throw(Exception)
17 TREATMENTPERTYPE<SDouble>::perform(input, output);
20 throw Exception("Unknow stream type enum");
25 template< template< StreamType fromType, StreamType toType> class TREATMENTPERTYPE >
26 class DynToStaticStreamTypeDispatcher2
28 template<StreamType toType> class TREATMENTPERTYPESDOUBLE : public TREATMENTPERTYPE<SDouble,toType> { };
30 template<class T, class U>
31 static void perform(YACS::StreamType myTypeDynFrom, YACS::StreamType myTypeDynTo, T input, U& output) throw(Exception)
36 DynToStaticStreamTypeDispatcher1<TREATMENTPERTYPESDOUBLE>::perform(myTypeDynTo, input, output);
39 throw Exception("Unknow stream type enum");
44 template<YACS::StreamType baseTyp>
45 class StreamTypeDescriptorTraits
50 class StreamTypeDescriptorTraits<YACS::SDouble>
53 static const char _name[];
58 * This class has the responsability of the validity of the content of stream data regarding only statically its types from and to.
61 template< StreamType fromType, StreamType toType >
62 class StaticStreamTypeConverter
65 enum { _staticallyCompatible=0 };
68 template<StreamType type>
69 class StaticStreamTypeConverter<type,type>
72 enum { _staticallyCompatible=1 };
77 using namespace YACS::ENGINE;
79 const char StreamTypeDescriptorTraits<YACS::SDouble>::_name[]="SDouble";
81 const char TypeCheckerDataStream::UNRECOGNIZEDTYPENAME[]="Unrecognized type";
83 //Part of TypeCheckerDataStream::areStaticallyCompatible implementation
84 template< YACS::StreamType fromType, YACS::StreamType toType >
85 class TreatmentToCheckStaticallyTypes
88 static void perform(int input, bool& ret)
90 ret=StaticStreamTypeConverter<fromType,toType>::_staticallyCompatible;
94 bool TypeCheckerDataStream::areStaticallyCompatible(YACS::StreamType type1, YACS::StreamType type2) throw(Exception)
98 //DynToStaticStreamTypeDispatcher2<TreatmentToCheckStaticallyTypes>::perform(type1, type2, fake, ret);
102 // Part of TypeCheckerDataStream::edGetTypeInPrintableForm implementation
104 template< YACS::StreamType type >
105 class TreatmentForNameOfStreamType
108 static void perform(int input, std::string& ret)
110 ret=StreamTypeDescriptorTraits<type>::_name;
114 std::string TypeCheckerDataStream::edGetTypeInPrintableForm(YACS::StreamType type)
120 DynToStaticStreamTypeDispatcher1< TreatmentForNameOfStreamType >::perform(type, fake1, ret);
125 return UNRECOGNIZEDTYPENAME;