The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

Commandline option parser

Commandline option parser — Анализатор опций командной строки

Краткое описание


#include <glib.h>


enum        GOptionError;
#define     G_OPTION_ERROR
gboolean    (*GOptionArgFunc)               (const gchar *option_name,
                                             const gchar *value,
                                             gpointer data,
                                             GError **error);
            GOptionContext;
GOptionContext* g_option_context_new        (const gchar *parameter_string);
void        g_option_context_set_summary    (GOptionContext *context,
                                             const gchar *summary);
const gchar* g_option_context_get_summary   (GOptionContext *context);
void        g_option_context_set_description
                                            (GOptionContext *context,
                                             const gchar *description);
const gchar* g_option_context_get_description
                                            (GOptionContext *context);
const gchar* (*GTranslateFunc)              (const gchar *str,
                                             gpointer data);
void        g_option_context_set_translate_func
                                            (GOptionContext *context,
                                             GTranslateFunc func,
                                             gpointer data,
                                             GDestroyNotify destroy_notify);
void        g_option_context_set_translation_domain
                                            (GOptionContext *context,
                                             const gchar *domain);
void        g_option_context_free           (GOptionContext *context);
gboolean    g_option_context_parse          (GOptionContext *context,
                                             gint *argc,
                                             gchar ***argv,
                                             GError **error);
void        g_option_context_set_help_enabled
                                            (GOptionContext *context,
                                             gboolean help_enabled);
gboolean    g_option_context_get_help_enabled
                                            (GOptionContext *context);
void        g_option_context_set_ignore_unknown_options
                                            (GOptionContext *context,
                                             gboolean ignore_unknown);
gboolean    g_option_context_get_ignore_unknown_options
                                            (GOptionContext *context);
enum        GOptionArg;
enum        GOptionFlags;
#define     G_OPTION_REMAINING
            GOptionEntry;
void        g_option_context_add_main_entries
                                            (GOptionContext *context,
                                             const GOptionEntry *entries,
                                             const gchar *translation_domain);
            GOptionGroup;
void        g_option_context_add_group      (GOptionContext *context,
                                             GOptionGroup *group);
void        g_option_context_set_main_group (GOptionContext *context,
                                             GOptionGroup *group);
GOptionGroup* g_option_context_get_main_group
                                            (GOptionContext *context);
GOptionGroup* g_option_group_new            (const gchar *name,
                                             const gchar *description,
                                             const gchar *help_description,
                                             gpointer user_data,
                                             GDestroyNotify destroy);
void        g_option_group_free             (GOptionGroup *group);
void        g_option_group_add_entries      (GOptionGroup *group,
                                             const GOptionEntry *entries);
gboolean    (*GOptionParseFunc)             (GOptionContext *context,
                                             GOptionGroup *group,
                                             gpointer data,
                                             GError **error);
void        g_option_group_set_parse_hooks  (GOptionGroup *group,
                                             GOptionParseFunc pre_parse_func,
                                             GOptionParseFunc post_parse_func);
void        (*GOptionErrorFunc)             (GOptionContext *context,
                                             GOptionGroup *group,
                                             gpointer data,
                                             GError **error);
void        g_option_group_set_error_hook   (GOptionGroup *group,
                                             GOptionErrorFunc error_func);
void        g_option_group_set_translate_func
                                            (GOptionGroup *group,
                                             GTranslateFunc func,
                                             gpointer data,
                                             GDestroyNotify destroy_notify);
void        g_option_group_set_translation_domain
                                            (GOptionGroup *group,
                                             const gchar *domain);

Описание

Анализатор командной строки GOption предназначен для более простой замены библиотеки popt. Он поддерживает короткие и длинные опции командной строки, как показано в следующем примере:

testtreemodel -r 1 --max-size 20 --rand --display=:1.0 -vb -- file1 file2

Пример демонстрирует множество особенностей синтаксического анализатора командной строки GOption

  • Опции могут быть одиночной буквой с предустановленным одиночным тире. Множество коротких опций могут быть сгруппированы за одним тире.

  • Длинные опцией предустанавливаются двумя последовательными тире.

  • Опции могут иметь дополнительный аргумент, который может быть числом, строкой или именем файла. Для длинных опций, дополнительный аргумент может быть присоединён с помощью знака равенства сразу после названия опции.

  • Неопциональные аргументы возвращаются как сброшенные аргументы.

  • Аргумент состоящий исключительно из двух тире предотвращает дальнейший анализ, любые аргументы (даже которые начинаются с тире) возвращаются как сброшенные аргументы.

