optioncontext.h

// -*- c++ -*-// Generated by gtkmmproc -- DO NOT MODIFY!#ifndef _GLIBMM_OPTIONCONTEXT_H#define _GLIBMM_OPTIONCONTEXT_H/* $Id: optioncontext.h 4 2005-05-13 20:47:18Z taybin $ *//* 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_THISextern"C" { typedefstruct _GOptionContext GOptionContext; }
#endifnamespace Glib
{
/** Exception class for options. */00041class OptionError : public Glib::Error
{
public:
enum Code
{
UNKNOWN_OPTION,
BAD_VALUE,
FAILED
};
OptionError(Code error_code, constGlib::ustring& error_message);
explicitOptionError(GError* gobject);
Code code() const;
#ifndef DOXYGEN_SHOULD_SKIP_THISprivate:
staticvoid throw_func(GError* gobject);
friendvoid wrap_init(); // uses throw_func()#endif};
/** An OptionContext defines which options are accepted by the commandline option parser. */00065class OptionContext
{
public:
#ifndef DOXYGEN_SHOULD_SKIP_THIStypedefOptionContextCppObjectType;
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...] */explicitOptionContext(constGlib::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.explicitOptionContext(GOptionContext* castitem, bool take_ownership = false);
virtual ~OptionContext();
/** Enables or disables automatic generation of &lt;option&gt;--help&lt;/option&gt; * output. By default, g_option_context_parse() recognizes * &lt;option&gt;--help&lt;/option&gt;, &lt;option&gt;-?&lt;/option&gt;, &lt;option&gt;--help-all&lt;/option&gt; * and &lt;option&gt;--help-&lt;/option&gt;&lt;replaceable&gt;groupname&lt;/replaceable&gt; and creates * suitable output to stdout. * * Since: 2.6 * @param help_enabled <tt>true</tt> to enable &lt;option&gt;--help&lt;/option&gt;, <tt>false</tt> to disable it. */voidset_help_enabled(bool help_enabled = true);
/** Returns whether automatic &lt;option&gt;--help&lt;/option&gt; 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. */boolget_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. */voidset_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. */boolget_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 &lt;option&gt;--help&lt;/option&gt; 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. */boolparse(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. */voidadd_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. */voidset_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 */