// -*- C++ -*-
//
// This file was generated by CLI, a command line interface
// compiler for C++.
//

#ifndef LIBBUILD2_SHELL_SCRIPT_BUILTIN_OPTIONS_HXX
#define LIBBUILD2_SHELL_SCRIPT_BUILTIN_OPTIONS_HXX

// Begin prologue.
//
//
// End prologue.

#include <libbuild2/common-options.hxx>

namespace build2
{
  namespace shell
  {
    namespace script
    {
      class shopt_options
      {
        public:
        shopt_options ();

        shopt_options (int& argc,
                       char** argv,
                       bool erase = false,
                       ::build2::build::cli::unknown_mode option = ::build2::build::cli::unknown_mode::fail,
                       ::build2::build::cli::unknown_mode argument = ::build2::build::cli::unknown_mode::stop);

        shopt_options (int start,
                       int& argc,
                       char** argv,
                       bool erase = false,
                       ::build2::build::cli::unknown_mode option = ::build2::build::cli::unknown_mode::fail,
                       ::build2::build::cli::unknown_mode argument = ::build2::build::cli::unknown_mode::stop);

        shopt_options (int& argc,
                       char** argv,
                       int& end,
                       bool erase = false,
                       ::build2::build::cli::unknown_mode option = ::build2::build::cli::unknown_mode::fail,
                       ::build2::build::cli::unknown_mode argument = ::build2::build::cli::unknown_mode::stop);

        shopt_options (int start,
                       int& argc,
                       char** argv,
                       int& end,
                       bool erase = false,
                       ::build2::build::cli::unknown_mode option = ::build2::build::cli::unknown_mode::fail,
                       ::build2::build::cli::unknown_mode argument = ::build2::build::cli::unknown_mode::stop);

        shopt_options (::build2::build::cli::scanner&,
                       ::build2::build::cli::unknown_mode option = ::build2::build::cli::unknown_mode::fail,
                       ::build2::build::cli::unknown_mode argument = ::build2::build::cli::unknown_mode::stop);

        // Option accessors.
        //
        // Implementation details.
        //
        protected:
        bool
        _parse (const char*, ::build2::build::cli::scanner&);

        private:
        bool
        _parse (::build2::build::cli::scanner&,
                ::build2::build::cli::unknown_mode option,
                ::build2::build::cli::unknown_mode argument);

        public:
      };
    }
  }
}

#include <libbuild2/shell/script/builtin-options.ixx>

// Begin epilogue.
//
//
// End epilogue.

#endif // LIBBUILD2_SHELL_SCRIPT_BUILTIN_OPTIONS_HXX