Другая важная особенность GOption в автоматической генерации приятно оформленного вывода справки. Если это явно не выключено с помощью функции g_option_context_set_help_enabled(), GOption распознаёт --help, -?, --help-all и --help-groupname опции (где groupname это имя GOptionGroup) и пишет текст, подобный показанному в следующем примере, в stdout.

Usage:
  testtreemodel [OPTION...] - test tree model performance

Help Options:
  -?, --help               Показать опции справки
  --help-all               Показать все опции справки
  --help-gtk               Показать опции GTK+

Application Options:
  -r, --repeats=N          Среднее число повторений N
  -m, --max-size=M         Проверить до 2^M элементов
  --display=DISPLAY        X display для использования
  -v, --verbose            Подробности
  -b, --beep               Сигнал при выполнении   
  --rand                   Произвольные данные

Группы опций GOption находятся в GOptionGroups, которые облегчают включение опций из многочисленных источников. Они позволяют приложениям собирать группы опций из используемых библиотек, добавляя их к своему GOptionContext, и анализируя все опции одним вызовом g_option_context_parse(). Смотрите gtk_get_option_group() для примера.

Если задекларированная опция является печатной строкой или именем файла, GOption позаботится о преобразовании в правильную кодировку; строки возвращаются в кодировке UTF-8, имена файлов в кодировке имён файлов GLib.

Вот полный пример настроек GOption для анализа командной строки приведенной в примере выше и выполнение вывода примера справки.

static gint repeats = 2;
static gint max_size = 8;
static gboolean verbose = FALSE;
static gboolean beep = FALSE;
static gboolean rand = FALSE;

static GOptionEntry entries[] = 
{
  { "repeats", 'r', 0, G_OPTION_ARG_INT, &repeats, "Среднее число повторений N", "N" },
  { "max-size", 'm', 0, G_OPTION_ARG_INT, &max_size, "Проверка до 2^M элементов", "M" },
  { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "Подробности", NULL },
  { "beep", 'b', 0, G_OPTION_ARG_NONE, &beep, "Сигнал при выполнениии", NULL },
  { "rand", 0, 0, G_OPTION_ARG_NONE, &rand, "Произовольные данные", NULL },
  { NULL }
};

int 
main (int argc, char *argv[])
{
  GError *error = NULL;
  GOptionContext *context;

  context = g_option_context_new ("- test tree model performance");
  g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
  g_option_context_add_group (context, gtk_get_option_group (TRUE));
  g_option_context_parse (context, &argc, &argv, &error);
  
  /* ... */

}

Детали

enum GOptionError

typedef enum
{
  G_OPTION_ERROR_UNKNOWN_OPTION,
  G_OPTION_ERROR_BAD_VALUE,
  G_OPTION_ERROR_FAILED
} GOptionError;

Коды ошибок возвращаемые анализатором опций.

G_OPTION_ERROR_UNKNOWN_OPTION Опция неизвестна анализатору. Эта ошибка будет сообщена только если анализатор небыл проинструктирован игнорировать неизвестные опции, смотрите g_option_context_set_ignore_unknown_options().
G_OPTION_ERROR_BAD_VALUE Значение небыло проанализировано.
G_OPTION_ERROR_FAILED Функция GOptionArgFunc завершилась неудачно.

G_OPTION_ERROR

#define G_OPTION_ERROR (g_option_error_quark ())

Домен ошибки для анализатора опций. Ошибки в этом домене из перечисления GOptionError. Смотрите GError для информации о доменах ошибок.


GOptionArgFunc ()

gboolean    (*GOptionArgFunc)               (const gchar *option_name,
                                             const gchar *value,
                                             gpointer data,
                                             GError **error);

Тип функции для анализа как callback-функция для опции G_OPTION_ARG_CALLBACK.

