diff options
Diffstat (limited to 'video_in_hal/nsframework/framework_unified/client/NS_ConfigParser/src/ns_cfg_parser.cpp')
-rwxr-xr-x | video_in_hal/nsframework/framework_unified/client/NS_ConfigParser/src/ns_cfg_parser.cpp | 365 |
1 files changed, 0 insertions, 365 deletions
diff --git a/video_in_hal/nsframework/framework_unified/client/NS_ConfigParser/src/ns_cfg_parser.cpp b/video_in_hal/nsframework/framework_unified/client/NS_ConfigParser/src/ns_cfg_parser.cpp deleted file mode 100755 index a2abd78..0000000 --- a/video_in_hal/nsframework/framework_unified/client/NS_ConfigParser/src/ns_cfg_parser.cpp +++ /dev/null @@ -1,365 +0,0 @@ -/* - * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// \ingroup tag_NS_ConfigParser -/// \brief This file contains implementation of CCFGParser class. -/// -//////////////////////////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// Include Files -//////////////////////////////////////////////////////////////////////////////////////////////////// - -#include <ns_cfg_internal.h> -#include <ns_cfg_parser.h> -#include <ns_config_parser_frameworkunifiedlog.h> - -#include <fstream> -#include <string> - -CCFGParser::CCFGParser() - : m_pmCFGData(NULL) { -} - -// LCOV_EXCL_START 200:CCFGParser is not external API class, this constructed function isn't used by other function -CCFGParser::CCFGParser(const std::string &f_cfilepath) - : m_pmCFGData(NULL) { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - CFGParseFile(f_cfilepath); -} -// LCOV_EXCL_STOP - -CCFGParser::~CCFGParser() { - CFGData_Type::iterator l_itCfgStructure; - - if (NULL != m_pmCFGData) { // LCOV_EXCL_BR_LINE 5:m_pmCFGData cannot be NULL, because internal logic guarantee - // release the structure - for (l_itCfgStructure = m_pmCFGData->begin(); - l_itCfgStructure != m_pmCFGData->end(); - l_itCfgStructure++) { - CBlock *l_pBlock = (*l_itCfgStructure).second; - if (NULL != l_pBlock) { // LCOV_EXCL_BR_LINE 5:l_pBlock cannot be NULL, because map insert data success. - // clear the vector - l_pBlock->m_vElementPair.clear(); - - delete l_pBlock; // LCOV_EXCL_BR_LINE 11:except branch - l_pBlock = NULL; - } - } - - delete m_pmCFGData; // LCOV_EXCL_BR_LINE 11:except branch - m_pmCFGData = NULL; - } -} - -EFrameworkunifiedStatus CCFGParser::CFGParseFile(const std::string &f_cfilepath) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - size_t l_uiPos = 0; - std::string l_cLine(""); - std::string l_cTag(""); // LCOV_EXCL_BR_LINE 11:except branch - std::string l_cComment(""); // LCOV_EXCL_BR_LINE 11:except branch - - m_pmCFGData = new(std::nothrow) CFGData_Type(); // LCOV_EXCL_BR_LINE 11:except branch - - if (NULL != m_pmCFGData) { // LCOV_EXCL_BR_LINE 5:new's error case - // open the file - std::ifstream l_objFile(f_cfilepath.c_str()); // LCOV_EXCL_BR_LINE 11:except branch - - // check if file is opened - if (l_objFile.is_open()) { - CBlock *l_pBlock = NULL; - - // read until end of file is not reached or any other stream error occurred - while (!l_objFile.eof()) { - // read the line from the file - getline(l_objFile, l_cLine); // LCOV_EXCL_BR_LINE 11:except branch - - // if line is a comment - if ('#' == l_cLine[0] || ';' == l_cLine[0]) { - if (!l_cComment.empty()) { - l_cComment.append("\n"); // LCOV_EXCL_BR_LINE 11:except branch - } - l_cComment.append(l_cLine); - } else if ('[' == l_cLine[0]) { // if line is main tag - // creates new CBlock object, - // each block contains information of single like all its key-value pair and - // all the comments associated with it. - l_pBlock = new CBlock(); // LCOV_EXCL_BR_LINE 11:except branch - if (NULL != l_pBlock) { // LCOV_EXCL_BR_LINE 5:new's error case - // set the tag comment - l_pBlock->m_cComment = l_cComment; - l_cComment.clear(); - - if (std::string::npos != (l_uiPos = l_cLine.find(']'))) { - // set the tag - l_cTag = l_cLine.substr(1, l_uiPos - 1); // LCOV_EXCL_BR_LINE 11:except branch - - // insert the block with its tag name in structure(map) - m_pmCFGData->insert(make_pair(l_cTag, l_pBlock)); // NOLINT (readability/nolint) - } else { - delete l_pBlock; // LCOV_EXCL_BR_LINE 11:except branch - l_pBlock = NULL; - - // LCOV_EXCL_BR_START 15:marco defined in "native_service/ns_logger_if.h" - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "End Tag missing"); - // LCOV_EXCL_BR_STOP - l_eStatus = eFrameworkunifiedStatusErrOther; - break; - } - } else { - // LCOV_EXCL_START 5:new's error case - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Error allocating memory for l_pBlock"); - l_eStatus = eFrameworkunifiedStatusNullPointer; - break; - // LCOV_EXCL_STOP - } - } else if (std::string::npos != (l_uiPos = l_cLine.find('='))) { // LCOV_EXCL_BR_LINE 11:except branch - if (NULL != l_pBlock) { // LCOV_EXCL_BR_LINE 5:new's error case - // create new node object, - // each node object contains the information of singlr key-value pair and - /// it's comment(if any) - // LCOV_EXCL_BR_START 11:except branch - CNode l_objNode; - l_objNode.m_cComment.append(l_cComment); - l_objNode.m_cTag = l_cLine.substr(0, l_uiPos); - l_objNode.m_cValue = l_cLine.substr(l_uiPos + 1); - - // insert the node object in block - l_pBlock->m_vElementPair.push_back(l_objNode); - // LCOV_EXCL_BR_STOP - - l_cComment.clear(); - } else { - // LCOV_EXCL_BR_START 15:marco defined in "native_service/ns_logger_if.h" - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "l_pBlock is NULL"); - // LCOV_EXCL_BR_STOP - l_eStatus = eFrameworkunifiedStatusNullPointer; - break; - } - } - } - - // last comment - if (!l_cComment.empty()) { - m_cLastComment = l_cComment; - } else { - m_cLastComment.clear(); - } - - // close the file - l_objFile.close(); // LCOV_EXCL_BR_LINE 11:except branch - } else { - l_eStatus = eFrameworkunifiedStatusFail; - // LCOV_EXCL_BR_START 15:marco defined in "native_service/ns_logger_if.h" - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Error Opening File"); - // LCOV_EXCL_BR_STOP - } - } else { - // LCOV_EXCL_START 5:new's error case - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "m_pmCFGData is NULL"); - l_eStatus = eFrameworkunifiedStatusNullPointer; - // LCOV_EXCL_STOP - } - - return l_eStatus; -} - -std::string CCFGParser::CFGGetData(const std::string &f_ckey) { - CFGData_Type::iterator l_itCfgStructure; - std::string l_cHeadTag = ""; - std::string l_cTag = ""; // LCOV_EXCL_BR_LINE 11:except branch - std::string l_cValue = ""; // LCOV_EXCL_BR_LINE 11:except branch - - size_t l_uiPos = 0; - - if (NULL != m_pmCFGData && !f_ckey.empty()) { // LCOV_EXCL_BR_LINE 5:new's error case(in function CFGParseFile) - if (std::string::npos != (l_uiPos = f_ckey.find('.'))) { // LCOV_EXCL_BR_LINE 11:except branch - l_cHeadTag = f_ckey.substr(0, l_uiPos); // LCOV_EXCL_BR_LINE 11:except branch - l_cTag = f_ckey.substr(l_uiPos + 1); // LCOV_EXCL_BR_LINE 11:except branch - } - - // search for the key and its associated value in internal structure - for (l_itCfgStructure = m_pmCFGData->begin(); - l_itCfgStructure != m_pmCFGData->end(); - l_itCfgStructure++) { - CBlock *l_pBlock = (*l_itCfgStructure).second; - - if (!l_cHeadTag.compare((*l_itCfgStructure).first) && NULL != l_pBlock) { - for (UI_32 l_uiCount = 0; l_uiCount < l_pBlock->m_vElementPair.size(); l_uiCount++) { - if (!l_cTag.compare(l_pBlock->m_vElementPair[l_uiCount].m_cTag)) { - // LCOV_EXCL_BR_START 200:After l_cValue assignment is empty,there is no other place to assignment the value - if (!l_cValue.empty()) { - // LCOV_EXCL_BR_STOP - // LCOV_EXCL_START 200:After l_cValue assignment is empty,there is no other place to assignment the value - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_cValue.append("\n"); - // LCOV_EXCL_STOP 200 - } - l_cValue.append(l_pBlock->m_vElementPair[l_uiCount].m_cValue); - } - } - } - } - } - - return l_cValue; -} - -EFrameworkunifiedStatus CCFGParser::CFGGetData(const std::string &f_ckey, std::string &f_cvalue) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusFail; - - CFGData_Type::iterator l_itCfgStructure; - std::string l_cHeadTag = ""; - std::string l_cTag = ""; // LCOV_EXCL_BR_LINE 11:except branch - std::string l_cValue = ""; // LCOV_EXCL_BR_LINE 11:except branch - - size_t l_uiPos = 0; - - if (NULL != m_pmCFGData && !f_ckey.empty()) { // LCOV_EXCL_BR_LINE 5:new's error case(in function CFGParseFile) - if (std::string::npos != (l_uiPos = f_ckey.find('.'))) { // LCOV_EXCL_BR_LINE 11:except branch - l_cHeadTag = f_ckey.substr(0, l_uiPos); // LCOV_EXCL_BR_LINE 11:except branch - l_cTag = f_ckey.substr(l_uiPos + 1); // LCOV_EXCL_BR_LINE 11:except branch - } - - // search for the key and its associated value in internal structure - for (l_itCfgStructure = m_pmCFGData->begin(); - l_itCfgStructure != m_pmCFGData->end(); - l_itCfgStructure++) { - CBlock *l_pBlock = (*l_itCfgStructure).second; - - if (!l_cHeadTag.compare((*l_itCfgStructure).first) && NULL != l_pBlock) { - for (UI_32 l_uiCount = 0; l_uiCount < l_pBlock->m_vElementPair.size(); l_uiCount++) { - if (!l_cTag.compare(l_pBlock->m_vElementPair[l_uiCount].m_cTag)) { - if (!f_cvalue.empty()) { - f_cvalue.append("\n"); - } - f_cvalue.append(l_pBlock->m_vElementPair[l_uiCount].m_cValue); - - l_eStatus = eFrameworkunifiedStatusOK; - } - } - } - } - } - - return l_eStatus; -} - -EFrameworkunifiedStatus CCFGParser::CFGSetData(const std::string &f_cKey, std::string f_cvalue) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusFail; - - CFGData_Type::iterator l_itCfgStructure; - std::string l_cHeadTag = ""; - std::string l_cTag = ""; // LCOV_EXCL_BR_LINE 11:except branch - std::string l_cValue = ""; // LCOV_EXCL_BR_LINE 11:except branch - size_t l_uiPos = 0; - - // LCOV_EXCL_BR_START 6:f_cKey is not NULL, because checked in CCFGWriter::SetValue - if (NULL != m_pmCFGData && !f_cKey.empty()) { - // LCOV_EXCL_BR_STOP - if (std::string::npos != (l_uiPos = f_cKey.find('.'))) { // LCOV_EXCL_BR_LINE 11:except branch - l_cHeadTag = f_cKey.substr(0, l_uiPos); // LCOV_EXCL_BR_LINE 11:except branch - l_cTag = f_cKey.substr(l_uiPos + 1); // LCOV_EXCL_BR_LINE 11:except branch - } - - // search for the key in internal structure and set the data for it - for (l_itCfgStructure = m_pmCFGData->begin(); - l_itCfgStructure != m_pmCFGData->end(); - l_itCfgStructure++) { - CBlock *l_pBlock = (*l_itCfgStructure).second; - - if (!l_cHeadTag.compare((*l_itCfgStructure).first) && NULL != l_pBlock) { - for (UI_32 l_uiCount = 0; l_uiCount < l_pBlock->m_vElementPair.size(); l_uiCount++) { - if (!l_cTag.compare(l_pBlock->m_vElementPair[l_uiCount].m_cTag)) { - l_pBlock->m_vElementPair[l_uiCount].m_cValue.assign(f_cvalue); - l_eStatus = eFrameworkunifiedStatusOK; - } - } - } - } - } else { - // LCOV_EXCL_START 6:f_cKey is not NULL, because checked in CCFGWriter::SetValue - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_eStatus = eFrameworkunifiedStatusNullPointer; - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "m_pmCFGData is NULL"); - // LCOV_EXCL_STOP - } - - return l_eStatus; -} - -EFrameworkunifiedStatus CCFGParser::CFGSaveData(const std::string &f_cfilepath) { - EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK; - - CFGData_Type::iterator l_itCfgStructure; - - if (NULL != m_pmCFGData) { // LCOV_EXCL_BR_LINE 5:m_pmCFGData cannot be NULL, because internal logic guarantee - std::ofstream l_objFile(f_cfilepath.c_str()); - - // check if file is open - if (l_objFile.is_open()) { - // write the updated CFG structure back to the file - for (l_itCfgStructure = m_pmCFGData->begin(); - l_itCfgStructure != m_pmCFGData->end(); - l_itCfgStructure++) { - CBlock *l_pBlock = (*l_itCfgStructure).second; - if (NULL != l_pBlock) { // LCOV_EXCL_BR_LINE 11:except branch - // write the main tag comment in file - if (!l_pBlock->m_cComment.empty()) { - l_objFile << l_pBlock->m_cComment << std::endl; - } - - // write main tag to file - l_objFile << "[" << (*l_itCfgStructure).first << "]" << std::endl; - - for (UI_32 l_uiCount = 0; l_uiCount < l_pBlock->m_vElementPair.size(); l_uiCount++) { - // comment over the key-value pair - if (!l_pBlock->m_vElementPair[l_uiCount].m_cComment.empty()) { - l_objFile << l_pBlock->m_vElementPair[l_uiCount].m_cComment << std::endl;; - } - - // key-value - l_objFile << l_pBlock->m_vElementPair[l_uiCount].m_cTag << "=" - << l_pBlock->m_vElementPair[l_uiCount].m_cValue << std::endl; - } - } - } - - // last comment - if (!m_cLastComment.empty()) { - l_objFile << m_cLastComment << std::endl; - } - - // close the file - l_objFile.close(); // LCOV_EXCL_BR_LINE 11:except branch - } else { - l_eStatus = eFrameworkunifiedStatusFail; - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Cannot Open File"); - } - } else { - // LCOV_EXCL_START 5:m_pmCFGData cannot be NULL, because internal logic guarantee - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_eStatus = eFrameworkunifiedStatusNullPointer; - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "m_pmCFGData is NULL"); - // LCOV_EXCL_STOP - } - - return l_eStatus; -} |