00001 /* 00002 This descendent of matcher, performs matches against a whole string. 00003 00004 Copyright (C) 2002 Ross A. Beyer 00005 00006 Contact Author: Ross A. Beyer, rbeyer@rossbeyer.net 00007 00008 CVS $Id: whole_matcher.hpp,v 1.2 2003/03/03 00:52:31 rbeyer Exp $ 00009 00010 00011 License & Copyright Information 00012 ------------------------------- 00013 00014 This file is part of the commandl package, 00015 $Name: commandl_Beta-1 $. 00016 00017 The commandl packge is free software; you can redistribute it 00018 and/or modify it under the terms of the GNU General Public License 00019 as published by the Free Software Foundation; either version 2 of the 00020 License, or (at your option) any later version. 00021 00022 The commandl package is distributed in the hope that it will be useful, 00023 but WITHOUT ANY WARRANTY; without even the implied warranty of 00024 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00025 GNU General Public License for more details. 00026 00027 You should have received a copy of the GNU General Public License 00028 along with this program; if not, write to the Free Software 00029 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00030 00031 */ 00032 00033 #ifndef WHOLE_MATCHER_HEADER // Begin the Header Guard to prevent multiple 00034 #define WHOLE_MATCHER_HEADER // inclusions. 00035 00036 #include "matcher.hpp" 00037 #include <map> 00038 #include <string> 00039 #include <vector> 00040 00041 00042 namespace commandl 00043 { 00044 00051 class whole_matcher : public matcher 00052 { 00053 00054 // ==================== Constructors & Destructor ===================== // 00055 public: 00056 whole_matcher(); 00057 00058 whole_matcher 00059 ( 00060 std::vector<argument*> // arguments 00061 ); 00062 00063 virtual ~whole_matcher(); 00064 00065 // =========================== Accessors ============================== // 00066 public: 00067 00068 virtual argument* 00069 match( const std::string& ) const; 00070 00071 virtual std::string 00072 usage_key( const std::string& ) const; 00073 00074 virtual std::vector<std::string> 00075 usage_keys( const std::vector<std::string>& ) const; 00076 00077 // =========================== Methods ================================ // 00078 public: 00079 00080 virtual std::map<std::string, argument*> 00081 resolve_keys 00082 ( 00083 const std::vector<argument*>& 00084 ); 00085 00086 virtual whole_matcher* 00087 clone() const; 00088 00089 // --------------------------- Protected Methods ---------------------- // 00090 protected: 00091 00092 00093 // --------------------------- Private Methods ------------------------ // 00094 private: 00095 00096 00097 // =========================== Member Variables ======================= // 00098 protected: 00099 00100 }; // End of the class declaration 00101 00102 } // End of the namespace declaration 00103 00104 #endif // End the Header Guard 00105