Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights 1 // Copyright (C) 2010, Guy Barrand. All rights reserved. 2 // See the file tools.license for terms. 2 // See the file tools.license for terms. 3 3 4 #ifndef tools_argcv 4 #ifndef tools_argcv 5 #define tools_argcv 5 #define tools_argcv 6 6 7 #include <vector> 7 #include <vector> 8 #include <string> 8 #include <string> 9 #include "cstr" 9 #include "cstr" 10 10 11 namespace tools { 11 namespace tools { 12 12 13 inline void new_argcv(const std::vector<std::s 13 inline void new_argcv(const std::vector<std::string>& a_args,int& a_argc,char**& a_argv){ 14 // delete with delete_argcv 14 // delete with delete_argcv 15 a_argc = (int)a_args.size(); 15 a_argc = (int)a_args.size(); 16 if(a_argc<=0) { 16 if(a_argc<=0) { 17 a_argc = 0; 17 a_argc = 0; 18 a_argv = 0; 18 a_argv = 0; 19 return; 19 return; 20 } 20 } 21 typedef char* cstring; 21 typedef char* cstring; 22 a_argv = new cstring[a_argc]; 22 a_argv = new cstring[a_argc]; 23 for(int index=0;index<a_argc;index++) { 23 for(int index=0;index<a_argc;index++) { 24 const std::string& arg = a_args[index]; 24 const std::string& arg = a_args[index]; 25 a_argv[index] = new char[arg.size()+1]; 25 a_argv[index] = new char[arg.size()+1]; 26 ::strcpy(a_argv[index],arg.c_str()); 26 ::strcpy(a_argv[index],arg.c_str()); 27 } 27 } 28 } 28 } 29 29 30 inline void delete_argcv(int& a_argc,char**& a 30 inline void delete_argcv(int& a_argc,char**& a_argv) { 31 for(int index=0;index<a_argc;index++) delete 31 for(int index=0;index<a_argc;index++) delete [] a_argv[index]; 32 delete [] a_argv; 32 delete [] a_argv; 33 a_argc = 0; 33 a_argc = 0; 34 a_argv = 0; 34 a_argv = 0; 35 } 35 } 36 36 37 } 37 } 38 38 39 #endif 39 #endif