diff --git a/src/library/initialize/initialize_file_access.cpp b/src/library/initialize/initialize_file_access.cpp index cb011d812..0bc8dc24f 100644 --- a/src/library/initialize/initialize_file_access.cpp +++ b/src/library/initialize/initialize_file_access.cpp @@ -36,6 +36,16 @@ IniAccess::IniAccess(const std::string file_path) : file_path_(file_path), ini_r } #endif +std::vector IniAccess::ReadVectorUnsignedChar(const char* section_name, const char* key_name, const size_t num) { + std::vector data; + for (size_t i = 0; i < num; i++) { + std::stringstream edited_key_name; + edited_key_name << key_name << "(" << i << ")"; + data.push_back((unsigned char)ReadInt(section_name, edited_key_name.str().c_str())); + } + return data; +} + double IniAccess::ReadDouble(const char* section_name, const char* key_name) { #ifdef WIN32 std::stringstream value; @@ -65,6 +75,17 @@ int IniAccess::ReadInt(const char* section_name, const char* key_name) { return (int)ini_reader_.GetInteger(section_name, key_name, 0); #endif } + +std::vector IniAccess::ReadVectorInt(const char* section_name, const char* key_name, const size_t num) { + std::vector data; + for (size_t i = 0; i < num; i++) { + std::stringstream edited_key_name; + edited_key_name << key_name << "(" << i << ")"; + data.push_back(ReadInt(section_name, edited_key_name.str().c_str())); + } + return data; +} + bool IniAccess::ReadBoolean(const char* section_name, const char* key_name) { #ifdef WIN32 int temp; @@ -87,6 +108,16 @@ void IniAccess::ReadDoubleArray(const char* section_name, const char* key_name, } } +std::vector IniAccess::ReadVectorDouble(const char* section_name, const char* key_name, const size_t num) { + std::vector data; + for (size_t i = 0; i < num; i++) { + std::stringstream edited_key_name; + edited_key_name << key_name << "(" << i << ")"; + data.push_back(ReadDouble(section_name, edited_key_name.str().c_str())); + } + return data; +} + void IniAccess::ReadQuaternion(const char* section_name, const char* key_name, libra::Quaternion& data) { libra::Quaternion temp; double norm = 0.0; diff --git a/src/library/initialize/initialize_file_access.hpp b/src/library/initialize/initialize_file_access.hpp index a5149100e..1d1025fc4 100644 --- a/src/library/initialize/initialize_file_access.hpp +++ b/src/library/initialize/initialize_file_access.hpp @@ -41,6 +41,15 @@ class IniAccess { IniAccess(const std::string file_path); // Read functions + /** + * @fn ReadVectorUnsignedChar + * @brief Read a vector number as unsigned char type + * @param[in] section_name: Section name + * @param[in] key_name: Key name + * @param[in] num: Number of elements of the array + * @return Read number + */ + std::vector ReadVectorUnsignedChar(const char* section_name, const char* key_name, const size_t num); /** * @fn ReadDouble * @brief Read a scalar number as double type @@ -57,6 +66,15 @@ class IniAccess { * @return Read number */ int ReadInt(const char* section_name, const char* key_name); + /** + * @fn ReadVectorInt + * @brief Read a vector number as integer type + * @param[in] section_name: Section name + * @param[in] key_name: Key name + * @param[in] num: Number of elements of the array + * @return Read number + */ + std::vector ReadVectorInt(const char* section_name, const char* key_name, const size_t num); /** * @fn ReadBoolean * @brief Read boolean @@ -75,6 +93,15 @@ class IniAccess { * @param[out] data: Read array data */ void ReadDoubleArray(const char* section_name, const char* key_name, const int id, const int num, double* data); + /** + * @fn ReadVectorDouble + * @brief Read a vector number as double type + * @param[in] section_name: Section name + * @param[in] key_name: Key name + * @param[in] num: Number of elements of the array + * @return Read number + */ + std::vector ReadVectorDouble(const char* section_name, const char* key_name, const size_t num); /** * @fn ReadVector * @brief Read Vector type number