diff --git a/.gitignore b/.gitignore index bfe4b89..44667fe 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ build/ *.a *.dat data/ +tdmripper diff --git a/README.md b/README.md index 1533b70..14a25bb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # tdm_ripper -The tdm_ripper provides convenient access to the TDM/TDMS data format employed by +The tdm_ripper provides convenient access to the TDM/TDMS data format +(TDM = Technical data management) employed by National Instruments LabView and DIAdem. ## Data Format @@ -113,3 +114,7 @@ wrapper. prefix for all csv. files. Note, that all string arguments must be converted to bytes before passing to the argument list by prepending "b". + +## References + +- https://zone.ni.com/reference/en-XX/help/371361R-01/lvhowto/ni_test_data_exchange/ diff --git a/pytdm_ripper.pyx b/cython/pytdm_ripper.pyx similarity index 100% rename from pytdm_ripper.pyx rename to cython/pytdm_ripper.pyx diff --git a/setup.py b/cython/setup.py similarity index 100% rename from setup.py rename to cython/setup.py diff --git a/setup_osx.py b/cython/setup_osx.py similarity index 100% rename from setup_osx.py rename to cython/setup_osx.py diff --git a/tdm_ripper.pxd b/cython/tdm_ripper.pxd similarity index 100% rename from tdm_ripper.pxd rename to cython/tdm_ripper.pxd diff --git a/main.cpp b/main.cpp deleted file mode 100644 index 5fce24f..0000000 --- a/main.cpp +++ /dev/null @@ -1,70 +0,0 @@ - - -#include "lib/tdm_ripper.hpp" - -int main(int argc, char* argv[]) -{ - // path of filename provided ? - assert( argc > 1 && "please provide a filename and path" ); - - std::cout<<"number of CLI-arguments: "< " + <<"\n\n" + <<"Options:" + <<"\n\n" + <<" -d, --outputdir output directory (must already exist!) for .csv files (default: current working directory)\n" + <<" -s, --csvsep separator character used in .csv files (default is comma ',')\n" + <<" -h, --help show this help message \n" + <<" -v, --version display version\n" + <<"\n"; +} + +// ------------------------------------------------------------------------- // + +// define type of key-value map object +typedef std::map optkeys; + +optkeys parse_args(int argc, char* argv[], bool showargs = false) +{ + if ( showargs ) + { + std::cout<<"number of CLI-arguments: "< 1 ) + { + if ( std::string(argv[1]) == std::string("--help") ) + { + show_usage(); + } + else if ( std::string(argv[1]) == std::string("--version") ) + { + std::cout<<"tdmripper "<("image",argv[i+1])); + // } + // i++; + // } + // else if ( std::string(argv[i]) == std::string("--drive") ) + // { + // if ( i+1 == argc || std::string(argv[i+1]).substr(0,2) == std::string("--") ) + // { + // throw std::runtime_error("invalid or missing --drive argument"); + // } + // else + // { + // prsdkeys.insert(std::pair("drive",argv[i+1])); + // } + // i++; + // } + // else if ( std::string(argv[i]) == std::string("--config") ) + // { + // if ( i+1 == argc || std::string(argv[i+1]).substr(0,2) == std::string("--") ) + // { + // throw std::runtime_error("invalid or missing --config argument"); + // } + // else + // { + // prsdkeys.insert(std::pair("config",argv[i+1])); + // } + // i++; + // } + // else if ( std::string(argv[i]) == std::string("--writeblocksize") ) + // { + // if ( i+1 == argc || std::string(argv[i+1]).substr(0,2) == std::string("--") ) + // { + // throw std::runtime_error("invalid or missing --writeblocksize argument"); + // } + // else + // { + // prsdkeys.insert(std::pair("writeblock",argv[i+1])); + // } + // i++; + // } + // else if ( std::string(argv[i]) == std::string("--readblocksize") ) + // { + // if ( i+1 == argc || std::string(argv[i+1]).substr(0,2) == std::string("--") ) + // { + // throw std::runtime_error("invalid or missing --readblocksize argument"); + // } + // else + // { + // prsdkeys.insert(std::pair("readblock",argv[i+1])); + // } + // i++; + // } + // else if ( std::string(argv[i]) == std::string("--novalidate") ) + // { + // prsdkeys.insert(std::pair("novalidate","no")); + // } + // else if ( std::string(argv[i]) == std::string("--listdrives") ) + // { + // prsdkeys.insert(std::pair("listdrives","yes")); + // } + // else if ( std::string(argv[i]) == std::string("--help") ) + // { + // show_usage(); + // } + // else + // { + // throw std::runtime_error(std::string("invalid argument ") + std::string(argv[i])); + // } + // } + } + else + { + // show_usage(); + throw std::runtime_error(".tdm/.tdx files are missing! see $ ./tdmripper --help for usage"); + } + + return prsdkeys; +} + +// ------------------------------------------------------------------------- // + +int main(int argc, char* argv[]) +{ + // parse CLI arguments + optkeys cfgopts = parse_args(argc,argv); + + // // path of filename provided ? + // assert( argc > 1 && "please provide a filename and path" ); + // + // std::cout<<"number of CLI-arguments: "<