diff options
Diffstat (limited to 'libs/glibmm2/glibmm/optioncontext.h')
-rw-r--r-- | libs/glibmm2/glibmm/optioncontext.h | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/libs/glibmm2/glibmm/optioncontext.h b/libs/glibmm2/glibmm/optioncontext.h new file mode 100644 index 0000000000..e621648935 --- /dev/null +++ b/libs/glibmm2/glibmm/optioncontext.h @@ -0,0 +1,197 @@ +// -*- c++ -*- +// Generated by gtkmmproc -- DO NOT MODIFY! +#ifndef _GLIBMM_OPTIONCONTEXT_H +#define _GLIBMM_OPTIONCONTEXT_H + + +/* $Id$ */ + +/* Copyright (C) 2004 The glibmm Development Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +#include <glibmm/optionentry.h> +#include <glibmm/optiongroup.h> +#include <glibmm/error.h> + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +extern "C" { typedef struct _GOptionContext GOptionContext; } +#endif + + +namespace Glib +{ + +/** Exception class for options. + */ +class OptionError : public Glib::Error +{ +public: + enum Code + { + UNKNOWN_OPTION, + BAD_VALUE, + FAILED + }; + + OptionError(Code error_code, const Glib::ustring& error_message); + explicit OptionError(GError* gobject); + Code code() const; + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +private: + static void throw_func(GError* gobject); + friend void wrap_init(); // uses throw_func() +#endif +}; + + +/** An OptionContext defines which options are accepted by the commandline option parser. + */ +class OptionContext +{ + public: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + typedef OptionContext CppObjectType; + typedef GOptionContext BaseObjectType; +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +private: + +public: + + /** Creates a new option context. + * @param parameter_string A string which is displayed in the first line of --help output, after programname [OPTION...] + */ + explicit OptionContext(const Glib::ustring& parameter_string = Glib::ustring()); + + //Note that, unlike Glib::Wrap(), this would create a second C++ instance for the same C instance, + //so it should be used carefully. For instance you could not access data in a derived class via this second instance. + explicit OptionContext(GOptionContext* castitem, bool take_ownership = false); + virtual ~OptionContext(); + + + /** Enables or disables automatic generation of <option>--help</option> + * output. By default, g_option_context_parse() recognizes + * <option>--help</option>, <option>-?</option>, <option>--help-all</option> + * and <option>--help-</option><replaceable>groupname</replaceable> and creates + * suitable output to stdout. + * + * Since: 2.6 + * @param help_enabled <tt>true</tt> to enable <option>--help</option>, <tt>false</tt> to disable it. + */ + void set_help_enabled(bool help_enabled = true); + + /** Returns whether automatic <option>--help</option> generation + * is turned on for @a context . See g_option_context_set_help_enabled(). + * @return <tt>true</tt> if automatic help generation is turned on. + * + * Since: 2.6. + */ + bool get_help_enabled() const; + + /** Sets whether to ignore unknown options or not. If an argument is + * ignored, it is left in the @a argv array after parsing. By default, + * g_option_context_parse() treats unknown options as error. + * + * This setting does not affect non-option arguments (i.e. arguments + * which don't start with a dash). But note that GOption cannot reliably + * determine whether a non-option belongs to a preceding unknown option. + * + * Since: 2.6 + * @param ignore_unknown <tt>true</tt> to ignore unknown options, <tt>false</tt> to produce + * an error when unknown options are met. + */ + void set_ignore_unknown_options(bool ignore_unknown = true); + + /** Returns whether unknown options are ignored or not. See + * g_option_context_set_ignore_unknown_options(). + * @return <tt>true</tt> if unknown options are ignored. + * + * Since: 2.6. + */ + bool get_ignore_unknown_options() const; + + + /** Parses the command line arguments, recognizing options + * which have been added to @a context . A side-effect of + * calling this function is that g_set_prgname() will be + * called. + * + * If the parsing is successful, any parsed arguments are + * removed from the array and @a argc and @a argv are updated + * accordingly. In case of an error, @a argc and @a argv are + * left unmodified. + * + * If automatic <option>--help</option> support is enabled + * (see g_option_context_set_help_enabled()), and the + * @a argv array contains one of the recognized help options, + * this function will produce help output to stdout and + * call <tt>exit (0)</tt>. + * @param argc A pointer to the number of command line arguments. + * @param argv A pointer to the array of command line arguments. + * @param error A return location for errors. + * @return <tt>true</tt> if the parsing was successful, + * <tt>false</tt> if an error occurred + * + * Since: 2.6. + */ + bool parse(int& argc, char**& argv); + + //g_option_context_add_main_entries(), just creates a group internally, adds them to it, and does a set_main_group() + //- a group without callbacks seems to do some simple default parsing. + + + /** Adds an OptionGroup to the context, so that parsing with context will recognize the options in the group. + * Note that the group will not be copied, so it should exist for as long as the context exists. + * + * @param group The group to add. + */ + void add_group(OptionGroup& group); + + + /** Sets an OptionGroup as the main group of the context. This has the same effect as calling add_group(), the only + * difference is that the options in the main group are treated differently when generating --help output. + * Note that the group will not be copied, so it should exist for as long as the context exists. + * + * @param group The group to add. + */ + void set_main_group(OptionGroup& group); + + + //We don't need this (hopefully), and the memory management would be really awkward. + //OptionGroup& get_main_group(); + //const OptionGroup& get_main_group() const; + + + GOptionContext* gobj() { return gobject_; } + const GOptionContext* gobj() const { return gobject_; } + +protected: + + GOptionContext* gobject_; + bool has_ownership_; + + +}; + + +} // namespace Glib + + +#endif /* _GLIBMM_OPTIONCONTEXT_H */ + |