From 5d7cc29eaf5484de5931b0511d1e34c1a6a24ada Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Mon, 19 Nov 2018 16:04:01 +0000 Subject: [PATCH] Hadrons: contractor token @traj@ for trajectory number in input file --- Hadrons/Global.hpp | 14 ++++++++++++++ Hadrons/Utilities/Contractor.cc | 5 +++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Hadrons/Global.hpp b/Hadrons/Global.hpp index 8a769398..aaf03427 100644 --- a/Hadrons/Global.hpp +++ b/Hadrons/Global.hpp @@ -249,6 +249,20 @@ void makeFileDir(const std::string filename, GridBase *g = nullptr); // pretty print time profile void printTimeProfile(const std::map &timing, GridTime total); +// token replacement utility +template +void tokenReplace(std::string &str, const std::string token, + const T &x, const std::string mark = "@") +{ + std::string fullToken = mark + token + mark; + + auto pos = str.find(fullToken); + if (pos != std::string::npos) + { + str.replace(pos, fullToken.size(), std::to_string(x)); + } +} + END_HADRONS_NAMESPACE #include diff --git a/Hadrons/Utilities/Contractor.cc b/Hadrons/Utilities/Contractor.cc index 4bfa1e28..2bed6bf5 100644 --- a/Hadrons/Utilities/Contractor.cc +++ b/Hadrons/Utilities/Contractor.cc @@ -60,7 +60,7 @@ namespace Contractor { public: GRID_SERIALIZABLE_CLASS_MEMBERS(A2AMatrixPar, - std::string, fileStem, + std::string, file, std::string, dataset, unsigned int, cacheSize, std::string, name); @@ -279,9 +279,10 @@ int main(int argc, char* argv[]) // load data for (auto &p: par.a2aMatrix) { - std::string filename = RESULT_FILE_NAME(p.fileStem, traj); + std::string filename = p.file; double t, size; + tokenReplace(filename, "traj", traj); std::cout << "======== Loading '" << filename << "'" << std::endl; A2AMatrixIo a2aIo(filename, p.dataset, par.global.nt);