utils_ini.cpp
Go to the documentation of this file.
1 /*
2  * BSD 3-Clause License
3  *
4  * Copyright (c) 2019, Analog Devices, Inc.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright notice, this
11  * list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright notice,
14  * this list of conditions and the following disclaimer in the documentation
15  * and/or other materials provided with the distribution.
16  *
17  * 3. Neither the name of the copyright holder nor the names of its
18  * contributors may be used to endorse or promote products derived from
19  * this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #include "utils_ini.h"
34 #ifdef USE_GLOG
35 #include <glog/logging.h>
36 #else
37 #include <aditof/log.h>
38 #endif
39 #include <cstring>
40 #include <fstream>
41 #include <sstream>
42 #include <string>
43 #ifdef _WIN32
44 #include <Windows.h>
45 #elif __unix
46 #include <unistd.h>
47 #endif
48 
49 using namespace std;
50 using namespace aditof;
51 
52 Status UtilsIni::getKeyValuePairsFromIni(const string &iniFileName,
53  map<string, string> &iniKeyValPairs) {
54 
55  ifstream iniStream(iniFileName);
56  if (!iniStream.is_open()) {
57  LOG(ERROR) << "Failed to open: " << iniFileName;
58  return Status::UNREACHABLE;
59  }
60 
61  iniKeyValPairs.clear();
62 
63  string line;
64  while (getline(iniStream, line)) {
65  size_t equalPos = line.find('=');
66  if (equalPos == string::npos) {
67  LOG(WARNING) << "Unexpected format on this line:\n"
68  << line << "\nExpecting 'key=value' format";
69  continue;
70  }
71  string key = line.substr(0, equalPos);
72  string value = line.substr(equalPos + 1);
73  if (!value.empty()) {
74  iniKeyValPairs.emplace(key, value);
75  } else {
76  LOG(WARNING) << "No value found for parameter: " << key;
77  }
78  }
79 
80  iniStream.close();
81 
82  return Status::OK;
83 }
84 
85 Status UtilsIni::getKeyValuePairsFromString(
86  const std::string &iniStr,
87  std::map<std::string, std::string> &iniKeyValPairs) {
88  iniKeyValPairs.clear();
89  stringstream ss(iniStr);
90  string line;
91  char delimiter = '\n';
92  while (getline(ss, line, delimiter)) {
93  size_t equalPos = line.find('=');
94  if (equalPos == string::npos) {
95  LOG(WARNING) << "Unexpected format on this line:\n"
96  << line << "\nExpecting 'key=value' format";
97  continue;
98  }
99  string key = line.substr(0, equalPos);
100  string value = line.substr(equalPos + 1);
101  if (!value.empty()) {
102  iniKeyValPairs.emplace(key, value);
103  } else {
104  LOG(WARNING) << "No value found for parameter: " << key;
105  }
106  }
107  return Status::OK;
108 }
ERROR
const int ERROR
Definition: log_severity.h:60
log.h
utils_ini.h
string
GLsizei const GLchar *const * string
Definition: glcorearb.h:3083
WARNING
const int WARNING
Definition: log_severity.h:59
aditof
Namespace aditof.
Definition: adsd_errs.h:40
google::protobuf::util::error::OK
@ OK
Definition: status.h:47
key
const SETUP_TEARDOWN_TESTCONTEXT char * key
Definition: test_wss_transport.cpp:10
aditof::Status
Status
Status of any operation that the TOF sdk performs.
Definition: status_definitions.h:48
LOG
#define LOG(x)
Definition: sdk/include/aditof/log.h:72
std
value
GLsizei const GLfloat * value
Definition: glcorearb.h:3093


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:07:01