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

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

#include <cassert>

namespace build2
{
  namespace test
  {
    namespace script
    {
      namespace cli
      {
        // unknown_mode
        //
        inline unknown_mode::
        unknown_mode (value v)
        : v_ (v)
        {
        }

        // exception
        //
        inline ::std::ostream&
        operator<< (::std::ostream& os, const exception& e)
        {
          e.print (os);
          return os;
        }

        // unknown_option
        //
        inline unknown_option::
        unknown_option (const std::string& option)
        : option_ (option)
        {
        }

        inline const std::string& unknown_option::
        option () const
        {
          return option_;
        }

        // unknown_argument
        //
        inline unknown_argument::
        unknown_argument (const std::string& argument)
        : argument_ (argument)
        {
        }

        inline const std::string& unknown_argument::
        argument () const
        {
          return argument_;
        }

        // missing_value
        //
        inline missing_value::
        missing_value (const std::string& option)
        : option_ (option)
        {
        }

        inline const std::string& missing_value::
        option () const
        {
          return option_;
        }

        // invalid_value
        //
        inline invalid_value::
        invalid_value (const std::string& option,
                       const std::string& value,
                       const std::string& message)
        : option_ (option),
          value_ (value),
          message_ (message)
        {
        }

        inline const std::string& invalid_value::
        option () const
        {
          return option_;
        }

        inline const std::string& invalid_value::
        value () const
        {
          return value_;
        }

        inline const std::string& invalid_value::
        message () const
        {
          return message_;
        }

        // argv_scanner
        //
        inline argv_scanner::
        argv_scanner (int& argc, char** argv, bool erase)
        : i_ (1), argc_ (argc), argv_ (argv), erase_ (erase)
        {
        }

        inline argv_scanner::
        argv_scanner (int start, int& argc, char** argv, bool erase)
        : i_ (start), argc_ (argc), argv_ (argv), erase_ (erase)
        {
        }

        inline int argv_scanner::
        end () const
        {
          return i_;
        }

        // vector_scanner
        //
        inline vector_scanner::
        vector_scanner (const std::vector<std::string>& v, std::size_t i)
        : v_ (v), i_ (i)
        {
        }

        inline std::size_t vector_scanner::
        end () const
        {
          return i_;
        }

        inline void vector_scanner::
        reset (std::size_t i)
        {
          i_ = i;
        }
      }
    }
  }
}

namespace build2
{
  namespace test
  {
    namespace script
    {
      // cleanup_options
      //

      inline const bool& cleanup_options::
      no_cleanup () const
      {
        return this->no_cleanup_;
      }

      // cat_options
      //

      // cp_options
      //

      inline const bool& cp_options::
      recursive () const
      {
        return this->recursive_;
      }

      inline const bool& cp_options::
      preserve () const
      {
        return this->preserve_;
      }

      // ln_options
      //

      inline const bool& ln_options::
      symbolic () const
      {
        return this->symbolic_;
      }

      // mkdir_options
      //

      inline const bool& mkdir_options::
      parents () const
      {
        return this->parents_;
      }

      // mv_options
      //

      inline const bool& mv_options::
      force () const
      {
        return this->force_;
      }

      // rm_options
      //

      inline const bool& rm_options::
      recursive () const
      {
        return this->recursive_;
      }

      inline const bool& rm_options::
      force () const
      {
        return this->force_;
      }

      // rmdir_options
      //

      inline const bool& rmdir_options::
      force () const
      {
        return this->force_;
      }

      // sed_options
      //

      inline const bool& sed_options::
      quiet () const
      {
        return this->quiet_;
      }

      inline const bool& sed_options::
      in_place () const
      {
        return this->in_place_;
      }

      inline const strings& sed_options::
      expression () const
      {
        return this->expression_;
      }

      inline bool sed_options::
      expression_specified () const
      {
        return this->expression_specified_;
      }

      // set_options
      //

      inline const bool& set_options::
      exact () const
      {
        return this->exact_;
      }

      inline const bool& set_options::
      newline () const
      {
        return this->newline_;
      }

      inline const bool& set_options::
      whitespace () const
      {
        return this->whitespace_;
      }

      // sleep_options
      //

      // test_options
      //

      inline const bool& test_options::
      file () const
      {
        return this->file_;
      }

      inline const bool& test_options::
      directory () const
      {
        return this->directory_;
      }

      // touch_options
      //

      inline const string& touch_options::
      after () const
      {
        return this->after_;
      }

      inline bool touch_options::
      after_specified () const
      {
        return this->after_specified_;
      }
    }
  }
}

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