option_name : Имя анализируемой опции. Это может быть любая буква с предустановленным одиночным тире (для коротких имён) или два последовательных тире перед длинным именем.
value : Значение для анализа.
data : Пользовательские данные добавляемые в GOptionGroup содержащую опции, которая была создана с помощью g_option_group_new()
error : Расположение для возвращаемых ошибок. Коды ошибок G_OPTION_ERROR_FAILED предназначены для использования в GOptionArgFunc.
Возвращает : TRUE если опция была полностью проанализирована, FALSE если произошла ошибка, в этом случае error должна быть установлена с помощью g_set_error()

GOptionContext

typedef struct _GOptionContext GOptionContext;

Структура GOptionContext определяет какие опции применяются анализатором опций командной строки. Структура содержит только закрытые поля и не должна использоваться непосредственно.


g_option_context_new ()

GOptionContext* g_option_context_new        (const gchar *parameter_string);

Создаёт новый опциональный контекст.

parameter_string может служить для множества целей. Он может служить для добавления описания сброшенных аргументов, которые не проанализированы GOptionContext, обычно что-то вроде "FILES" или "FILE1 FILE2...". Если вы используете G_OPTION_REMAINING для сбора сброшенных параметров, GLib обработает это автоматически используя arg_description соответсвующий GOptionEntry в суммарном использовании.

Другое назначение может дать короткое описание функциональности программы, например " - frob strings", которое отобразится в той же строке где и "использование". Для длинных описаний функциональности программы, которые должны отображаться как параграф ниже линии описывающей использование программы, используйте g_option_context_set_summary().

Помните что parameter_string переводится (смотрите g_option_context_set_translate_func()).

parameter_string : строка которая отображается в первой линии вывода --help, после короткого описания использования programname [OPTION...]
Возвращает : вновь созданная GOptionContext, которая должна быть освобождена с помощью g_option_context_free() после использования.

Начиная с версии 2.6


g_option_context_set_summary ()

void        g_option_context_set_summary    (GOptionContext *context,
                                             const gchar *summary);

Добавляет строку в отображаемый вывод --help перед списком опций. Обычно это короткое описание функциональности программы.

Помните что короткое описание переводится (смотрите g_option_context_set_translate_func()).

context : GOptionContext
summary : строка для отображения в выводе --help перед списком опций, или NULL

Начиная с версии 2.12


g_option_context_get_summary ()

const gchar* g_option_context_get_summary   (GOptionContext *context);

Возвращает короткое описание. Смотрите g_option_context_set_summary().

context : GOptionContext
Возвращает : короткое описание

Начиная с версии 2.12


g_option_context_set_description ()

void        g_option_context_set_description
                                            (GOptionContext *context,
                                             const gchar *description);

Добавляет строку для отображения в выводе --help после списка опций. Этот текст часто включает адрес для сообщения об ошибках.

Помните что краткое описание переводится (смотрите g_option_context_set_translate_func()).

context : GOptionContext
description : строка для отображения в выводе --help после списка опций, или NULL

Начиная с версии 2.12


g_option_context_get_description ()

const gchar* g_option_context_get_description
                                            (GOptionContext *context);

Возвращает описание. Смотрите g_option_context_set_description().

context : GOptionContext
Возвращает : описание

Начиная с версии 2.12


GTranslateFunc ()

const gchar* (*GTranslateFunc)              (const gchar *str,
                                             gpointer data);

Тип функции которая используется для перевода видимых пользователем строк, для вывода --help.

str : непереведённая строка
data : пользовательские данные определяемые при установке функции, например g_option_group_set_translate_func()
Возвращает : переведённую строку для текущей локализации. Возвращаемой строкой владеет GLib и она не должна освобождаться.

g_option_context_set_translate_func ()

void        g_option_context_set_translate_func
                                            (GOptionContext *context,
                                             GTranslateFunc func,
                                             gpointer data,
                                             GDestroyNotify destroy_notify);

Устанавливает функцию которая используется для перевода содержимого строк видимых пользователем, для вывода --help. Если func равен NULL, строки не переводятся.

Помните что группы опций имеют собственные функции перевода, эта функция затрагивает только parameter_string (смотрите g_option_context_nex()), краткое описание (смотрите g_option_context_set_summary()) и описание (смотрите g_option_context_set_description()).

Если вы используете gettext(), вам нужно только установить область перевода, смотрите g_context_group_set_translation_domain().

