Книга: Разработка приложений в среде Linux. Второе издание
26.2.1. Создание содержимого
26.2.1. Создание содержимого
popt
может чередовать синтаксический анализ нескольких совокупностей командных строк. Для этого она сохраняет всю информацию о состоянии для определенной совокупности аргументов командных строк в структуре данных poptContext
непрозрачного типа, которую нельзя модифицировать вне библиотеки popt
.
Новое содержимое popt
формируется с помощью функции poptGetContext()
.
#include <popt.h>
poptContext poptGetContext(char * name, int argc, const char ** argv,
struct poptOption * options, int flags);
Первый параметр, name
, используется для работы с псевдонимами и в справочных сообщениях, и должен представлять имя того приложения, параметры которого будут проходить проверку синтаксиса. Следующие два параметра определяют те аргументы командной строки, которые будут проходить проверку синтаксиса. Как правило, они передаются функции poptGetContext()
, точно так, как если бы они передавались функции main()
программы[184]. Параметр options
указывает на таблицу параметров командной строки, которая была определена в предыдущем разделе. Последний параметр, flags
, определяет способ синтаксического анализа параметров и включает перечисленные ниже флаги (которые могут быть объединены битовым "ИЛИ").
POPT_CONTEXT_KEEP_FIRST |
Как правило, popt игнорирует значение в argv[0] , которое обычно представляет имя выполняемой программы, а не аргумент командной строки. Если определить этот флаг, то popt будет обрабатывать argv[0] как параметр. |
POPT_CONTEXT_POSIXMEHADER |
Стандарт POSIX гласит, что все параметры должны стоять перед дополнительными параметрами командной строки. Например, в соответствии с POSIX, rm -f file1 file2 приведет к удалению файлов file1 и file2 , тогда как rm file1 file2 -f приведет к обычному удалению трех файлов: file1 , file2 и -f . В большинстве Linux-программы это частное условие игнорируется, поэтому popt не придерживается этого правила по умолчанию. Этот флаг сообщает библиотеке popt о необходимости анализировать синтаксис параметров в соответствии с этим условием. |
Помимо всего прочего, poptContext
следит за тем, какие параметры прошли проверку синтаксиса, а какие нет. Если программе необходимо перезапустить обработку параметров в наборе аргументов, она может восстановить исходное состояние poptContext
, передавая функции poptResetContext()
содержимое в качестве единственного аргумента.
После завершения обработки аргумента процесс должен освободить структуру poptContext
, поскольку в ней содержатся динамически размещаемые компоненты. Функция poptFreeContext()
принимает poptContext
в качестве своего единственного аргумента и освобождает ресурсы, занятые в содержимом.
Ниже представлены прототипы функций poptResetContext()
и poptFreeContext()
.
#include <popt.h>
void poptFreeContext(poptContext con);
void poptResetContext(poptContext con);
- Создание свободно позиционируемых элементов
- Использование типов содержимого и столбцов
- Создание узлов
- Создание библиотек форм
- Создание столбцов и работа с типами содержимого
- Создание представления
- Создание базы данных
- Создание содержимого Web-узла
- Создание типа содержимого в InfoPath 2007
- Создание содержимого уровня блока:
- Управление функциями узла