00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef MOCKPP_ISINSTANCEOF_H
00035 #define MOCKPP_ISINSTANCEOF_H
00036
00037 #include <mockpp/mockpp.h>
00038
00039 #include <mockpp/constraint/Constraint.h>
00040
00041
00042 MOCKPP_NS_START
00043
00044
00045 #ifndef MOCKPP_NO_RTTI
00046
00053 template <typename BASE,
00054 typename DERIVED>
00055 class IsInstanceOf : public Constraint<BASE*>
00056 {
00057 typedef BASE* pBASE;
00058
00059 public:
00060
00066 virtual bool eval( const pBASE &obj ) const
00067 {
00068 return dynamic_cast<const DERIVED*>(obj) != 0;
00069 }
00070
00075 virtual String describeTo( String &buffer ) const
00076 {
00077 buffer += MOCKPP_PCHAR("derived from ")
00078 + MOCKPP_GET_STRING(typeid(DERIVED).name());
00079 return buffer;
00080 }
00081 };
00082
00083 #endif // MOCKPP_NO_RTTI
00084
00085 MOCKPP_NS_END
00086
00087
00088 #endif // MOCKPP_ISINSTANCEOF_H