//---------------------------------------------------------------------------// #include #include #include "imc_key.hpp" #include "imc_block.hpp" #include "imc_raw.hpp" //---------------------------------------------------------------------------// const std::string gittag("TAGSTRING"); const std::string githash("HASHSTRING"); //---------------------------------------------------------------------------// // define type of key-value map object typedef std::map optkeys; optkeys parse_args(int argc, char* argv[], bool list_args = false) { if ( list_args ) { std::cout<<"number of CLI-arguments: "<("showmeta",argv[i])); } else if ( std::string(argv[i]) == std::string("--listgroups") || std::string(argv[i]) == std::string("-g") ) { prsdkeys.insert(std::pair("listgroups",argv[i])); } else if ( std::string(argv[i]) == std::string("--listchannels") || std::string(argv[i]) == std::string("-c") ) { prsdkeys.insert(std::pair("listchannels",argv[i])); } else if ( std::string(argv[i]) == std::string("--listblocks") || std::string(argv[i]) == std::string("-b") ) { prsdkeys.insert(std::pair("listblocks",argv[i])); } else if ( std::string(argv[i]) == std::string("--filename") || std::string(argv[i]) == std::string("-f") ) { if ( i+1 == argc || argv[i+1][0] == '-' ) { std::cerr<<"invalid or missing --filename argument\n"; prsdkeys.insert(std::pair("invalid","filename")); } else { prsdkeys.insert(std::pair("filename",argv[i+1])); i = i + 1; } } else if ( std::string(argv[i]) == std::string("--help") || std::string(argv[i]) == std::string("-h") ) { prsdkeys.insert(std::pair("help",argv[i])); } else if ( std::string(argv[i]) == std::string("--version") || std::string(argv[i]) == std::string("-v") ) { prsdkeys.insert(std::pair("version",argv[i])); } else { // check for invalid arguments if ( argv[i][0] == '-' ) { std::cerr<<"invalid or unkown argument: "<("invalid",argv[i])); } // or missing filenames else if ( std::string(argv[i]).find(".raw") == std::string::npos ) { std::cerr<<"doesn't look like a .raw file (make sure to include extension in filename!): " <("invalid",argv[i])); } } } return prsdkeys; } //---------------------------------------------------------------------------// void show_version() { std::cout<<"imctermite ["< [options]" <<"\n\n" <<"Options:" <<"\n\n" <<" -m, --showmeta show meta information about IMC dataset\n" <<" -g, --listgroups list channelgroups\n" <<" -c, --listchannels list channels\n" <<" -b, --listblocks list IMC key-blocks\n" <<"- f, --filename filename for csv output\n" <<" -h, --help show this help message \n" <<" -v, --version display version\n" <<"\n"; } //---------------------------------------------------------------------------// int main(int argc, char* argv[]) { // parse CLI arguments optkeys cfgopts = parse_args(argc,argv); // exit on any invalid arguments if ( cfgopts.count("invalid") > 0 ) return 1; if ( cfgopts.count("version") == 1 ) { show_version(); } else if ( cfgopts.count("help") == 1 ) { show_usage(); } else { // check for at least one file argument if ( cfgopts.size() == (unsigned int)argc-1 ) { std::cerr<<"no .raw file given => check --help for usage\n"; return 1; } std::string rawfile(argv[1]); // check existence of file std::filesystem::path rawpath = rawfile; if ( !std::filesystem::exists(rawpath) ) { std::cerr<<"file does not exist: "<::iterator it = imc::keys.begin(); // it != imc::keys.end(); ++it ) // { // std::cout<second.get_info()<<"\n"; // } // // std::vector buff; // imc::block blk(imc::keys.at("CF"),0,100,"data.raw",&buff); // std::cout<