context : GOptionContext
func : GTranslateFunc, или NULL
data : пользовательские данные помещаемые в func, или NULL
destroy_notify : функция которая вызывается для освобождения data, или NULL

Начиная с версии 2.12


g_option_context_set_translation_domain ()

void        g_option_context_set_translation_domain
                                            (GOptionContext *context,
                                             const gchar *domain);

Удобная функция использующая gettext() для перевода видимых пользователем строк.

context : GOptionContext
domain : используемая область

Начиная с версии 2.12


g_option_context_free ()

void        g_option_context_free           (GOptionContext *context);

Освобождает контекст и все добавленные в него группы.

context : GOptionContext

Начиная с версии 2.6


g_option_context_parse ()

gboolean    g_option_context_parse          (GOptionContext *context,
                                             gint *argc,
                                             gchar ***argv,
                                             GError **error);

Анализирует аргументы командной строки, распознавая опции которые были добавлены в context. Побочный эффект вызова этой функции в том, что будет вызвана g_set_prgname().

Если анализ полностью выполнен, любые анализируемые аргументы будут удалены из массива, а argc и argv соответственно обновятся. Опция '--' удаляется из argv нет не анализируемых опций перед ней и после неё, или некоторые опции после неё начинаются с '-'. В этом случае происходит ошибка, argc и argv остаются неизменёнными.

Если включена автоматическая поддержка --help (смотрите g_option_context_set_help_enabled()), а массив argv содержит одну из распознаваемых опций справки, эта функция выполнит вывод справки на stdout и вызовет exit (0).

context : GOptionContext
argc : указатель на номер аргумента командной строки.
argv : указатель на массив аргументов командной строки.
error : расположение для возвращаемой ошибки
Возвращает : TRUE если анализ полностью выполнен, FALSE если произошла ошибка

Начиная с версии 2.6


g_option_context_set_help_enabled ()

void        g_option_context_set_help_enabled
                                            (GOptionContext *context,
                                             gboolean help_enabled);

Включает или выключает автоматическую генерацию вывода --help. По умолчанию, g_option_context_parse() распознаёт --help, -?, --help-all и --help-groupname и создаёт подходящий вывод на stdout.

context : GOptionContext
help_enabled : TRUE для включения --help, FALSE для отключения

Начиная с версии 2.6


g_option_context_get_help_enabled ()

gboolean    g_option_context_get_help_enabled
                                            (GOptionContext *context);

Определяет включена ли автоматическая генерация --help для context. Смотрите g_option_context_set_help_enabled().

context : GOptionContext
Возвращает : TRUE если автоматическая генерация справки включена.

Начиная с версии 2.6


g_option_context_set_ignore_unknown_options ()

void        g_option_context_set_ignore_unknown_options
                                            (GOptionContext *context,
                                             gboolean ignore_unknown);

Устанавливает игнорировать неизвестные опции или нет. Если опция игнорируется, то она сбрасывается в массив argv после анализа. По умолчанию, g_option_context_parse() воспринимает неизвестные опции как ошибки.

Эти настройки не затрагивают не опциональные аргументы (то есть аргументы которые начинаются не с тире). Но помните что GOption не может надёжно определить принадлежит ли не-опция к предыдущей неизвестной опции.

context : GOptionContext
ignore_unknown : TRUE для игнорирования неизвестных опций, FALSE для производства ошибки при встрече неизвестной опции

Начиная с версии 2.6


g_option_context_get_ignore_unknown_options ()

gboolean    g_option_context_get_ignore_unknown_options
                                            (GOptionContext *context);

Определяет игнорируются неизвестные опции или нет. Смотрите g_option_context_set_ignore_unknown_options().

context : GOptionContext
Возвращает : TRUE если неизвестные опции игнорируются.

Начиная с версии 2.6


enum GOptionArg

typedef enum
{
  G_OPTION_ARG_NONE,
  G_OPTION_ARG_STRING,
  G_OPTION_ARG_INT,
  G_OPTION_ARG_CALLBACK,
  G_OPTION_ARG_FILENAME,
  G_OPTION_ARG_STRING_ARRAY,
  G_OPTION_ARG_FILENAME_ARRAY,
  G_OPTION_ARG_DOUBLE,
  G_OPTION_ARG_INT64
} GOptionArg;

