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