00001
00002 #ifndef Rivet_Projection_FHH
00003 #define Rivet_Projection_FHH
00004
00005 #include "Rivet/Cmp.fhh"
00006
00007
00008 namespace Rivet {
00009 class Projection;
00010 typedef Projection* ProjectionPtr;
00011 typedef const Projection* ConstProjectionPtr;
00012 }
00013
00014
00015 namespace std {
00016
00017
00018 template <>
00019 struct less<const Rivet::Projection*>
00020 : public binary_function<const Rivet::Projection*, const Rivet::Projection*, bool> {
00021 bool operator()(const Rivet::Projection* x, const Rivet::Projection* y) const;
00022 };
00023
00024 }
00025
00026
00027 namespace Rivet {
00028
00029
00030 template <typename PROJ>
00031 inline const PROJ& pcast(const Projection& p) {
00032 return dynamic_cast<const PROJ&>(p);
00033 }
00034
00035
00036
00037 template <typename PROJ>
00038 inline const PROJ* pcast(const Projection* p) {
00039 return dynamic_cast<const PROJ*>(p);
00040 }
00041
00042 }
00043
00044 #endif