GOptionArg перечисляет значения определяющие какой тип дополнительного параметра опции ожидается обнаружить. Если опции ожидает дополнительный параметр, он может быть определён несколькими способами; с короткими опциями: -x arg, с длинными опциями: --name arg или комбинировано в одном аргументе: --name=arg.

G_OPTION_ARG_NONE Нет дополнительного параметра. Это полезно для простых флагов.
G_OPTION_ARG_STRING Опция принимает строковый параметр.
G_OPTION_ARG_INT Опция принимает целочисленный параметр.
G_OPTION_ARG_CALLBACK Опция обеспечивает callback-функцию для анализа дополнительного параметра.
G_OPTION_ARG_FILENAME Опция принимает имя файла как параметр.
G_OPTION_ARG_STRING_ARRAY Опция принимает строковый параметр, многократное использование опции собирается в строковый массив.
G_OPTION_ARG_FILENAME_ARRAY Опция принимает имя файла как параметр, многократное использование опции собирается в строковый массив.
G_OPTION_ARG_DOUBLE Опция принимает двойной параметр. Параметр может быть в формате пользовательской локализации или в "C" locale. Начиная с версии 2.12
G_OPTION_ARG_INT64 Опция принимает 64-битное целочисленное. Как G_OPTION_ARG_INT но для большего числа. Число может быть десятичным, шестнадцатиричным (когда префикс 0x, например, 0xffffffff). Начиная с версии 2.12

enum GOptionFlags

typedef enum
{
  G_OPTION_FLAG_HIDDEN		= 1 << 0,
  G_OPTION_FLAG_IN_MAIN		= 1 << 1,
  G_OPTION_FLAG_REVERSE		= 1 << 2,
  G_OPTION_FLAG_NO_ARG		= 1 << 3,
  G_OPTION_FLAG_FILENAME	= 1 << 4,
  G_OPTION_FLAG_OPTIONAL_ARG    = 1 << 5,
  G_OPTION_FLAG_NOALIAS	        = 1 << 6
} GOptionFlags;

Флаги которые модифицируют отдельные опции.

G_OPTION_FLAG_HIDDEN Опция не появляется в выводе --help.
G_OPTION_FLAG_IN_MAIN Опция появляется в основном разделе вывода --help, даже если она определена в группе.
G_OPTION_FLAG_REVERSE Для опции вида G_OPTION_ARG_NONE, этот флаг указывает что опция имеет обратный смысл.
G_OPTION_FLAG_NO_ARG Для опции вида G_OPTION_ARG_CALLBACK, этот флаг указывает что callback-функция не принимает аргументов (как опция G_OPTION_ARG_NONE). Начиная с версии 2.8
G_OPTION_FLAG_FILENAME Для опции вида G_OPTION_ARG_CALLBACK, этот флаг указывает что аргумент должен быть помещён в callback-функцию в кодировке имён файлов GLib, а не в UTF-8. Начиная с версии 2.8
G_OPTION_FLAG_OPTIONAL_ARG Для опции вида G_OPTION_ARG_CALLBACK, этот флаг указывает что аргумент является опциональным. Если нет аргумента, то данные для GOptionParseFunc будут установлены в значение NULL. Начиная с версии 2.8
G_OPTION_FLAG_NOALIAS Этот флаг выключает автоматическое разрешение противоречий префиксов имён длинных опций с groupname-, если есть конфликты. Эта опция должна использоваться только в ситуациях где псевдоним необходим для некоторого устаревшего интерфейса командной строки. Использование этой опции небезопасно, если все все группы опций не находятся под вашим прямым контролем. Начиная с версии 2.8.

G_OPTION_REMAINING

#define G_OPTION_REMAINING ""

Если длинная опция в основной группе имеет это имя, она не обрабатывается как обычная опция. Вместо этого она собирает все неопциональные аргументы которые в противном случае будут сброшены в argv. Опция должна быть типа G_OPTION_ARG_STRING_ARRAY или G_OPTION_ARG_FILENAME_ARRAY.

Использование G_OPTION_REMAINING, вместо простого сканирования argv для просмотра оставшихся параметров, имеет преимущество, так как GOption заботится о необходимом перекодировании строк или имён файлов.

Начиная с версии 2.6


GOptionEntry

