00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "DoBase.hpp"
00010
00011 class VObj;
00012 class DynI;
00013
00014
00015 template <class T, int N>
00016 struct VObjTestImpl {
00017 typedef T type;
00018 };
00019
00020 template <class T>
00021 struct VObjTestImpl<T,1> {
00022 typedef VObj type;
00023 };
00024
00025 template <class T>
00026 struct VObjTester {
00027 typedef typename VBaseSelect<T>::type TT;
00028 typedef typename VObjTestImpl< TT,IsVObj<TT>::v+DoIsTypeA<TT,DynI>::v>::type type;
00029
00030 };
00031
00032
00033 #undef SQPLUS_GEN_CAST
00034
00035
00036 #define SQPLUS_GEN_CAST(TYPE,value) ((typename VObjTester<TYPE>::type*)(value))
00037
00038
00039 namespace SqPlus {
00040 struct InstanceBinder;
00041 InstanceBinder *CreateInstanceBinder( VObj* pvo );
00042 InstanceBinder *CreateInstanceBinder( DynI* pdi );
00043 }
00044