williamr@2: /* goption.h - Option parser williamr@2: * williamr@2: * Copyright (C) 2004 Anders Carlsson williamr@2: * Portions copyright (c) 2006 Nokia Corporation. All rights reserved. williamr@2: * williamr@2: * This library is free software; you can redistribute it and/or williamr@2: * modify it under the terms of the GNU Library General Public williamr@2: * License as published by the Free Software Foundation; either williamr@2: * version 2 of the License, or (at your option) any later version. williamr@2: * williamr@2: * This library is distributed in the hope that it will be useful, williamr@2: * but WITHOUT ANY WARRANTY; without even the implied warranty of williamr@2: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU williamr@2: * Library General Public License for more details. williamr@2: * williamr@2: * You should have received a copy of the GNU Library General Public williamr@2: * License along with this library; if not, write to the williamr@2: * Free Software Foundation, Inc., 59 Temple Place - Suite 330, williamr@2: * Boston, MA 02111-1307, USA. williamr@2: */ williamr@2: williamr@2: #ifndef __G_OPTION_H__ williamr@2: #define __G_OPTION_H__ williamr@2: williamr@2: #include <_ansi.h> williamr@2: #include williamr@2: #include williamr@2: williamr@2: G_BEGIN_DECLS williamr@2: williamr@2: typedef struct _GOptionContext GOptionContext; williamr@2: typedef struct _GOptionGroup GOptionGroup; williamr@2: typedef struct _GOptionEntry GOptionEntry; williamr@2: williamr@2: typedef enum williamr@2: { williamr@2: G_OPTION_FLAG_HIDDEN = 1 << 0, williamr@2: G_OPTION_FLAG_IN_MAIN = 1 << 1, williamr@2: G_OPTION_FLAG_REVERSE = 1 << 2, williamr@2: G_OPTION_FLAG_NO_ARG = 1 << 3, williamr@2: G_OPTION_FLAG_FILENAME = 1 << 4, williamr@2: G_OPTION_FLAG_OPTIONAL_ARG = 1 << 5, williamr@2: G_OPTION_FLAG_NOALIAS = 1 << 6 williamr@2: } GOptionFlags; williamr@2: williamr@2: typedef enum williamr@2: { williamr@2: G_OPTION_ARG_NONE, williamr@2: G_OPTION_ARG_STRING, williamr@2: G_OPTION_ARG_INT, williamr@2: G_OPTION_ARG_CALLBACK, williamr@2: G_OPTION_ARG_FILENAME, williamr@2: G_OPTION_ARG_STRING_ARRAY, williamr@2: G_OPTION_ARG_FILENAME_ARRAY williamr@2: } GOptionArg; williamr@2: williamr@2: typedef gboolean (*GOptionArgFunc) (const gchar *option_name, williamr@2: const gchar *value, williamr@2: gpointer data, williamr@2: GError **error); williamr@2: williamr@2: typedef gboolean (*GOptionParseFunc) (GOptionContext *context, williamr@2: GOptionGroup *group, williamr@2: gpointer data, williamr@2: GError **error); williamr@2: williamr@2: typedef void (*GOptionErrorFunc) (GOptionContext *context, williamr@2: GOptionGroup *group, williamr@2: gpointer data, williamr@2: GError **error); williamr@2: williamr@2: #define G_OPTION_ERROR (g_option_error_quark ()) williamr@2: williamr@2: typedef enum williamr@2: { williamr@2: G_OPTION_ERROR_UNKNOWN_OPTION, williamr@2: G_OPTION_ERROR_BAD_VALUE, williamr@2: G_OPTION_ERROR_FAILED williamr@2: } GOptionError; williamr@2: williamr@2: IMPORT_C GQuark g_option_error_quark (void); williamr@2: williamr@2: williamr@2: struct _GOptionEntry williamr@2: { williamr@2: const gchar *long_name; williamr@2: gchar short_name; williamr@2: gint flags; williamr@2: williamr@2: GOptionArg arg; williamr@2: gpointer arg_data; williamr@2: williamr@2: const gchar *description; williamr@2: const gchar *arg_description; williamr@2: }; williamr@2: williamr@2: #define G_OPTION_REMAINING "" williamr@2: williamr@2: IMPORT_C GOptionContext *g_option_context_new (const gchar *parameter_string); williamr@2: IMPORT_C void g_option_context_free (GOptionContext *context); williamr@2: IMPORT_C void g_option_context_set_help_enabled (GOptionContext *context, williamr@2: gboolean help_enabled); williamr@2: IMPORT_C gboolean g_option_context_get_help_enabled (GOptionContext *context); williamr@2: IMPORT_C void g_option_context_set_ignore_unknown_options (GOptionContext *context, williamr@2: gboolean ignore_unknown); williamr@2: IMPORT_C gboolean g_option_context_get_ignore_unknown_options (GOptionContext *context); williamr@2: williamr@2: IMPORT_C void g_option_context_add_main_entries (GOptionContext *context, williamr@2: const GOptionEntry *entries, williamr@2: const gchar *translation_domain); williamr@2: IMPORT_C gboolean g_option_context_parse (GOptionContext *context, williamr@2: gint *argc, williamr@2: gchar ***argv, williamr@2: GError **error); williamr@2: williamr@2: IMPORT_C void g_option_context_add_group (GOptionContext *context, williamr@2: GOptionGroup *group); williamr@2: IMPORT_C void g_option_context_set_main_group (GOptionContext *context, williamr@2: GOptionGroup *group); williamr@2: IMPORT_C GOptionGroup *g_option_context_get_main_group (GOptionContext *context); williamr@2: williamr@2: williamr@2: IMPORT_C GOptionGroup *g_option_group_new (const gchar *name, williamr@2: const gchar *description, williamr@2: const gchar *help_description, williamr@2: gpointer user_data, williamr@2: GDestroyNotify destroy); williamr@2: IMPORT_C void g_option_group_set_parse_hooks (GOptionGroup *group, williamr@2: GOptionParseFunc pre_parse_func, williamr@2: GOptionParseFunc post_parse_func); williamr@2: IMPORT_C void g_option_group_set_error_hook (GOptionGroup *group, williamr@2: GOptionErrorFunc error_func); williamr@2: IMPORT_C void g_option_group_free (GOptionGroup *group); williamr@2: IMPORT_C void g_option_group_add_entries (GOptionGroup *group, williamr@2: const GOptionEntry *entries); williamr@2: IMPORT_C void g_option_group_set_translate_func (GOptionGroup *group, williamr@2: GTranslateFunc func, williamr@2: gpointer data, williamr@2: GDestroyNotify destroy_notify); williamr@2: IMPORT_C void g_option_group_set_translation_domain (GOptionGroup *group, williamr@2: const gchar *domain); williamr@2: williamr@2: williamr@2: G_END_DECLS williamr@2: williamr@2: #endif /* __G_OPTION_H__ */