From dc8bdcdaeb9110a3d8c11edc284f9f7867403153 Mon Sep 17 00:00:00 2001 From: john30 Date: Sun, 18 Oct 2015 11:08:23 +0200 Subject: [PATCH] extracted method readConditions() --- src/lib/ebus/message.cpp | 22 +++++++++++++++------- src/lib/ebus/message.h | 8 ++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/lib/ebus/message.cpp b/src/lib/ebus/message.cpp index 16c3d95a..ef8a79d5 100644 --- a/src/lib/ebus/message.cpp +++ b/src/lib/ebus/message.cpp @@ -849,13 +849,8 @@ result_t MessageMap::addDefaultFromFile(vector< vector >& defaults, vect return FileReader::addDefaultFromFile(defaults, row, begin, defaultDest, defaultCircuit, filename, lineNo); } -result_t MessageMap::addFromFile(vector::iterator& begin, const vector::iterator end, - DataFieldTemplates* arg, vector< vector >* defaults, - const string& filename, unsigned int lineNo) +result_t MessageMap::readConditions(string& types, const string& filename, Condition*& condition) { - vector::iterator restart = begin; - Condition* condition = NULL; - string types = *restart; size_t pos; if (types.length()>0 && types[0]=='[' && (pos=types.find_last_of(']'))!=string::npos) { // check if combined or simple condition is already known @@ -886,13 +881,26 @@ result_t MessageMap::addFromFile(vector::iterator& begin, const vector::iterator& begin, const vector::iterator end, + DataFieldTemplates* arg, vector< vector >* defaults, + const string& filename, unsigned int lineNo) +{ + vector::iterator restart = begin; + string types = *restart; + Condition* condition = NULL; + result_t result = readConditions(types, filename, condition); + if (result!=RESULT_OK) + return result; if (types.length() == 0) types.append("r"); else if (types.find(']')!=string::npos) return RESULT_ERR_INVALID_ARG; - result_t result = RESULT_ERR_EOF; + result = RESULT_ERR_EOF; istringstream stream(types); string type; vector messages; diff --git a/src/lib/ebus/message.h b/src/lib/ebus/message.h index d1d54967..a5098217 100644 --- a/src/lib/ebus/message.h +++ b/src/lib/ebus/message.h @@ -606,6 +606,14 @@ public: vector::iterator& begin, string defaultDest, string defaultCircuit, const string& filename, unsigned int lineNo); + /** + * Read the @a Condition instance(s) from the types field. + * @param types the field from which to read the @a Condition instance(s). + * @param filename the name of the file being read. + * @param returnValue the variable in which to store the read instance. + */ + result_t readConditions(string& types, const string& filename, Condition*& condition); + // @copydoc virtual result_t addFromFile(vector::iterator& begin, const vector::iterator end, DataFieldTemplates* arg, vector< vector >* defaults,