#include "FairDbConfDialog.h" #include "FairDbLogService.h" #include "Riosfwd.h" // for istream, ostream #include // for operator<<, basic_ostream, etc #include // for operator>>, string FairDbConfDialog::FairDbConfDialog() : fCurrent(), fDefault(), fResult() { } FairDbConfDialog::FairDbConfDialog(const FairRegistry& cur, const FairRegistry& defl) : fCurrent(cur), fDefault(defl), fResult() { } FairDbConfDialog::~FairDbConfDialog() { } void FairDbConfDialog::SetCurrent(const FairRegistry& r) { fCurrent.UnLockValues(); fCurrent = r; fCurrent.LockValues(); } void FairDbConfDialog::SetDefault(const FairRegistry& r) { fDefault.UnLockValues(); fDefault = r; fCurrent.LockValues(); } FairRegistry& FairDbConfDialog::Query() { FairRegistry::FairRegistryKey rk = fCurrent.Key(); // Setup result registry fResult = fCurrent; fResult.UnLockValues(); const char* k; while ( (k=rk()) ) { // bool b; char c; const char* s; int i; double d; FairRegistry r; bool isBool = false; bool isChar = fDefault.Get(k, c); bool isString = fDefault.Get(k, s); bool isInt = fDefault.Get(k, i); bool isDouble = fDefault.Get(k, d); bool isFairRegistry = false; #define PROMPT(t,c,d) \ DBLOG("FairDb",FairDbLog::kInfo) << " "<> c_in; fResult.Set(k, c_in); } else if (isString) { const char* s1; std::string s_in; fDefault.Get(k, s1); PROMPT("string",s,s1); std::cin >> s_in; fResult.Set(k, s_in.c_str()); } else if (isInt) { int i1, i_in; fDefault.Get(k, i1); PROMPT("int",i,i1); std::cin >> i_in; fResult.Set(k, i_in); } else if (isDouble) { double d1, d_in; fDefault.Get(k, d1); PROMPT("double",d,d1); std::cin >> d_in; fResult.Set(k, d_in); } else if (isFairRegistry) { } } // loop over keys return fResult; }