ConditionalCommand.h dnacalib/Command.h DNACalib.h dnac::ConditionalCommand dnac //CopyrightEpicGames,Inc.AllRightsReserved. #pragmaonce #include"dnacalib/Command.h" namespacednac{ classDNACalibDNAReader; template<classTCommand,classTCondition> classConditionalCommand:publicCommand{ private: usingCommandType=TCommand; usingConditionType=TCondition; public: ConditionalCommand(): command{nullptr}, condition{}{ } ConditionalCommand(CommandType*command_,ConditionTypecondition_): command{command_}, condition{condition_}{ } ~ConditionalCommand()=default; ConditionalCommand(constConditionalCommand&)=delete; ConditionalCommand&operator=(constConditionalCommand&)=delete; ConditionalCommand(ConditionalCommand&&)=default; ConditionalCommand&operator=(ConditionalCommand&&)=default; voidsetCommand(Command*command_){ command=command_; } voidsetCondition(ConditionTypecondition_){ condition=condition_; } voidrun(DNACalibDNAReader*output)override{ if(command&&condition(command,output)){ command->run(output); } } private: CommandType*command; ConditionTypecondition; }; template<classTCommand,classTCondition> ConditionalCommand<TCommand, TCondition>makeConditional(TCommand*command,TConditioncondition){ returnConditionalCommand<TCommand, TCondition>{command,condition}; } }//namespacednac