1 2 /****************************************************************************** 3 * 4 * file: HelpVisitor.h 5 * 6 * Copyright (c) 2003, Michael E. Smoot . 7 * All rights reverved. 8 * 9 * See the file COPYING in the top directory of this distribution for 10 * more information. 11 * 12 * THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS 13 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 14 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 15 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 16 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 17 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 18 * DEALINGS IN THE SOFTWARE. 19 * 20 *****************************************************************************/ 21 22 #ifndef TCLAP_HELP_VISITOR_H 23 #define TCLAP_HELP_VISITOR_H 24 25 #include <tclap/CmdLineInterface.h> 26 #include <tclap/CmdLineOutput.h> 27 #include <tclap/Visitor.h> 28 29 namespace TCLAP { 30 31 /** 32 * A Visitor object that calls the usage method of the given CmdLineOutput 33 * object for the specified CmdLine object. 34 */ 35 class HelpVisitor: public Visitor 36 { 37 private: 38 /** 39 * Prevent accidental copying. 40 */ 41 HelpVisitor(const HelpVisitor& rhs); 42 HelpVisitor& operator=(const HelpVisitor& rhs); 43 44 protected: 45 46 /** 47 * The CmdLine the output will be generated for. 48 */ 49 CmdLineInterface* _cmd; 50 51 /** 52 * The output object. 53 */ 54 CmdLineOutput** _out; 55 56 public: 57 58 /** 59 * Constructor. 60 * \param cmd - The CmdLine the output will be generated for. 61 * \param out - The type of output. 62 */ HelpVisitor(CmdLineInterface * cmd,CmdLineOutput ** out)63 HelpVisitor(CmdLineInterface* cmd, CmdLineOutput** out) 64 : Visitor(), _cmd( cmd ), _out( out ) { } 65 66 /** 67 * Calls the usage method of the CmdLineOutput for the 68 * specified CmdLine. 69 */ visit()70 void visit() { (*_out)->usage(*_cmd); throw ExitException(0); } 71 72 }; 73 74 } 75 76 #endif 77