From 331820f7ee23940c6b2ab67b9920c6281df8c42d Mon Sep 17 00:00:00 2001 From: john30 Date: Sat, 21 Nov 2015 14:32:52 +0100 Subject: [PATCH] moved handling of defaults row to MessageMap, added documentation --- src/lib/ebus/filereader.h | 18 +++++++++--------- src/lib/ebus/message.cpp | 10 +++++++++- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/lib/ebus/filereader.h b/src/lib/ebus/filereader.h index 34e512b0..ebb07e6c 100644 --- a/src/lib/ebus/filereader.h +++ b/src/lib/ebus/filereader.h @@ -28,7 +28,15 @@ #include #include -/** \file filereader.h */ +/** @file filereader.h + * Helper class and constants for reading configuration files. + * + * The @a FileReader template class allows to read CSV compliant text files + * while splitting each read line into fields. + * It also supports special treatment of comment lines starting with a "#", as + * well as so called "default values" indicated by the first field starting + * with a "*" symbol. + */ using namespace std; @@ -174,14 +182,6 @@ public: virtual result_t addDefaultFromFile(vector< vector >& defaults, vector& row, vector::iterator& begin, string defaultDest, string defaultCircuit, const string& filename, unsigned int lineNo) { - if (row.size()>1 && defaultCircuit.length()>0) { - if (row[1].length()==0) - row[1] = defaultCircuit; // set default circuit - else if (row[1][0]=='#') - row[1] = defaultCircuit+row[1]; // append security suffix to circuit prefix - } - if (row.size()>5 && defaultDest.length()>0 && row[5].length()==0) - row[5] = defaultDest; // set default destination defaults.push_back(row); begin = row.end(); return RESULT_OK; diff --git a/src/lib/ebus/message.cpp b/src/lib/ebus/message.cpp index be9fc146..e5813682 100644 --- a/src/lib/ebus/message.cpp +++ b/src/lib/ebus/message.cpp @@ -886,7 +886,7 @@ result_t MessageMap::addDefaultFromFile(vector< vector >& defaults, vect vector::iterator& begin, string defaultDest, string defaultCircuit, const string& filename, unsigned int lineNo) { - // convert conditions in defaults + // check for condition in defaults string type = row[0]; if (type.length()>0 && type[0]=='[' && type[type.length()-1]==']') { // condition @@ -906,6 +906,14 @@ result_t MessageMap::addDefaultFromFile(vector< vector >& defaults, vect m_conditions[key] = condition; return RESULT_OK; } + if (row.size()>1 && defaultCircuit.length()>0) { + if (row[1].length()==0) + row[1] = defaultCircuit; // set default circuit + else if (row[1][0]=='#') + row[1] = defaultCircuit+row[1]; // append security suffix to circuit prefix + } + if (row.size()>5 && defaultDest.length()>0 && row[5].length()==0) + row[5] = defaultDest; // set default destination return FileReader::addDefaultFromFile(defaults, row, begin, defaultDest, defaultCircuit, filename, lineNo); }