Читаем Разработка приложений в среде Linux. Второе издание полностью

 { "max-count", 'm', POPT_ARG_INT, &maxCount, 0,

   "завершить после получения N совпадений", "N" },

 { "regexp", 'e', POPT_ARG_STRING, &pattern, 0,

   "регулярное выражение для поиска", "pattern" },

 { NULL, '\0', POPT_ARG_NONE, NULL, 0, NULL, NULL }

};

Параметр retry не принимает аргумента, поэтому popt присваивает переменной retry единицу, если определен --retry. Параметры bytes и lines принимают целочисленные аргументы, которые хранятся в переменных с идентичными именами. Последний параметр, follow, может быть либо литеральным name, либо descriptor. Переменная followType задается таким образом, чтобы она указывала на каждое значение, которое будет введено в командной строке, и требует проверки на корректность. Если первоначально она будет указывать на "descriptor", то будет предоставлено полезное значение по умолчанию.

<p>26.1.2. Вложенные таблицы параметров</p>

Некоторые библиотеки предлагают реализацию набора общих параметров командной строки. Например, одно из первых инструментальных средств X Window обрабатывало параметры -geometry и -display для приложений, предоставляя большинству программ X Window стандартный набор параметров командной строки для управления обычным поведением. К сожалению, сделать это далеко не просто. Если массивы argc и argv передать функции инициализации в библиотеке, то библиотека сможет обрабатывать соответствующие параметры, однако приложение должно знать, какие параметры необходимо проигнорировать во время синтаксического анализа argv.

Чтобы не допустить возникновения этой проблемы, функция XtAppInitialize() принимала массивы argc и argv в качестве параметров и возвращала новые значения для каждого из них с параметрами, обработанными удаленной библиотекой. Несмотря на то что такой подход мог работать, с ростом количества библиотек он стал излишне громоздким.

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

Таблица параметров, которая будет представлена в форме вложенной таблицы, определяется подобно любой другой таблице. Чтобы включить ее в другую таблицу, необходимо создать новый параметр с пустыми параметрами longName и shortName. В поле argInfo должна быть назначена переменная POPT_ARG_INCLUDE_TABLE, а член arg должен указывать на таблицу, представляемую в форме вложенной таблицы. Ниже показан пример таблицы параметров, включающей другую таблицу.

struct poptOption nestedArgs[] = {

 { "option1", 'a', POPT_ARG_NONE, NULL, 'a' },

 { "option2", 'b', POPT_ARG_NONE, NULL, 'b' },

 { NULL, '\0', POPT_ARG_NONE, NULL, 0 }

};

struct poptOption mainArgs[] = {

 { "anoption", 'о', POPT_ARG_NONE, NULL, 'o' },

 { NULL, '\0', POPT_ARG_INCLUDE_TABLE, nestedArgs, 0 },

 { NULL, '\0', POPT_ARG_NONE, NULL, 0 }

};

В этом примере приложение заканчивается тремя параметрами, --option1, --option2 и --anoption. Более сложный пример с вложенными таблицами параметров рассматривается далее в главе.

<p>26.2. Использование таблиц параметров</p><p>26.2.1. Создание содержимого</p>

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

Новое содержимое popt формируется с помощью функции poptGetContext().

#include

poptContext poptGetContext(char * name, int argc, const char ** argv,

 struct poptOption * options, int flags);

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных