From 43d9aeb5b47affabda6d44dd31995b07c6f28dac Mon Sep 17 00:00:00 2001 From: Andre Sailer Date: Thu, 21 Feb 2019 11:38:48 +0100 Subject: [PATCH] Marlin command line arguments: only split up to the first dot allows for changing LCFIPlus like parameters on the commandline JetVertexAndRefiner.JetClustering --- source/include/marlin/Parser.h | 7 ++++--- source/include/marlin/XMLParser.h | 7 ++++--- source/src/Marlin.cc | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/source/include/marlin/Parser.h b/source/include/marlin/Parser.h index 4c02d65b..d55903ef 100644 --- a/source/include/marlin/Parser.h +++ b/source/include/marlin/Parser.h @@ -92,17 +92,18 @@ class LCTokenizer{ std::vector< std::string >& _tokens ; char _del ; char _last ; + size_t _max ; public: - LCTokenizer( std::vector< std::string >& tokens, char del ) : _tokens(tokens) , _del(del), _last(del) { + LCTokenizer( std::vector< std::string >& tokens, char del, size_t max=-1 ) : _tokens(tokens) , _del(del), _last(del), _max(max) { } void operator()(const char& c) { - if( c != _del ) { + if( c != _del or _tokens.size() >= _max ) { - if( _last == _del ) { + if( _last == _del and _tokens.size() < _max ) { _tokens.push_back("") ; } _tokens.back() += c ; diff --git a/source/include/marlin/XMLParser.h b/source/include/marlin/XMLParser.h index 2b129a80..00288206 100644 --- a/source/include/marlin/XMLParser.h +++ b/source/include/marlin/XMLParser.h @@ -116,17 +116,18 @@ namespace marlin{ std::vector< std::string >& _tokens ; char _del ; char _last ; + size_t _max ; public: - LCTokenizer( std::vector< std::string >& tokens, char del ) : _tokens(tokens) , _del(del), _last(del) { + LCTokenizer( std::vector< std::string >& tokens, char del, size_t max=-1 ) : _tokens(tokens) , _del(del), _last(del), _max(max) { } void operator()(const char& c) { - if( c != _del ) { + if( c != _del or _tokens.size() >= _max ) { - if( _last == _del ) { + if( _last == _del and _tokens.size() < _max ) { _tokens.push_back("") ; } _tokens.back() += c ; diff --git a/source/src/Marlin.cc b/source/src/Marlin.cc index 2a0e319c..c0ff47a3 100644 --- a/source/src/Marlin.cc +++ b/source/src/Marlin.cc @@ -149,7 +149,7 @@ int main(int argc, char** argv ){ // split first arg by '.' // --global.LCIOInputFiles --> global , LCIOInputFiles s = cmdlinearg[0] ; - LCTokenizer t2( cmdlinekey, '.' ) ; + LCTokenizer t2( cmdlinekey, '.', 2 ) ; for_each( s.begin(), s.end(), t2 ) ;