ComSDK
 Указатель Классы Пространства имен Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Группы Страницы
Классы | Открытые типы | Открытые члены | Полный список членов класса
Класс com::ini::INIParser

Парсер файлов aini формата Подробнее...

#include <iniparser.h>

Открытые типы

enum  ErrorCode {
  ecSuccessful, ecFileNotFound, ecFileCannotBeOpened, ecInvalidString,
  ecSectionNotFound, ecParameterNotFound, ecParameterIndexNotFound, ecIncorrectParameterType,
  ecValueParsingError, ecBadListConversion, ecBadTwoDimDoubleListConversion, ecBadStrDoubleMapConversion,
  ecBadStrStrMapConversion, ecBadSetConversion, ecBadSaving, ecUnknownError
}
 Коды ошибок парсера Подробнее...
 

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

 INIParser (const std::string &p_projectOrFileName, const std::string &p_hostPath)
 
 INIParser (const std::string &p_projectOrFileName)
 
bool isLoaded ()
 
std::string getCurrentINIFilename () const
 
std::string getDefaultINIFilename () const
 
void setINIFilename (const std::string &p_INIFilename)
 
void setDefaultINIFilename ()
 
ErrorCode save ()
 
com::ini::INIParamType getParamType (const std::string &p_section, const std::string &p_paramName) const
 
ErrorCode getScriptFromFile (const std::string &p_section, std::list< std::string > &o_script, bool p_removeSubcomments=true) const
 
void getSections (std::vector< std::string > &o_sections) const
 
ErrorCode getParamNamesList (const std::string &p_section, std::list< std::string > &o_paramNames)
 
bool sectionExists (const std::string &p_section) const
 
ErrorCode getParamDescription (const std::string &p_section, const std::string &p_paramName, std::string &o_paramDescr)
 
ErrorCode getSectionDescription (const std::string &p_section, std::string &o_sectionDescr)
 
ErrorCode setOptionValueInFile (const std::string &p_section, const std::string &p_paramName, const std::string &p_newValue)
 
int getIntOptionValue (const std::string &p_section, const std::string &p_paramName, ErrorCode *o_error=NULL) const
 
std::string getStrOptionValueRecursive (const std::string &p_section, const std::string &p_paramName, enu_ReadMode rm, ErrorCode *o_error) const
 
std::string getStrOptionValue (const std::string &p_section, const std::string &p_paramName, ErrorCode *o_error=NULL) const
 
double getFloatOptionValue (const std::string &p_section, const std::string &p_paramName, ErrorCode *o_error=NULL) const
 
ErrorCode getDoubleArrayOptionValue (const std::string &p_section, const std::string &p_paramName, std::vector< double > &o_array) const
 
ErrorCode getStrArrayOptionValue (const std::string &p_section, const std::string &p_paramName, std::vector< std::string > &o_array) const
 
ErrorCode getTwoDimensionalArray (const std::string &p_section, const std::string &p_paramName, std::vector< std::vector< double > > &o_list, double &o_currentValue, std::vector< std::string > &o_units) const
 
ErrorCode getTreeNodes (const std::string &p_section, const std::string &p_paramName, std::list< std::string > &o_nodesSids, std::map< std::string, std::map< std::string, std::string > > &o_nodesData, std::set< std::string > &o_nodesDataFields) const
 
ErrorCode getFileParamData (const std::string &p_section, const std::string &p_paramName, std::string &o_filename) const
 
ErrorCode getRangeValue (const std::string &p_section, const std::string &p_paramName, com::ini::INIRange &o_range) const
 
bool getCheckValue (const std::string &p_section, const std::string &p_paramName, INIParser::ErrorCode *o_error=NULL) const
 
ErrorCode getSetValue (const std::string &p_section, const std::string &p_paramName, std::string &o_currentValue, std::list< std::string > &o_valueList) const
 
ErrorCode getCurrentSetValue (const std::string &p_section, const std::string &p_paramName, std::string &o_currentValue) const
 
ErrorCode getUnitValue (const std::string &p_section, const std::string &p_paramName, std::string &o_value, std::string &o_unit) const
 
ErrorCode getDBTableValue (const std::string &p_section, const std::string &p_paramName, std::string &o_defaultValue, std::string &o_sourceTable) const
 
INIParser::ErrorCode splitParamLine (const std::string &p_section, int p_paramIndex, std::string &o_paramName, std::string &o_paramValue, std::string &o_paramDescription) const
 
void loadINIDataToAnyMap (Anymap &o_anyMapData, const std::vector< std::string > &extNames, enu_LoadMode loadMode=lmDefault)
 
std::vector
< com::ini::ParamAddress
getParNamesByType (com::ini::INIParamType p_type) const
 

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

Парсер файлов aini формата

Класс реализует парсер файлов aini формата и позволяет получить доступ к файлу как через отдельные методы, так и через выгрузку в Anymap

Перечисления

Коды ошибок парсера

Элементы перечислений
ecSuccessful 

Без ошибок

ecFileNotFound 

Файл не найден

ecFileCannotBeOpened 

Невозможно открыть файл

ecInvalidString 

Некорретная строка

ecSectionNotFound 

Секция не найдена

ecParameterNotFound 

Параметр не найден

ecParameterIndexNotFound 

Параметр с указанным индексом не существует

ecIncorrectParameterType 

Некорректный тип параметра

ecValueParsingError 

Ошибка разбора значения

ecBadListConversion 

Не удалось разобрать список

ecBadTwoDimDoubleListConversion 

Не удалось разобрать двумерный список

ecBadStrDoubleMapConversion 

Не удалось разобрать вещестный мап

ecBadStrStrMapConversion 

Не удалось разобрать строковый мап

ecBadSetConversion 

Не удалось разобрать множество

ecBadSaving 

Не удалось сохранить файл

ecUnknownError 

Неизвестная ошибка

Конструктор(ы)

com::ini::INIParser::INIParser ( const std::string &  p_projectOrFileName,
const std::string &  p_hostPath 
)

Конструктор принимает на вход название файла или название проекта, к которому автоматически будет добавлено расширение '.ini'.

Аргументы
[in]p_projectOrFileNameИмя файла или проекта

Методы

bool com::ini::INIParser::getCheckValue ( const std::string &  p_section,
const std::string &  p_paramName,
INIParser::ErrorCode o_error = NULL 
) const

Возвращает значение параметра-флага. Пример: [0]{0|1}

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_errorУказатель на возвращаемый код ошибки (по умолчанию NULL)
Возвращает
Установленное значение
string com::ini::INIParser::getCurrentINIFilename ( ) const

Возвращает имя ini-файла, в данных момент подгружается информация.

Возвращает
Имя файла
com::ini::INIParser::ErrorCode com::ini::INIParser::getCurrentSetValue ( const std::string &  p_section,
const std::string &  p_paramName,
std::string &  o_currentValue 
) const

Возвращает установленное значение параметра-множества.

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_currentValueУстановленное значение
Возвращает
Код ошибки
com::ini::INIParser::ErrorCode com::ini::INIParser::getDBTableValue ( const std::string &  p_section,
const std::string &  p_paramName,
std::string &  o_defaultValue,
std::string &  o_sourceTable 
) const

Возвращает значения параметра "значение из таблицы базы данных". Пример: [somepk]$sys.table

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_defaultValueЗначение первичного ключа
[out]o_sourceTableНазвание таблицы (вместе со схемой)
Возвращает
Код ошибки
com::ini::INIParser::ErrorCode com::ini::INIParser::getDoubleArrayOptionValue ( const std::string &  p_section,
const std::string &  p_paramName,
std::vector< double > &  o_array 
) const

Возвращает значение параметра как массив вещественных чисел. Пример: (1.2; 1.3; 1.4)

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_arrayЗначение параметра в виде массива вещественных чисел
Возвращает
Код ошибки
com::ini::INIParser::ErrorCode com::ini::INIParser::getFileParamData ( const std::string &  p_section,
const std::string &  p_paramName,
std::string &  o_filename 
) const

Возвращает значение параметра как имя файла.

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_filenameИмя файла
Возвращает
Код ошибки
double com::ini::INIParser::getFloatOptionValue ( const std::string &  p_section,
const std::string &  p_paramName,
ErrorCode o_error = NULL 
) const

Возвращает вещественное значение параметра.

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_errorУказатель на возвращаемый код ошибки (по умолчанию NULL)
Возвращает
Вещественное значение параметра
int com::ini::INIParser::getIntOptionValue ( const std::string &  p_section,
const std::string &  p_paramName,
ErrorCode o_error = NULL 
) const

Возвращает целое значение параметра.

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_errorУказатель на возвращаемый код ошибки (по умолчанию NULL)
Возвращает
Целое значение параметра
Ошибка:
com::ini::INIParser::ErrorCode com::ini::INIParser::getParamDescription ( const std::string &  p_section,
const std::string &  p_paramName,
std::string &  o_paramDescr 
)

Возвращает комментарий к параметру.

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_paramDescrВозвращаемый комментарий
Возвращает
Код ошибки
com::ini::INIParser::ErrorCode com::ini::INIParser::getParamNamesList ( const std::string &  p_section,
std::list< std::string > &  o_paramNames 
)

Возвращает список параметров, находящихся в данной секции.

Аргументы
[in]p_sectionСекция
[out]o_paramNamesВозвращаемый список импен параметров
Возвращает
Код ошибки
com::ini::INIParamType com::ini::INIParser::getParamType ( const std::string &  p_section,
const std::string &  p_paramName 
) const

Возвращает тип параметра.

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
Возвращает
Тип параметра
vector< com::ini::ParamAddress > com::ini::INIParser::getParNamesByType ( com::ini::INIParamType  p_type) const

Возвращает вектор параметров, имеющих заданный тип.

Аргументы
[in]p_typeТип параметров
Возвращает
Вектор параметров
com::ini::INIParser::ErrorCode com::ini::INIParser::getRangeValue ( const std::string &  p_section,
const std::string &  p_paramName,
com::ini::INIRange o_range 
) const

Возвращает значение параметра-диапазона. Пример: [5; 0:10; 1]

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_rangeСтруктура диапазона
Возвращает
Код ошибки
com::ini::INIParser::ErrorCode com::ini::INIParser::getScriptFromFile ( const std::string &  p_section,
std::list< std::string > &  o_script,
bool  p_removeSubcomments = true 
) const

Возвращает скрипт секции (т.е. все строки секции).

Аргументы
[in]p_sectionСекция
[out]o_scriptСкрипт в виде списка строк
[in]p_removeSubcommentsФлаг, удалять ли комментарии из строк
Возвращает
Код ошибки
com::ini::INIParser::ErrorCode com::ini::INIParser::getSectionDescription ( const std::string &  p_section,
std::string &  o_sectionDescr 
)

Возвращает комментарий к секции.

Аргументы
[in]p_sectionСекция
[out]o_sectionDescrВозвращаемый комментарий
Возвращает
Код ошибки
void com::ini::INIParser::getSections ( std::vector< std::string > &  o_sections) const

Возвращает список секций.

Аргументы
[out]o_sectionsСписок секций
com::ini::INIParser::ErrorCode com::ini::INIParser::getSetValue ( const std::string &  p_section,
const std::string &  p_paramName,
std::string &  o_currentValue,
std::list< std::string > &  o_valueList 
) const

Возвращает значение параметра-множества. Пример: [a]{a|b|c|d|e|f}

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_currentValueУстановленное значение
[out]o_valueListМножество всех возможных значений
Возвращает
Код ошибки
com::ini::INIParser::ErrorCode com::ini::INIParser::getStrArrayOptionValue ( const std::string &  p_section,
const std::string &  p_paramName,
std::vector< std::string > &  o_array 
) const

Возвращает значение параметра как массив строк. Пример: (abc; def; ghi)

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_arrayЗначение параметра в виде массива строк
Возвращает
Код ошибки
string com::ini::INIParser::getStrOptionValue ( const std::string &  p_section,
const std::string &  p_paramName,
ErrorCode o_error = NULL 
) const

Возвращает строковое значение параметра.

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_errorУказатель на возвращаемый код ошибки (по умолчанию NULL)
Возвращает
Строковое значение параметра
string com::ini::INIParser::getStrOptionValueRecursive ( const std::string &  p_section,
const std::string &  p_paramName,
enu_ReadMode  rm,
ErrorCode o_error 
) const

Возвращает строковое значение параметра.

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[in]rmВид чтения
[out]o_errorУказатель на возвращаемый код ошибки (по умолчанию NULL)
Возвращает
Строковое значение параметра
com::ini::INIParser::ErrorCode com::ini::INIParser::getTreeNodes ( const std::string &  p_section,
const std::string &  p_paramName,
std::list< std::string > &  o_nodesSids,
std::map< std::string, std::map< std::string, std::string > > &  o_nodesData,
std::set< std::string > &  o_nodesDataFields 
) const

Возвращает информацию по параметру типа "Дерево".

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_nodesSidsСписок названий субпараметров
[out]o_nodesDataFieldsМножество идентификаторов субпараметров
[out]o_nodesDataДанных субпараметров в виде мапа, где ключ – субпараметр, а значение – мапа данных субпараметра (идентификатор субпараметра -> значение)
Возвращает
Код ошибки

Пример данных для чтения [Section] tree={node1,node2,node3} // Comment node1$data=45 // Comment1 node2$type=[typ1]{typ1|typ2} // Comment node2$data=(12,32,42) // Comment

читаем список узлов параметра ptTree

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

для каждой найденной строки нужно: осуществить сплиттинг: название/значение/комментарий

определяем грамматику boost::spirit

Формат исходных данных некорректен, если не удалось считать значение параметра!

попытаться разобрать имя параметра

если текущий проверяемый параметр не является субпараметром, то пропускаем этот параметр и переходим к анализу следующего параметра

текущий проверяемый параметр содержится в списке считанных дочерних элементов дерева поэтому необходимо добавить новых узел в данные map<string, map<string,string> >, и в множество полей данных set<string>

Ошибка:
  • вероятно ошибка - необходима отладка o_nodes_data[v_current_sid]=map<string,string>();
com::ini::INIParser::ErrorCode com::ini::INIParser::getTwoDimensionalArray ( const std::string &  p_section,
const std::string &  p_paramName,
std::vector< std::vector< double > > &  o_list,
double &  o_currentValue,
std::vector< std::string > &  o_units 
) const

Возвращает значение параметра как двумерный вектор вещественных чисел. Поддерживается опционально значение по умолчанию (текущее значение) и единицы измерения. Примеры: ((1.2; 1.3; 1.4) ; (1.2; 1.3; 1.4)) 1.2 ; (1.2; 1.3; 1.4)) [[T, N, MPa]]

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_listЗначение параметра в виде двумерного списка вещественных чисел
[out]o_currentValueЗначение по умолчанию (текущее значение)
[out]o_unitsВектор единиц измерения
Возвращает
Код ошибки
com::ini::INIParser::ErrorCode com::ini::INIParser::getUnitValue ( const std::string &  p_section,
const std::string &  p_paramName,
std::string &  o_value,
std::string &  o_unit 
) const

Возвращает значение параметра с размерностью. Пример: 10 [[gpa]]

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[out]o_valueЗначение
[out]o_unitРазмерность
Возвращает
Код ошибки
bool com::ini::INIParser::isLoaded ( )

Проверяет, прошла загрузка файла успешно.

Возвращает
true, если загрузка ini-файла прошла успешно
void com::ini::INIParser::loadINIDataToAnyMap ( Anymap o_anyMapData,
const std::vector< std::string > &  extNames,
enu_LoadMode  loadMode = lmDefault 
)

Выгружает внутреннее представление ini-файла в Anymap. Он имеет следующую структуру: o_anyMapData[-SECTION_NAME-][SECTION_COMMENT] [SECTION_PARAMS] [-PARAM_NAME-][PARAM_DESCR] [PARAM_TYPE] [PARAM_VALUE]

Аргументы
[out]o_anyMapDataAnymap
[in]loadModeтип загрузки
[in]extNamesсписок разрешений файлов, допустимых к рекурсивной загрузке
com::ini::INIParser::ErrorCode com::ini::INIParser::save ( )

Сохраняет изменения в представлении файла в сам файл.

Возвращает
Код ошибки
Необходимо сделать:
: нерациональное проверки (ниже тоже)
bool com::ini::INIParser::sectionExists ( const std::string &  p_section) const

Проверяет, существует ли указанная секция в файле.

Аргументы
[in]p_sectionСекция
Возвращает
true, если существует
void com::ini::INIParser::setINIFilename ( const std::string &  p_INIFilename)

Задает новый файл для разбора.

Аргументы
[in]p_INIFilenameИмя файла
com::ini::INIParser::ErrorCode com::ini::INIParser::setOptionValueInFile ( const std::string &  p_section,
const std::string &  p_paramName,
const std::string &  p_newValue 
)

Изменяет значение параметра.

Аргументы
[in]p_sectionСекция
[in]p_paramNameПараметр
[in]p_newValueНовое значение
Возвращает
Код ошибки
com::ini::INIParser::ErrorCode com::ini::INIParser::splitParamLine ( const std::string &  p_section,
int  p_paramIndex,
std::string &  o_paramName,
std::string &  o_paramValue,
std::string &  o_paramDescription 
) const

Возвращает данные параметра по его номеру в секции

Аргументы
[in]p_sectionСекция
[in]p_paramIndexНомер строки (начиная с 0)
[out]o_paramNameПараметр
[out]o_paramValueЗначение
[out]o_paramDescriptionКомментарий
Возвращает
Код ошибки

Разбиение строки с параметром на: наименование, значение, описание


Объявления и описания членов классов находятся в файлах: