1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef ADC_ADC_CMD_HXX 25 #define ADC_ADC_CMD_HXX 26 27 28 29 // USED SERVICES 30 // BASE CLASSES 31 #include <cosv/comdline.hxx> 32 // COMPONENTS 33 // PARAMETERS 34 35 36 namespace autodoc 37 { 38 namespace command 39 { 40 41 /** Context for a command, which can be read from the command line. 42 */ 43 class Context 44 { 45 public: 46 typedef StringVector::const_iterator opt_iter; 47 48 virtual ~Context() {} 49 50 void Init( 51 opt_iter & it, 52 opt_iter itEnd ); 53 private: 54 virtual void do_Init( 55 opt_iter & it, 56 opt_iter itEnd ) = 0; 57 }; 58 59 // IMPLEMENTATION 60 inline void 61 Context::Init( opt_iter & i_nCurArgsBegin, 62 opt_iter i_nEndOfAllArgs ) 63 64 { do_Init(i_nCurArgsBegin, i_nEndOfAllArgs); } 65 66 67 68 /** Interface for commands, autodoc is able to perform. 69 */ 70 class Command : public Context 71 { 72 public: 73 /** Running ranks of the commands are to be maintained at one location: 74 Here! 75 */ 76 enum E_Ranks 77 { 78 rank_Load = 10, 79 rank_Parse = 20, 80 rank_Save = 30, 81 rank_CreateHtml = 40, 82 rank_CreateXml = 50 83 }; 84 85 86 bool Run() const; 87 int RunningRank() const; 88 89 private: 90 virtual bool do_Run() const = 0; 91 virtual int inq_RunningRank() const = 0; 92 }; 93 94 // IMPLEMENTATION 95 inline bool 96 Command::Run() const 97 { return do_Run(); } 98 inline int 99 Command::RunningRank() const 100 { return inq_RunningRank(); } 101 102 103 104 105 /** The exception thrown, if the command line is invalid. 106 */ 107 class X_CommandLine 108 { 109 public: 110 X_CommandLine( 111 const char * i_sExplanation ) 112 : sExplanation(i_sExplanation) {} 113 114 void Report( 115 std::ostream & o_rOut ) 116 { o_rOut << "Error in command line: " 117 << sExplanation << Endl(); } 118 private: 119 String sExplanation; 120 }; 121 122 123 124 125 } // namespace command 126 } // namespace autodoc 127 #endif 128