aboutsummaryrefslogtreecommitdiff
path: root/src/gen_adldata/ini/ini_processing.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gen_adldata/ini/ini_processing.h')
-rw-r--r--src/gen_adldata/ini/ini_processing.h677
1 files changed, 0 insertions, 677 deletions
diff --git a/src/gen_adldata/ini/ini_processing.h b/src/gen_adldata/ini/ini_processing.h
deleted file mode 100644
index 52ab2e2..0000000
--- a/src/gen_adldata/ini/ini_processing.h
+++ /dev/null
@@ -1,677 +0,0 @@
-/*
-INI Processor - a small library which allows you parsing INI-files
-
-Copyright (c) 2017 Vitaliy Novichkov <admin@wohlnet.ru>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef INIPROCESSING_H
-#define INIPROCESSING_H
-
-#include <string>
-#include <cstring>
-#include <cstdlib>
-#include <vector>
-#include <unordered_map>
-#ifdef INI_PROCESSING_ALLOW_QT_TYPES
-#include <QString>
-#include <QList>
-#include <QVector>
-#endif
-
-#include "ini_processing_variant.h"
-
-/**
- * @brief INI Processor - an utility which providing fast and flexible INI file parsing API
- */
-class IniProcessing
-{
-public:
- /**
- * @brief Available error codes
- */
- enum ErrCode
- {
- //! Everything is fine
- ERR_OK = 0,
- //! File not found or memory pointer is null
- ERR_NOFILE,
- //! Invalid section declaration syntax
- ERR_SECTION_SYNTAX,
- //! Invalid key declaration syntax
- ERR_KEY_SYNTAX,
- //! No available memory
- ERR_NO_MEMORY
- };
-
-private:
- struct params
- {
- std::string filePath;
- bool opened;
- int lineWithError;
- ErrCode errorCode;
- bool modified;
- typedef std::unordered_map<std::string, std::string> IniKeys;
- typedef std::unordered_map<std::string, IniKeys> IniSections;
- IniSections iniData;
- IniKeys *currentGroup;
- std::string currentGroupName;
- } m_params;
-
- template<class TList, typename T>
- friend void readNumArrHelper(IniProcessing* self, const char *key, TList &dest, const TList &defVal);
-
- bool parseHelper(char *data, size_t size);
-
- bool parseFile(const char *filename);
- bool parseMemory(char *mem, size_t size);
-
- inline params::IniKeys::iterator readHelper(const char *key, bool &ok)
- {
- if(!m_params.opened)
- return params::IniKeys::iterator();
-
- if(!m_params.currentGroup)
- return params::IniKeys::iterator();
-
- #ifndef CASE_SENSITIVE_KEYS
- std::string key1(key);
- for(char *iter = &key1[0]; *iter != '\0'; ++iter)
- *iter = (char)tolower(*iter);
- #endif
-
- params::IniKeys::iterator e = m_params.currentGroup->find(key1);
-
- if(e != m_params.currentGroup->end())
- ok = true;
-
- return e;
- }
-
- void writeIniParam(const char *key, const std::string &value);
-
-public:
- IniProcessing();
- IniProcessing(const char *iniFileName, int dummy = 0);
- IniProcessing(const std::string &iniFileName, int dummy = 0);
-#ifdef INI_PROCESSING_ALLOW_QT_TYPES
- IniProcessing(const QString &iniFileName, int dummy = 0);
-#endif
- IniProcessing(char *memory, size_t size);
- IniProcessing(const IniProcessing &ip);
-
- /**
- * @brief Open INI-file from disk and parse it
- * @param iniFileName full path to INI-file to parse
- * @return true if INI file has been passed, false if any error happen
- */
- bool open(const std::string &iniFileName);
-
- /**
- * @brief Open raw INI-data from memory and parse it
- * @param memory pointer to memory block
- * @param size size of memory block to process
- * @return
- */
- bool openMem(char *memory, size_t size);
-
- /**
- * @brief Clear all internal buffers and close the file
- */
- void close();
-
- /**
- * @brief Returns last happen error code
- * @return Error code
- */
- ErrCode lastError();
- /**
- * @brief Line number which contains error
- * @return line number wit herror
- */
- int lineWithError();
-
- /**
- * @brief State of INI Processor
- * @return true if any file is opened
- */
- bool isOpened();
-
- /**
- * @brief Select a section to process
- * @param groupName name of section to process
- * @return true if group exists and opened
- */
- bool beginGroup(const std::string &groupName);
-
- /**
- * @brief Is this INI file contains section of specific name
- * @param groupName name of section
- * @return true if section is exists
- */
- bool contains(const std::string &groupName);
-
- /**
- * @brief Currently opened file name
- * @return path to currently opened file
- */
- std::string fileName();
-
- /**
- * @brief Currently processing section
- * @return name of current section
- */
- std::string group();
-
- /**
- * @brief Get list of available groups
- * @return Array of strings
- */
- std::vector<std::string> childGroups();
-
- /**
- * @brief Is current section contains specific key name
- * @param keyName name of key
- * @return true if key is presented in this section
- */
- bool hasKey(const std::string &keyName);
-
- /**
- * @brief Get list of available keys in current groul
- * @return Array of strings
- */
- std::vector<std::string> allKeys();
-
- /**
- * @brief Release current section to choice another for process
- */
- void endGroup();
-
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, bool &dest, bool defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, unsigned char &dest, unsigned char defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, char &dest, char defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, unsigned short &dest, unsigned short defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, short &dest, short defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, unsigned int &dest, unsigned int defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, int &dest, int defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, unsigned long &dest, unsigned long defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, long &dest, long defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, unsigned long long &dest, unsigned long long defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, long long &dest, long long defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, float &dest, float defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, double &dest, double defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, long double &dest, long double defVal);
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::string &dest, const std::string &defVal);
-
- #ifdef INI_PROCESSING_ALLOW_QT_TYPES
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QString &dest, const QString &defVal);
- #endif
-
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<unsigned short> &dest, const std::vector<unsigned short> &defVal = std::vector<unsigned short>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<short> &dest, const std::vector<short> &defVal = std::vector<short>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<unsigned int> &dest, const std::vector<unsigned int> &defVal = std::vector<unsigned int>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<int> &dest, const std::vector<int> &defVal = std::vector<int>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<unsigned long> &dest, const std::vector<unsigned long> &defVal = std::vector<unsigned long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<long> &dest, const std::vector<long> &defVal = std::vector<long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<unsigned long long> &dest, const std::vector<unsigned long long> &defVal = std::vector<unsigned long long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<long long> &dest, const std::vector<long long> &defVal = std::vector<long long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<float> &dest, const std::vector<float> &defVal = std::vector<float>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<double> &dest, const std::vector<double> &defVal = std::vector<double>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, std::vector<long double> &dest, const std::vector<long double> &defVal = std::vector<long double>());
-
- #ifdef INI_PROCESSING_ALLOW_QT_TYPES
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<short> &dest, const QList<short> &defVal = QList<short>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<unsigned short> &dest, const QList<unsigned short> &defVal = QList<unsigned short>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<int> &dest, const QList<int> &defVal = QList<int>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<unsigned int> &dest, const QList<unsigned int> &defVal = QList<unsigned int>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<long> &dest, const QList<long> &defVal = QList<long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<unsigned long> &dest, const QList<unsigned long> &defVal = QList<unsigned long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<long long> &dest, const QList<long long> &defVal = QList<long long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<unsigned long long> &dest, const QList<unsigned long long> &defVal = QList<unsigned long long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<float> &dest, const QList<float> &defVal = QList<float>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<double> &dest, const QList<double> &defVal = QList<double>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QList<long double> &dest, const QList<long double> &defVal = QList<long double>());
-
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<short> &dest, const QVector<short> &defVal = QVector<short>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<unsigned short> &dest, const QVector<unsigned short> &defVal = QVector<unsigned short>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<int> &dest, const QVector<int> &defVal = QVector<int>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<unsigned int> &dest, const QVector<unsigned int> &defVal = QVector<unsigned int>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<long> &dest, const QVector<long> &defVal = QVector<long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<unsigned long> &dest, const QVector<unsigned long> &defVal = QVector<unsigned long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<long long> &dest, const QVector<long long> &defVal = QVector<long long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<unsigned long long> &dest, const QVector<unsigned long long> &defVal = QVector<unsigned long long>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<float> &dest, const QVector<float> &defVal = QVector<float>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<double> &dest, const QVector<double> &defVal = QVector<double>());
- /**
- * @brief Retreive value by specific key and pass it via reference
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- */
- void read(const char *key, QVector<long double> &dest, const QVector<long double> &defVal = QVector<long double>());
- #endif
-
- //! Hash-table for the fast string to enum conversion
- typedef std::unordered_map<std::string, int> StrEnumMap;
-
-
- template<typename T>
- /**
- * @brief Retreive value by string-based enum key
- * @param [_IN] key name of key with value to retrieved
- * @param [_OUT] dest Reference to destination variable to store retrieved value
- * @param [_IN] defVal Default value for case of non-existing key
- * @param [_IN] enumMap
- */
- void readEnum(const char *key, T &dest, T defVal, IniProcessing::StrEnumMap enumMap)
- {
- bool ok = false;
- params::IniKeys::iterator e = readHelper(key, ok);
-
- if(!ok)
- {
- dest = defVal;
- return;
- }
-
- StrEnumMap::iterator em = enumMap.find(e->second);
-
- if(em == enumMap.end())
- {
- dest = defVal;
- return;
- }
-
- dest = static_cast<T>(em->second);
- }
-
- /**
- * @brief QSettings-compatible way to retreive value
- * @param key key with value to retreive
- * @param defVal default value key
- * @return variant which contains a value
- */
- IniProcessingVariant value(const char *key, const IniProcessingVariant &defVal = IniProcessingVariant());
-
- void setValue(const char *key, unsigned short value);
- void setValue(const char *key, short value);
- void setValue(const char *key, unsigned int value);
- void setValue(const char *key, int value);
- void setValue(const char *key, unsigned long value);
- void setValue(const char *key, long value);
- void setValue(const char *key, unsigned long long value);
- void setValue(const char *key, long long value);
- void setValue(const char *key, float value);
- void setValue(const char *key, double value);
- void setValue(const char *key, long double value);
-
- template <typename T>
- static inline std::string to_string_with_precision(const T a_value)
- {
- char buf[35];
- memset(buf, 0, 35);
- snprintf(buf, 34, "%.15g", static_cast<double>(a_value));
- return buf;
- }
-
- template<class TList>
- static inline std::string fromVector(const TList &value)
- {
- typedef typename TList::value_type T;
- std::string out;
- for(const T &f: value)
- {
- if(!out.empty())
- out.push_back(',');
- if(std::is_same<T, float>::value ||
- std::is_same<T, double>::value ||
- std::is_same<T, long double>::value)
- out.append(to_string_with_precision(f));
- else
- out.append(std::to_string(f));
- }
- return out;
- }
-
- template<typename T>
- void setValue(const char *key, const std::vector<T> &value)
- {
- static_assert(std::is_arithmetic<T>::value, "Not arithmetic (integral or floating point required!)");
- writeIniParam(key, fromVector(value));
- }
-
- void setValue(const char *key, const char *value);
- void setValue(const char *key, const std::string &value);
-
- #ifdef INI_PROCESSING_ALLOW_QT_TYPES
- void setValue(const char *key, const QString &value);
-
- template<typename T>
- void setValue(const char *key, const QList<T> &value)
- {
- static_assert(std::is_arithmetic<T>::value, "Not arithmetic (integral or floating point required!)");
- writeIniParam(key, fromVector(value));
- }
-
- template<typename T>
- void setValue(const char *key, const QVector<T> &value)
- {
- static_assert(std::is_arithmetic<T>::value, "Not arithmetic (integral or floating point required!)");
- writeIniParam(key, fromVector(value));
- }
- #endif
-
- /**
- * @brief Write INI file by the recently given file path
- * @return true if INI file was successfully written
- */
- bool writeIniFile();
-};
-
-#endif // INIPROCESSING_H