typedef struct {
  const gchar *long_name;
  gchar        short_name;
  gint         flags;

  GOptionArg   arg;
  gpointer     arg_data;
  
  const gchar *description;
  const gchar *arg_description;
} GOptionEntry;

GOptionEntry определяет единственную опцию. Для эффективности, она должна быть добавлена в GOptionGroup с помощью g_option_context_add_main_entries() или g_option_group_add_entries().

const gchar *long_name; Длинное имя опции может использоваться для определения в командной строке как --long_name. Все опции должны иметь длинные имена. Для решения конфликтов, если множество групп опций содержат одинаковое длинное имя, опцию также возможно определить как --groupname-long_name.
gchar short_name; Если опция имеет короткое имя, она может быть определена в командной строке как -short_name. short_name должен быть печатным ASCII символом не тире '-', или нулём если опция не имеет короткого имени.
gint flags; Флаги из GOptionFlags.
GOptionArg arg; Тип опции, как GOptionArg.
gpointer arg_data; Если тип arg это G_OPTION_ARG_CALLBACK, тогда arg_data должен указывать на GOptionArgFunc callback-функцию, которая будет вызвана для обработки дополнительных параметров. Иначе, arg_data это указатель на расположение для сохраняемого значения, требуемый тип расположения зависит от типа arg:
const gchar *description; описание для опции в выводе --help. description переводится с помощью translate_func группы, смотрите g_option_group_set_translation_domain().
const gchar *arg_description; метка-заполнитель для используемого дополнительного параметра анализируемой опции в выводе --help. arg_description переводится используя translate_func группы, смотрите g_option_group_set_translation_domain().

g_option_context_add_main_entries ()

void        g_option_context_add_main_entries
                                            (GOptionContext *context,
                                             const GOptionEntry *entries,
                                             const gchar *translation_domain);

Удобная функция которая создаёт основную группу если она не существует, добавляет в неё entries и устанавливает область перевода.

context : GOptionContext
entries : NULL-завершённый массив GOptionEntrys
translation_domain : область перевода используемая для перевода вывода --help опций в entries с помощью gettext(), или NULL

Начиная с версии 2.6


GOptionGroup

typedef struct _GOptionGroup GOptionGroup;

Структура GOptionGroup определяет опции в единственной группе. Структура имеет только закрытые поля и не должна использоваться непосредственно.

Все опции в группе используют совместно одну функцию перевода. Библиотеки которые необходимы для анализа опций командной строки обеспечат функцию для получения GOptionGroup содержащую эти опции, которую приложение может добавить в свой GOptionContext.


g_option_context_add_group ()

void        g_option_context_add_group      (GOptionContext *context,
                                             GOptionGroup *group);

Добавляет GOptionGroup в context, так чтобы анализ context распознал опции в группе. Помните что группа будет освобождена вместе с контекстом когда будет вызвана g_option_context_free(), поэтому вы не должны освобождать группу самостоятельно после добавления её в контекст.

context : GOptionContext
group : добавляемая группа

Начиная с версии 2.6


g_option_context_set_main_group ()

void        g_option_context_set_main_group (GOptionContext *context,
                                             GOptionGroup *group);

Устанавливает GOptionGroup как основную группу context. Это имеет тот же эффект как вызов g_option_context_add_group(), только разница в том, что опции в основной группе обрабатываются по другому когда генерируется вывод --help.

context : GOptionContext
group : группа для установки в качестве основной

Начиная с версии 2.6


g_option_context_get_main_group ()

GOptionGroup* g_option_context_get_main_group
                                            (GOptionContext *context);

Возвращает указатель на основную группу которая принадлежит к context.

context : GOptionContext
Возвращает : основная группа для context, или NULL если context не имеет основной группы. Помните что группа принадлежит context и не должна изменяться или освобождаться.

Начиная с версии 2.6


g_option_group_new ()

GOptionGroup* g_option_group_new            (const gchar *name,
                                             const gchar *description,
                                             const gchar *help_description,
                                             gpointer user_data,
                                             GDestroyNotify destroy);

Создаёт новую GOptionGroup.

name : имя для группы опции, оно используется для получения справки об опциях в этой группе с помощью --help-name
description : описание для этой группы которое должно показываться в выводе --help. Эта строка переводится используя область перевода или функцию перевода в группе.
help_description : описание для --help-name опции. Эта строка переводится используя область перевода или функцию перевода в группе.
user_data : пользовательские данные которые будут помещены в обработчик перед и после анализа, обработчик ошибок и callbacks-функции G_OPTION_ARG_CALLBACK опций, или NULL
destroy : функция для освобождения user_data, или NULL
Возвращает : вновь созданная группа опций. Она должна быть добавлена в GOptionContext или освобождена с помощью g_option_group_free().

Начиная с версии 2.6


g_option_group_free ()

void        g_option_group_free             (GOptionGroup *group);

Освобождает GOptionGroup. Помните что вы не должны освобождать группы добавленные в GOptionContext.

group : GOptionGroup

Начиная с версии 2.6


g_option_group_add_entries ()

void        g_option_group_add_entries      (GOptionGroup *group,
                                             const GOptionEntry *entries);

Добавляет опцию определённую в entries к group.

group : GOptionGroup
entries : NULL-завершённый массив GOptionEntrys

Начиная с версии 2.6


GOptionParseFunc ()

gboolean    (*GOptionParseFunc)             (GOptionContext *context,
                                             GOptionGroup *group,
                                             gpointer data,
                                             GError **error);

Тип функции которая может быть вызвана перед и после анализа.

context : Активный GOptionContext
group : группа с которой связана функция
data : пользовательские данные добавляемые в GOptionGroup содержащую опцию где она была создана с помощью g_option_group_new()
error : расположение для возвращаемой ошибки
Возвращает : TRUE если функция полностью выполнена, FALSE если произошла ошибка, в этом случае должна быть установлена error с помощью g_set_error()

g_option_group_set_parse_hooks ()

void        g_option_group_set_parse_hooks  (GOptionGroup *group,
                                             GOptionParseFunc pre_parse_func,
                                             GOptionParseFunc post_parse_func);

Связывает две функции с group которые будут вызваны из g_option_context_parse() перед анализом первой опции и после анализа последней опции соответственно.

Помните что пользовательские данные помещаемые в pre_parse_func и post_parse_func могут быть определены при создании группы с помощью g_option_group_new().

group : GOptionGroup
pre_parse_func : функция вызываемая перед анализом, или NULL
post_parse_func : функция вызываемая после анализа, или NULL

Начиная с версии 2.6


GOptionErrorFunc ()

void        (*GOptionErrorFunc)             (GOptionContext *context,
                                             GOptionGroup *group,
                                             gpointer data,
                                             GError **error);

Тип функции используемая как callback-функция когда происходит ошибка анализа.

context : Активный GOptionContext
group : группа с которой связана функция
data : пользовательские данные добавляемые в GOptionGroup содержащую опцию где она была создана с помощью g_option_group_new()
error : GError содержащая детали произошедшей ошибки анализа

g_option_group_set_error_hook ()

void        g_option_group_set_error_hook   (GOptionGroup *group,
                                             GOptionErrorFunc error_func);

Связывает функцию с group которая будет вызвана из g_option_context_parse() когда произойдёт ошибка.

Помните что пользовательские данные помещаемые в pre_parse_func и post_parse_func могут быть определены при создании группы с помощью g_option_group_new().

group : GOptionGroup
error_func : функция вызываемая при возникновении ошибки

Начиная с версии 2.6


g_option_group_set_translate_func ()

void        g_option_group_set_translate_func
                                            (GOptionGroup *group,
                                             GTranslateFunc func,
                                             gpointer data,
                                             GDestroyNotify destroy_notify);

Устанавливает функцию которая используется для перевода строк видимых пользователем, для вывода --help. Разные группы могут использовать разные GTranslateFuncs. Если func это NULL, строки не переводятся.

Если вы используете gettext() , вам нужно только установить область перевода, смотрите g_option_group_set_translation_domain().

group : GOptionGroup
func : GTranslateFunc, или NULL
data : пользовательские данные помещаемые в func, или NULL
destroy_notify : функция которая вызывается для освобождения data, или NULL

Начиная с версии 2.6


g_option_group_set_translation_domain ()

void        g_option_group_set_translation_domain
                                            (GOptionGroup *group,
                                             const gchar *domain);

Удобная функция использующая gettext() для перевода видимых пользователем строк.

group : GOptionGroup
domain : используемая область

Начиная с версии 2.6




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру