bin/AbstractParameter.h

Code
Comments
Other
Rev Date Author Line
1293 14 Nov 10 peter 1 #ifndef _theplu_svndigest_abstract_parameter_
1293 14 Nov 10 peter 2 #define _theplu_svndigest_abstract_parameter_
165 24 Aug 06 jari 3
37 13 Jan 06 peter 4 // $Id$
37 13 Jan 06 peter 5
84 13 Mar 06 jari 6 /*
1635 30 Mar 23 peter 7   Copyright (C) 2006 Jari Häkkinen, Peter Johansson
1635 30 Mar 23 peter 8   Copyright (C) 2007 Peter Johansson
1635 30 Mar 23 peter 9   Copyright (C) 2008 Jari Häkkinen, Peter Johansson
1635 30 Mar 23 peter 10   Copyright (C) 2009, 2010 Peter Johansson
84 13 Mar 06 jari 11
687 04 Aug 08 peter 12   This file is part of svndigest, http://dev.thep.lu.se/svndigest
84 13 Mar 06 jari 13
149 12 Aug 06 jari 14   svndigest is free software; you can redistribute it and/or modify it
84 13 Mar 06 jari 15   under the terms of the GNU General Public License as published by
693 11 Sep 08 jari 16   the Free Software Foundation; either version 3 of the License, or
84 13 Mar 06 jari 17   (at your option) any later version.
84 13 Mar 06 jari 18
149 12 Aug 06 jari 19   svndigest is distributed in the hope that it will be useful, but
84 13 Mar 06 jari 20   WITHOUT ANY WARRANTY; without even the implied warranty of
149 12 Aug 06 jari 21   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
84 13 Mar 06 jari 22   General Public License for more details.
84 13 Mar 06 jari 23
84 13 Mar 06 jari 24   You should have received a copy of the GNU General Public License
693 11 Sep 08 jari 25   along with svndigest. If not, see <http://www.gnu.org/licenses/>.
84 13 Mar 06 jari 26 */
84 13 Mar 06 jari 27
1119 04 Jul 10 peter 28 #include "lib/OptionVersion.h"
820 12 Sep 09 peter 29
1673 26 Aug 23 peter 30 #include <yat/utility/CommandLine.h>
1673 26 Aug 23 peter 31 #include <yat/utility/OptionArg.h>
1673 26 Aug 23 peter 32 #include <yat/utility/OptionHelp.h>
1673 26 Aug 23 peter 33 #include <yat/utility/OptionSwitch.h>
625 23 Apr 08 peter 34
37 13 Jan 06 peter 35 #include <string>
37 13 Jan 06 peter 36
37 13 Jan 06 peter 37 namespace theplu {
1513 23 Sep 12 peter 38 namespace yat {
795 30 Jun 09 peter 39 namespace utility {
795 30 Jun 09 peter 40   class OptionHelp;
795 30 Jun 09 peter 41   class OptionSwitch;
795 30 Jun 09 peter 42 }}
149 12 Aug 06 jari 43 namespace svndigest {
37 13 Jan 06 peter 44
705 25 Nov 08 peter 45   class OptionVersion;
705 25 Nov 08 peter 46
37 13 Jan 06 peter 47   // class for command line options.
1293 14 Nov 10 peter 48   class AbstractParameter {
37 13 Jan 06 peter 49   public:
1293 14 Nov 10 peter 50     AbstractParameter(void);
1293 14 Nov 10 peter 51     virtual ~AbstractParameter(void);
1060 02 Jun 10 peter 52     void parse( int argc, char *argv[]);
1060 02 Jun 10 peter 53
1264 02 Nov 10 peter 54     /**
1264 02 Nov 10 peter 55        @return Dereferenced absolute path to root directory
1264 02 Nov 10 peter 56     */
705 25 Nov 08 peter 57     std::string root(void) const;
1264 02 Nov 10 peter 58
1264 02 Nov 10 peter 59     /**
1264 02 Nov 10 peter 60        If --root argument is a link we return the file_name(argument).
1264 02 Nov 10 peter 61        Otherwise we return file_name(root()). See root(void).
1264 02 Nov 10 peter 62
1264 02 Nov 10 peter 63        \return basename of --root argument.
1264 02 Nov 10 peter 64      */
1264 02 Nov 10 peter 65     const std::string& root_basename(void) const;
705 25 Nov 08 peter 66     bool verbose(void) const;
37 13 Jan 06 peter 67
1060 02 Jun 10 peter 68   protected:
1060 02 Jun 10 peter 69     yat::utility::CommandLine cmd_;
1060 02 Jun 10 peter 70     yat::utility::OptionHelp help_;
1293 14 Nov 10 peter 71     yat::utility::OptionArg<std::string> root_;
1060 02 Jun 10 peter 72
1293 14 Nov 10 peter 73     // check that root is OK, i.e., an existing, readable and
1293 14 Nov 10 peter 74     // accessible directory. throw cmd_error if not.
1293 14 Nov 10 peter 75     void analyse_root(const std::string root);
1293 14 Nov 10 peter 76
705 25 Nov 08 peter 77     // throw cmd_error if path doesn't exist
705 25 Nov 08 peter 78     void check_existence(std::string path) const;
705 25 Nov 08 peter 79     // throw cmd_error if path is not dir
705 25 Nov 08 peter 80     void check_is_dir(std::string path) const;
705 25 Nov 08 peter 81     // throw cmd_error if path is not readable
705 25 Nov 08 peter 82     void check_readable(std::string path) const;
37 13 Jan 06 peter 83
1060 02 Jun 10 peter 84   private:
1060 02 Jun 10 peter 85     void analyse(void);
1293 14 Nov 10 peter 86     virtual void analyse1(void)=0;
705 25 Nov 08 peter 87     void init(void);
1060 02 Jun 10 peter 88     // called at end of init(void)
1293 14 Nov 10 peter 89     virtual void init1(void) = 0;
1060 02 Jun 10 peter 90     void set_default(void);
1293 14 Nov 10 peter 91     virtual void set_default1(void)=0;
705 25 Nov 08 peter 92
1264 02 Nov 10 peter 93     std::string root_basename_;
1264 02 Nov 10 peter 94     std::string root_full_;
820 12 Sep 09 peter 95     yat::utility::OptionSwitch verbose_;
1060 02 Jun 10 peter 96   protected:
820 12 Sep 09 peter 97     OptionVersion version_;
705 25 Nov 08 peter 98
37 13 Jan 06 peter 99   };
37 13 Jan 06 peter 100
149 12 Aug 06 jari 101 }} // of namespace svndigest and namespace theplu
37 13 Jan 06 peter 102
37 13 Jan 06 peter 103 #endif