19 #include "typename.hh" 115 KTCut(
const std::string& name =
"default-cut-name");
126 template<
class XDataType >
130 KTCutOneArg(
const std::string& name =
"default-cut-name");
133 virtual bool Apply(
KTData& data, XDataType& dataType) = 0;
143 template<
class XDataType1,
class XDataType2 >
147 KTCutTwoArgs(
const std::string& name =
"default-cut-name");
150 virtual bool Apply(
KTData& data, XDataType1& dataType1, XDataType2& dataType2) = 0;
160 template<
class XDataType >
166 template<
class XDataType >
170 template<
class XDataType >
173 if (! dataPtr->Has< XDataType >())
175 KTERROR(cutlog_h,
"Data type <" << scarab::type(XDataType()) <<
"> was not present");
178 return Apply(dataPtr->Of<
KTData >(), dataPtr->
Of< XDataType >());
182 template<
class XDataType1,
class XDataType2 >
188 template<
class XDataType1,
class XDataType2 >
192 template<
class XDataType1,
class XDataType2 >
195 if (! dataPtr->Has< XDataType1 >())
197 KTERROR(cutlog_h,
"Data type <" << scarab::type(XDataType1()) <<
"> was not present");
200 if (! dataPtr->Has< XDataType2 >())
202 KTERROR(cutlog_h,
"Data type <" << scarab::type(XDataType2()) <<
"> was not present");
205 return Apply(dataPtr->Of<
KTData >(), dataPtr->
Of< XDataType1 >(), dataPtr->Of< XDataType2 >());
241 #define KT_REGISTER_CUT(cut_class) \ 242 static ::scarab::registrar< ::Nymph::KTCut, cut_class, const std::string& > sCut##cut_class##Registrar( cut_class::Result::sName ); \ 243 static ::Nymph::KTExtensibleStructRegistrar< ::Nymph::KTCutResultCore, cut_class::Result > sCut##cut_class##ResultRegistrar( cut_class::Result::sName ); Base class for a cut that gets applied to data objects.
virtual bool Apply(KTDataPtr)=0
XStructType & Of(void)
Returns a reference to the object of type XStructType; creates that object if it doesn't exist...
virtual bool Apply(KTData &data, XDataType1 &dataType1, XDataType2 &dataType2)=0
KTLOGGER(applog, "KTApplication")
KTCutOneArg(const std::string &name="default-cut-name")
KTCut(const std::string &name="default-cut-name")
boost::shared_ptr< KTData > KTDataPtr
Contains the logger class and macros, based on Kasper's KLogger class.