mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-10-24 01:01:15 -06:00
Initial work for G-code sender and more intensive usage of Boost
This commit is contained in:
parent
43cbad8867
commit
11dd67ab34
1649 changed files with 1860 additions and 1642 deletions
153
xs/include/boost/test/utils/runtime/cla/parser.hpp
Normal file
153
xs/include/boost/test/utils/runtime/cla/parser.hpp
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
// (C) Copyright Gennadiy Rozental 2005-2008.
|
||||
// Use, modification, and distribution are subject to the
|
||||
// Boost Software License, Version 1.0. (See accompanying file
|
||||
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// See http://www.boost.org/libs/test for the library home page.
|
||||
//
|
||||
// File : $RCSfile$
|
||||
//
|
||||
// Version : $Revision: 57992 $
|
||||
//
|
||||
// Description : defines parser - public interface for CLA parsing and accessing
|
||||
// ***************************************************************************
|
||||
|
||||
#ifndef BOOST_RT_CLA_PARSER_HPP_062604GER
|
||||
#define BOOST_RT_CLA_PARSER_HPP_062604GER
|
||||
|
||||
// Boost.Runtime.Parameter
|
||||
#include <boost/test/utils/runtime/config.hpp>
|
||||
#include <boost/test/utils/runtime/fwd.hpp>
|
||||
#include <boost/test/utils/runtime/argument.hpp>
|
||||
|
||||
#include <boost/test/utils/runtime/cla/fwd.hpp>
|
||||
#include <boost/test/utils/runtime/cla/modifier.hpp>
|
||||
#include <boost/test/utils/runtime/cla/argv_traverser.hpp>
|
||||
|
||||
// Boost
|
||||
#include <boost/optional.hpp>
|
||||
|
||||
// STL
|
||||
#include <list>
|
||||
|
||||
namespace boost {
|
||||
|
||||
namespace BOOST_RT_PARAM_NAMESPACE {
|
||||
|
||||
namespace cla {
|
||||
|
||||
// ************************************************************************** //
|
||||
// ************** runtime::cla::parser ************** //
|
||||
// ************************************************************************** //
|
||||
|
||||
namespace cla_detail {
|
||||
|
||||
template<typename Modifier>
|
||||
class global_mod_parser {
|
||||
public:
|
||||
global_mod_parser( parser& p, Modifier const& m )
|
||||
: m_parser( p )
|
||||
, m_modifiers( m )
|
||||
{}
|
||||
|
||||
template<typename Param>
|
||||
global_mod_parser const&
|
||||
operator<<( shared_ptr<Param> param ) const
|
||||
{
|
||||
param->accept_modifier( m_modifiers );
|
||||
|
||||
m_parser << param;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
private:
|
||||
// Data members;
|
||||
parser& m_parser;
|
||||
Modifier const& m_modifiers;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
// ************************************************************************** //
|
||||
// ************** runtime::cla::parser ************** //
|
||||
// ************************************************************************** //
|
||||
|
||||
class parser {
|
||||
public:
|
||||
typedef std::list<parameter_ptr>::const_iterator param_iterator;
|
||||
|
||||
// Constructor
|
||||
explicit parser( cstring program_name = cstring() );
|
||||
|
||||
// parameter list construction interface
|
||||
parser& operator<<( parameter_ptr param );
|
||||
|
||||
// parser and global parameters modifiers
|
||||
template<typename Modifier>
|
||||
cla_detail::global_mod_parser<Modifier>
|
||||
operator-( Modifier const& m )
|
||||
{
|
||||
nfp::optionally_assign( m_traverser.p_separator.value, m, input_separator );
|
||||
nfp::optionally_assign( m_traverser.p_ignore_mismatch.value, m, ignore_mismatch_m );
|
||||
|
||||
return cla_detail::global_mod_parser<Modifier>( *this, m );
|
||||
}
|
||||
|
||||
// input processing method
|
||||
void parse( int& argc, char_type** argv );
|
||||
|
||||
// parameters access
|
||||
param_iterator first_param() const;
|
||||
param_iterator last_param() const;
|
||||
|
||||
// arguments access
|
||||
const_argument_ptr operator[]( cstring string_id ) const;
|
||||
cstring get( cstring string_id ) const;
|
||||
|
||||
template<typename T>
|
||||
T const& get( cstring string_id ) const
|
||||
{
|
||||
return arg_value<T>( valid_argument( string_id ) );
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void get( cstring string_id, boost::optional<T>& res ) const
|
||||
{
|
||||
const_argument_ptr actual_arg = (*this)[string_id];
|
||||
|
||||
if( actual_arg )
|
||||
res = arg_value<T>( *actual_arg );
|
||||
else
|
||||
res.reset();
|
||||
}
|
||||
|
||||
// help/usage
|
||||
void usage( out_stream& ostr );
|
||||
void help( out_stream& ostr );
|
||||
|
||||
private:
|
||||
argument const& valid_argument( cstring string_id ) const;
|
||||
|
||||
// Data members
|
||||
argv_traverser m_traverser;
|
||||
std::list<parameter_ptr> m_parameters;
|
||||
dstring m_program_name;
|
||||
};
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
} // namespace cla
|
||||
|
||||
} // namespace BOOST_RT_PARAM_NAMESPACE
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#ifndef BOOST_RT_PARAM_OFFLINE
|
||||
|
||||
# define BOOST_RT_PARAM_INLINE inline
|
||||
# include <boost/test/utils/runtime/cla/parser.ipp>
|
||||
|
||||
#endif
|
||||
|
||||
#endif // BOOST_RT_CLA_PARSER_HPP_062604GER
|
||||
Loading…
Add table
Add a link
Reference in a new issue