separate resolving+scanning to own interface+class and avoid use of extern

This commit is contained in:
John
2023-05-18 12:24:50 +02:00
parent ec6dae6abb
commit e419c950d8
12 changed files with 860 additions and 640 deletions
+20 -17
View File
@@ -54,27 +54,29 @@ DataFieldTemplates* templates = nullptr;
namespace ebusd {
DataFieldTemplates* getTemplates(const string& filename) {
if (filename == "") { // avoid compiler warning
class TestResolver : public Resolver {
public:
virtual DataFieldTemplates* getTemplates(const string& filename) {
if (filename == "") { // avoid compiler warning
return templates;
}
return templates;
}
return templates;
}
result_t loadDefinitionsFromConfigPath(FileReader* reader, const string& filename, bool verbose,
map<string, string>* defaults, string* errorDescription, bool replace = false) {
time_t mtime = 0;
istream* stream = FileReader::openFile(filename, errorDescription, &mtime);
result_t result;
if (stream) {
result = reader->readFromStream(stream, filename, mtime, verbose, defaults, errorDescription);
delete(stream);
} else {
result = RESULT_ERR_NOTFOUND;
virtual result_t loadDefinitionsFromConfigPath(FileReader* reader, const string& filename,
map<string, string>* defaults, string* errorDescription, bool replace = false) {
time_t mtime = 0;
istream* stream = FileReader::openFile(filename, errorDescription, &mtime);
result_t result;
if (stream) {
result = reader->readFromStream(stream, filename, mtime, false, defaults, errorDescription);
delete(stream);
} else {
result = RESULT_ERR_NOTFOUND;
}
return result;
}
return result;
}
};
} // namespace ebusd
@@ -208,6 +210,7 @@ int main() {
templates->readLineFromStream(&dummystr, __FILE__, false, &lineNo, &row, &errorDescription, false, nullptr, nullptr);
lineNo = 0;
MessageMap* messages = new MessageMap("");
messages->setResolver(new TestResolver());
dummystr.clear();
dummystr.str("#");
messages->readLineFromStream(&dummystr, __FILE__, false, &lineNo, &row, &errorDescription, false, nullptr, nullptr);