cmd_line.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2. *
  3. * $Id: cmd_line.h,v 1.2 2005/01/30 05:11:40 gabest Exp $ $Name:  $
  4. *
  5. * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  6. *
  7. * The contents of this file are subject to the Mozilla Public License
  8. * Version 1.1 (the "License"); you may not use this file except in compliance
  9. * with the License. You may obtain a copy of the License at
  10. * http://www.mozilla.org/MPL/
  11. *
  12. * Software distributed under the License is distributed on an "AS IS" basis,
  13. * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
  14. * the specific language governing rights and limitations under the License.
  15. *
  16. * The Original Code is BBC Research and Development code.
  17. *
  18. * The Initial Developer of the Original Code is the British Broadcasting
  19. * Corporation.
  20. * Portions created by the Initial Developer are Copyright (C) 2004.
  21. * All Rights Reserved.
  22. *
  23. * Contributor(s): Scott R Ladd (Original Author), Thomas Davies
  24. *
  25. * Alternatively, the contents of this file may be used under the terms of
  26. * the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser
  27. * Public License Version 2.1 (the "LGPL"), in which case the provisions of
  28. * the GPL or the LGPL are applicable instead of those above. If you wish to
  29. * allow use of your version of this file only under the terms of the either
  30. * the GPL or LGPL and not to allow others to use your version of this file
  31. * under the MPL, indicate your decision by deleting the provisions above
  32. * and replace them with the notice and other provisions required by the GPL
  33. * or LGPL. If you do not delete the provisions above, a recipient may use
  34. * your version of this file under the terms of any one of the MPL, the GPL
  35. * or the LGPL.
  36. * ***** END LICENSE BLOCK ***** */
  37. #if !defined(LIBDIRAC_CMD_LINE_H)
  38. #define LIBDIRAC_CMD_LINE_H
  39. // Standard C++
  40. #include <string>
  41. #include <vector>
  42. #include <set>
  43. namespace dirac
  44. {
  45.    // structure for defining the nature of options
  46.    // a very simple command-line parser
  47.    class CommandLine
  48.    {
  49.    public:
  50.        struct option
  51.        {
  52.            std::string m_name;
  53.            std::string m_value;
  54.            option(const std::string & a_name)
  55.            : m_name(a_name), m_value("")
  56.            {
  57.                // nada
  58.            }
  59.        };
  60.        //! Constructor
  61.        CommandLine(int argc, char * argv[], const std::set<std::string> & bool_opts);
  62.        const std::vector<option> & GetOptions() const
  63.        {
  64.            return m_options;
  65.        }
  66.        const std::vector<std::string> & GetInputs() const
  67.        {
  68.            return m_inputs;
  69.        }
  70.        
  71.        // convenience property
  72.        size_t Count() const
  73.        {
  74.            return m_options.size();
  75.        }
  76.    private:
  77.        std::vector<option>      m_options;
  78.        std::vector<std::string> m_inputs;
  79.        const std::set<std::string> & m_bool_opts;
  80.    };
  81. } // namespace dirac
  82. #endif