/* * File automatically generated by * gengen 1.0 by Lorenzo Bettini * http://www.gnu.org/software/gengen */ #include "generic_option.h" void generic_option_gen_class::generate_generic_option(ostream &stream, unsigned int indent) { string indent_str (indent, ' '); indent = 0; if (has_short_option) { stream << "case '"; generate_string (short_option, stream, indent + indent_str.length ()); stream << "': /* "; generate_string (option_comment, stream, indent + indent_str.length ()); stream << ". */"; stream << "\n"; stream << indent_str; } else { stream << "/* "; generate_string (option_comment, stream, indent + indent_str.length ()); stream << ". */"; stream << "\n"; stream << indent_str; generate_string (gen_else, stream, indent + indent_str.length ()); stream << "if (strcmp (long_options[option_index].name, \""; generate_string (long_option, stream, indent + indent_str.length ()); stream << "\") == 0)"; stream << "\n"; stream << indent_str; stream << "{"; stream << "\n"; stream << indent_str; } stream << " if (local_args_info."; generate_string (option_var_name, stream, indent + indent_str.length ()); stream << "_given)"; stream << "\n"; stream << indent_str; stream << " {"; stream << "\n"; stream << indent_str; stream << " fprintf (stderr, \"%s: `--"; generate_string (long_option, stream, indent + indent_str.length ()); stream << "'"; if (has_short_option) { stream << " (`-"; generate_string (short_option, stream, indent + indent_str.length ()); stream << "')"; } stream << " option given more than once%s\\n\", "; generate_string (package_var_name, stream, indent + indent_str.length ()); stream << ", (additional_error ? additional_error : \"\"));"; stream << "\n"; stream << indent_str; stream << " goto failure;"; stream << "\n"; stream << indent_str; stream << " }"; stream << "\n"; stream << indent_str; if (option_has_values) { stream << " if ((found = check_possible_values((optarg ? optarg : "; if (( defaultval != "" )) { stream << "\""; generate_string (defaultval, stream, indent + indent_str.length ()); stream << "\" "; } else { stream << "0 "; } stream << "), "; generate_string (option_values, stream, indent + indent_str.length ()); stream << ")) < 0)"; stream << "\n"; stream << indent_str; stream << " {"; stream << "\n"; stream << indent_str; stream << " fprintf (stderr, \"%s: %s argument, \\\"%s\\\", for option `--"; generate_string (long_option, stream, indent + indent_str.length ()); stream << "'"; if (has_short_option) { stream << " (`-"; generate_string (short_option, stream, indent + indent_str.length ()); stream << "')"; } stream << "%s\\n\", "; generate_string (package_var_name, stream, indent + indent_str.length ()); stream << ", (found == -2) ? \"ambiguous\" : \"invalid\", optarg, (additional_error ? additional_error : \"\"));"; stream << "\n"; stream << indent_str; stream << " goto failure;"; stream << "\n"; stream << indent_str; stream << " }"; stream << "\n"; stream << indent_str; } stream << " if (args_info->"; generate_string (option_var_name, stream, indent + indent_str.length ()); stream << "_given && ! override)"; stream << "\n"; stream << indent_str; stream << " continue;"; stream << "\n"; stream << indent_str; stream << " local_args_info."; generate_string (option_var_name, stream, indent + indent_str.length ()); stream << "_given = 1;"; stream << "\n"; stream << indent_str; stream << " args_info->"; generate_string (option_var_name, stream, indent + indent_str.length ()); stream << "_given = 1;"; generate_string (update_group_count, stream, indent + indent_str.length ()); stream << "\n"; stream << indent_str; indent = 2; stream << " "; generate_string (update_arg, stream, indent + indent_str.length ()); if (has_short_option) { } else { stream << "\n"; stream << indent_str; stream << "}"; stream << "\n"; stream << indent_str; } }