Skip to content

Commit

Permalink
Merge pull request #499 from ut-issl/feature/add-vector-int-read
Browse files Browse the repository at this point in the history
Add new functions for ini read as `std::vector`
  • Loading branch information
200km authored Oct 5, 2023
2 parents 409e9cd + be61570 commit 22987e0
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
31 changes: 31 additions & 0 deletions src/library/initialize/initialize_file_access.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@ IniAccess::IniAccess(const std::string file_path) : file_path_(file_path), ini_r
}
#endif

std::vector<unsigned char> IniAccess::ReadVectorUnsignedChar(const char* section_name, const char* key_name, const size_t num) {
std::vector<unsigned char> 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;
Expand Down Expand Up @@ -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<int> IniAccess::ReadVectorInt(const char* section_name, const char* key_name, const size_t num) {
std::vector<int> 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;
Expand All @@ -87,6 +108,16 @@ void IniAccess::ReadDoubleArray(const char* section_name, const char* key_name,
}
}

std::vector<double> IniAccess::ReadVectorDouble(const char* section_name, const char* key_name, const size_t num) {
std::vector<double> 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;
Expand Down
27 changes: 27 additions & 0 deletions src/library/initialize/initialize_file_access.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<unsigned char> ReadVectorUnsignedChar(const char* section_name, const char* key_name, const size_t num);
/**
* @fn ReadDouble
* @brief Read a scalar number as double type
Expand All @@ -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<int> ReadVectorInt(const char* section_name, const char* key_name, const size_t num);
/**
* @fn ReadBoolean
* @brief Read boolean
Expand All @@ -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<double> ReadVectorDouble(const char* section_name, const char* key_name, const size_t num);
/**
* @fn ReadVector
* @brief Read Vector type number
Expand Down

0 comments on commit 22987e0

Please sign in to comment.