Ticket #2096: boost_program_options_no_exceptions.diff

File boost_program_options_no_exceptions.diff, 4.1 KB (added by anonymous, 14 years ago)
  • boost/program_options/detail/value_semantic.hpp

    diff -r 510d5bd079ad boost/program_options/detail/value_semantic.hpp
    a b  
    5555        {
    5656            static std::basic_string<charT> empty;
    5757            if (v.size() > 1)
    58                 throw validation_error("multiple values not allowed");
     58                boost::throw_exception(validation_error("multiple values not allowed"));
    5959            if (v.size() == 1)
    6060                return v.front();
    6161            else if (allow_empty)
    6262                return empty;
    6363            else
    64                 throw validation_error("at least one value required");
     64                boost::throw_exception(validation_error("at least one value required"));
    6565        }
    6666
    6767        /* Throws multiple_occurrences if 'value' is not empty. */
  • libs/program_options/src/cmdline.cpp

    diff -r 510d5bd079ad libs/program_options/src/cmdline.cpp
    a b  
    151151            error = "style disallows all characters for short options";
    152152
    153153        if (error)
    154             throw invalid_command_line_style(error);
     154            boost::throw_exception(invalid_command_line_style(error));
    155155
    156156        // Need to check that if guessing and long disguise are enabled
    157157        // -f will mean the same as -foo
     
    269269                if (opt.position_key != -1) {
    270270                    if (position >= m_positional->max_total_count())
    271271                    {
    272                         throw too_many_positional_options_error(
    273                             "too many positional options");
     272                        boost::throw_exception(too_many_positional_options_error(
     273                                               "too many positional options"));
    274274                    }
    275275                    opt.string_key = m_positional->name_for_position(position);
    276276                    ++position;
     
    323323        if (present_tokens >= min_tokens)
    324324        {
    325325            if (!opt.value.empty() && max_tokens == 0) {
    326                 throw invalid_command_line_syntax(opt.string_key,
    327                     invalid_command_line_syntax::extra_parameter);                                                               
     326                boost::throw_exception(invalid_command_line_syntax(opt.string_key,
     327                                             invalid_command_line_syntax::extra_parameter));
    328328            }
    329329           
    330330            max_tokens -= opt.value.size();
     
    346346        }
    347347        else
    348348        {
    349             throw invalid_command_line_syntax(opt.string_key,
    350                 invalid_command_line_syntax::missing_parameter);
     349            boost::throw_exception(invalid_command_line_syntax(opt.string_key,
     350                                            invalid_command_line_syntax::missing_parameter));
    351351
    352352        }
    353353    }
     
    367367                name = tok.substr(2, p-2);
    368368                adjacent = tok.substr(p+1);
    369369                if (adjacent.empty())
    370                     throw invalid_command_line_syntax(name,
    371                       invalid_command_line_syntax::empty_adjacent_parameter);
     370                    boost::throw_exception( invalid_command_line_syntax(name,
     371                                                      invalid_command_line_syntax::empty_adjacent_parameter));
    372372            }
    373373            else
    374374            {
  • libs/program_options/src/variables_map.cpp

    diff -r 510d5bd079ad libs/program_options/src/variables_map.cpp
    a b  
    7474            try {
    7575                d.semantic()->parse(v.value(), options.options[i].value, utf8);
    7676            }
     77#ifndef BOOST_NO_EXCEPTIONS
    7778            catch(validation_error& e)
    7879            {
    7980                e.set_option_name(name);
    8081                throw;
    8182            }
     83#endif
    8284            v.m_value_semantic = d.semantic();
    8385           
    8486            // The option is not composing, and the value is explicitly