PIP 5.6.1
Platform-Independent Primitives
Классы | Открытые члены | Полный список членов класса
Класс PIConfig

Разбор и запись конфигурационных файлов с поддержкой древовидной структуры Подробнее...

#include <piconfig.h>

Классы

class  Branch
 Класс Branch - контейнер для объектов Entry. Подробнее...
 
class  Entry
 Узел разобранного дерева конфигурации. Подробнее...
 

Открытые члены

 PIConfig (const PIString &path, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite)
 Открывает и разбирает файл конфигурации по пути "path".
 
 PIConfig (PIString *string, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite)
 Открывает и разбирает конфигурацию, хранящуюся в "string".
 
 PIConfig (PIIODevice *device=nullptr, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite)
 Открывает и разбирает конфигурацию из пользовательского устройства "device".
 
 ~PIConfig ()
 Уничтожает парсер и освобождает принадлежащие ему устройства.
 
bool open (const PIString &path, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite)
 Открывает и разбирает файл конфигурации по пути "path".
 
bool open (PIString *string, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite)
 Открывает и разбирает конфигурацию, хранящуюся в "string".
 
bool open (PIIODevice *device, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite)
 Открывает и разбирает конфигурацию из пользовательского устройства "device".
 
bool isOpened () const
 Возвращает, открыто ли сейчас базовое устройство.
 
EntrygetValue (const PIString &vname, const PIString &def=PIString(), bool *exists=0)
 Разрешает путь верхнего уровня "vname". Подробнее...
 
EntrygetValue (const PIString &vname, const char *def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const PIStringList &def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const bool def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const short def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const int def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const long def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const uchar def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const ushort def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const uint def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const ulong def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const float def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
EntrygetValue (const PIString &vname, const double def, bool *exists=0)
 Получить запись верхнего уровня с именем "vname" и значением по умолчанию "def".
 
Branch getValues (const PIString &vname)
 Возвращает записи верхнего уровня, чьи имена содержат подстроку "vname".
 
void setValue (const PIString &name, const PIString &value, const PIString &type="s", bool write=true)
 Устанавливает или создает путь верхнего уровня "name", сохраняет "value", назначает метку типа "type" и при необходимости сразу записывает изменения.
 
void setValue (const PIString &name, const PIStringList &value, bool write=true)
 Сохраняет список строк и помечает тип как "l".
 
void setValue (const PIString &name, const char *value, bool write=true)
 Сохраняет C-строку и помечает тип как "s".
 
void setValue (const PIString &name, const bool value, bool write=true)
 Сохраняет логическое значение и помечает тип как "b".
 
void setValue (const PIString &name, const short value, bool write=true)
 Сохраняет числовое значение и помечает тип как "n".
 
void setValue (const PIString &name, const int value, bool write=true)
 Сохраняет числовое значение и помечает тип как "n".
 
void setValue (const PIString &name, const long value, bool write=true)
 Сохраняет числовое значение и помечает тип как "n".
 
void setValue (const PIString &name, const uchar value, bool write=true)
 Сохраняет числовое значение и помечает тип как "n".
 
void setValue (const PIString &name, const ushort value, bool write=true)
 Сохраняет числовое значение и помечает тип как "n".
 
void setValue (const PIString &name, const uint value, bool write=true)
 Сохраняет числовое значение и помечает тип как "n".
 
void setValue (const PIString &name, const ulong value, bool write=true)
 Сохраняет числовое значение и помечает тип как "n".
 
void setValue (const PIString &name, const float value, bool write=true)
 Сохраняет вещественное значение и помечает тип как "f".
 
void setValue (const PIString &name, const double value, bool write=true)
 Сохраняет вещественное значение и помечает тип как "f".
 
EntryrootEntry ()
 Возвращает корневую запись разобранного дерева.
 
int entriesCount () const
 Возвращает общее количество разобранных записей ниже корня.
 
bool isEntryExists (const PIString &name) const
 Возвращает true, если среди разобранных путей есть запись с именем "name".
 
Branch allTree ()
 Возвращает всех непосредственных потомков корневой записи.
 
Branch allLeaves ()
 Возвращает все сохраненные листья и ветви со значением, отсортированные по порядку в источнике.
 
int entryIndex (const PIString &name)
 Возвращает индекс пути "name" внутри allLeaves() или -1.
 
PIString getName (uint number)
 Возвращает имя записи по индексу в allLeaves().
 
PIString getValueByIndex (uint number)
 Возвращает значение записи по индексу в allLeaves().
 
PIChar getType (uint number)
 Возвращает метку типа записи по индексу в allLeaves().
 
PIString getComment (uint number)
 Возвращает комментарий записи по индексу в allLeaves().
 
void addEntry (const PIString &name, const PIString &value, const PIString &type="s", bool write=true)
 Создает новый путь "name", если он еще не существует, и при необходимости сразу записывает изменения.
 
void setName (uint number, const PIString &name, bool write=true)
 Переименовывает запись, на которую ссылается индекс "number" в allLeaves().
 
void setValue (uint number, const PIString &value, bool write=true)
 Заменяет сохраненное значение записи, на которую ссылается индекс "number" в allLeaves().
 
void setType (uint number, const PIString &type, bool write=true)
 Заменяет метку типа записи, на которую ссылается индекс "number" в allLeaves().
 
void setComment (uint number, const PIString &comment, bool write=true)
 Заменяет комментарий записи, на которую ссылается индекс "number" в allLeaves().
 
void removeEntry (const PIString &name, bool write=true)
 Удаляет путь записи "name" и при необходимости его поддерево.
 
void removeEntry (uint number, bool write=true)
 Удаляет запись, на которую ссылается индекс "number" в allLeaves().
 
void clear ()
 Удаляет все разобранные записи и очищает содержимое базового устройства.
 
void readAll ()
 Перестраивает внутреннее дерево из текущего содержимого устройства.
 
void writeAll ()
 Записывает текущее дерево обратно в устройство и разбирает его заново.
 
const PIStringdelimiter () const
 Возвращает текущий разделитель путей, по умолчанию ".".
 
void setDelimiter (const PIString &d)
 Устанавливает разделитель путей для последующего разбора и заново разбирает устройство.
 

Подробное описание

Разбор и запись конфигурационных файлов с поддержкой древовидной структуры

Configuration file.

PIConfig предоставляет функциональность для чтения, записи и управления конфигурационными файлами в древовидной структуре. Поддерживает точечные пути, префиксы секций в стиле INI, многострочные значения и записи include, разрешаемые при разборе.

This class provide handle access to configuration file.

Synopsis

PIConfig reads configuration file and create internal dendritic representation of all entries of this file. You can easily read some values and write new.

PIConfig supports also INI-style files with sections "[section]". In this case line with section name interpret as prefix to the next lines. For example, these configs are equal:

ser.device = /dev/ttyS0
ser.speed = 115200
debug = true
[ser]
device = /dev/ttyS0
speed = 115200
[]
debug = true

You can use multiline values ends with " \" @code value = start \ #s comment _mid \ _end \endcode In this example value = "start_mid_end"

Concepts

Each node of internal tree has type PIConfig::Entry. PIConfig has one root element rootEntry(). Any entry of configuration file is a child of this element.

Методы

◆ getValue()

PIConfig::Entry & PIConfig::getValue ( const PIString vname,
const PIString def = PIString(),
bool *  exists = 0 
)

Разрешает путь верхнего уровня "vname".

Если поиск не удался, возвращает общий внутренний entry со значением "def" и устанавливает exists в false, если указатель передан.