2 ** prog principal de test de ghs3dprl
5 #include <stdio.h> /* printf clrscr fopen fread fwrite fclose */
10 #include "ghs3dprl_msg_parser.h"
12 #include <qtextstream.h>
15 #include <qwindowdefs.h>
18 #include <qapplication.h>
19 #include "dlg_ghs3dmain.h"
22 using namespace med_2_2;
24 //************************************
25 int main(int argc, char **argv)
27 bool ok,is_test,is_menu,is_launchtepal;
28 int nbfiles,nbelem_limit_swap,verbose;
29 QString casename,casenamemed,tmp,cmd,format;
30 QString version="V0.1 beta";
33 if ((argc > 11)||(argc < 2))
35 cerr<<"tepal2med "<<version<<endl;
36 cerr<<"Usage: "<<argv[0]<<" CaseNameTepal NumberOfFiles [LimitSwap] [Verbose[0->6]] [Test|noTest] [Menu|noMenu] [LaunchTepal|noLaunchTepal] CaseNameMed\n";
41 nbfiles=tmp.toLong(&ok,10);
44 cerr<<"NumberOfFiles: an integer is expected\n\n";
49 cerr<<"NumberOfFiles: a positive integer is expected\n\n";
52 if (nbfiles>512) //delirium in 2007
54 cerr<<"NumberOfFiles: a positive integer <= 512 is expected\n\n";
58 //default 1GOctet/8(for double)/10(for arrays in memory at the same time)
59 nbelem_limit_swap=1000000000/8/10;
63 nbelem_limit_swap=tmp.toLong(&ok,10);
66 cerr<<"LimitSwap: an integer is expected\n\n";
69 if (nbelem_limit_swap<=0)
71 cerr<<"LimitSwap: a positive integer is expected\n\n";
80 verbose=tmp.toLong(&ok,10);
83 cerr<<"Verbose: an integer is expected\n\n";
88 cerr<<"Verbose: a positive integer is expected\n\n";
93 is_test=FALSE; //default
97 if (tmp=="Test") is_test=TRUE;
100 is_menu=FALSE; //default
104 if (tmp=="Menu") is_menu=TRUE;
107 is_launchtepal=FALSE; //default
111 if (tmp=="LaunchTepal") is_launchtepal=TRUE;
114 casenamemed=casename;
120 // We must always have an application
123 QApplication a(argc,argv);
124 dlg_ghs3dmain *m = new dlg_ghs3dmain();
125 a.setMainWidget(m); // It is our main widget
126 m->setCaption("tepal2med "+version);
127 m->show(); // Show it...
128 a.exec(); // And run!
129 cout<<"parameters "<<m->value_KeepFiles<<" "<<m->value_NbPart<<endl;
130 //cancel if close widget without Ok button
131 if (!m->value_Ok) return 1;
132 nbfiles=m->value_NbPart;
136 int n=casenamemed.contains('/');
138 path=casenamemed.section('/',-n-1,-2)+"/";
141 casenamemed=casenamemed.section('/',-1);
142 if (casenamemed.length()>20)
144 cerr<<"CaseNameMed truncated (no more 20 characters)"<<endl;
145 casenamemed.truncate(20);
148 /*cout<<"CaseNameMed="<<casenamemed<<endl;
149 cout<<"PathMed="<<path<<endl;*/
153 cout<<"CaseNameTepal="<<casename<<
154 " NumberOfFiles="<<nbfiles<<
155 " LimitSwap="<<nbelem_limit_swap<<
156 " Verbose="<<verbose<<
159 " LaunchTepal="<<is_launchtepal<<
160 " CaseNameMed="<<path+casenamemed<<
163 //"tepal -f exemple1 -n 4"
166 cmd="tepal -f "+casename+" -n "+cmd.sprintf("%d",nbfiles)+" > "+path+"tepal.out";
167 cout<<"LaunchTepal Command = "<<cmd<<endl;
168 system( (const char *) cmd ); // run
171 ghs3dprl_mesh_wrap *mymailw=new ghs3dprl_mesh_wrap;
172 //no constructor, later maybe
174 mymailw->nbelem_limit_swap=nbelem_limit_swap; //for huge cases big array swap in huge binary files
175 mymailw->verbose=verbose;
176 mymailw->casename=casenamemed;
179 ghs3dprl_msg_parser handler;
180 //constructor later maybe
181 //handler.verbose=TRUE;
182 handler.mailw=mymailw;
184 QXmlSimpleReader reader;
185 reader.setContentHandler(&handler);
186 format=format.sprintf("%d",nbfiles);
187 int nbf=format.length();
188 format=format.sprintf(".%%.%dd.%%.%dd",nbf,nbf);
190 for (int i=1; i<=nbfiles; i++)
193 //tmp=casename+tmp.sprintf(".%d.%d.msg",nbfiles,i);
194 tmp=casename+tmp.sprintf(format,nbfiles,i)+".msg";
195 if (verbose>0) cout<<"FileName="<<tmp<<endl;
197 QXmlInputSource source(&File);
198 reader.parse(source);
202 cout<<"NumberOfFilesMSGAcquired="<<mymailw->nbfiles<<"\n";
203 if (mymailw->nbfiles != nbfiles)
205 cerr<<"NumberOfFiles != NumberOfFilesAcquired is unexpected\n";
211 ok=mymailw->test_msg_wrap();
214 if (verbose>0) cout<<"\nResult_test_msg_wrap=ok\n\n";
218 cerr<<"\nResult_test_msg_wrap=NO_OK!\n\n";
223 //after verification remove unusued data
224 //"NE0 FI" for/from <version>1.0</version>
225 //after verification remove duplicates data
226 //for debug but don't do that because reliability
227 // and locality of datas files
228 //" RE " for duplicates <receive>
229 //int nb=mymailw->remove_key_mesh_wrap(QRegExp("( NE0 | RE)",TRUE,FALSE));
231 //because <send> equals <receive>
233 nb=mymailw->remove_key_mesh_wrap(QRegExp("RE",TRUE,FALSE));
234 if (verbose>3) cout<<"NumberOfKeysRemoved="<<nb<<endl;
235 if (verbose>3) ok=mymailw->list_keys_mesh_wrap();
237 //test read files .noboiteb
238 //tmp=casename+".noboiteb";
239 //ok=mymailw->ReadFileNOBOITEB(tmp);
241 //read files .noboite
244 for (int i=1; i<=nbfiles; i++)
247 tmp=casename+tmp.sprintf(format,nbfiles,i)+".noboite";
248 if (verbose>0) cout<<"FileName="<<tmp<<endl;
249 ok=mymailw->ReadFileNOBOITE(tmp);
250 //mymailw->SwapOutOfMemory_key_mesh_wrap(QRegExp("NB",TRUE,FALSE));
253 cout<<"NumberOfFilesNOBOITEAcquired="<<mymailw->nbfiles<<"\n";
254 if (mymailw->nbfiles != nbfiles)
256 cerr<<"NumberOfFiles != NumberOfFilesAcquired is unexpected\n";
262 ok=mymailw->test_vertices_wrap();
265 if (verbose>0) cout<<"\nResult_test_vertices_wrap=ok\n\n";
269 cerr<<"\nResult_test_vertices_wrap=NO_OK!\n\n";
276 for (int i=1; i<=nbfiles; i++)
279 tmp=casename+tmp.sprintf(format,nbfiles,i)+".faces";
280 if (verbose>0) cout<<"FileName="<<tmp<<endl;
281 ok=mymailw->ReadFileFACES(tmp);
284 cout<<"NumberOfFilesFACESAcquired="<<mymailw->nbfiles<<"\n\n";
285 if (mymailw->nbfiles != nbfiles)
287 cerr<<"NumberOfFiles != NumberOfFilesAcquired is unexpected\n\n";
293 for (int i=1; i<=nbfiles; i++)
296 tmp=casename+tmp.sprintf(format,nbfiles,i)+".points";
297 if (verbose>0) cout<<"FileName="<<tmp<<endl;
298 ok=mymailw->ReadFilePOINTS(tmp);
301 cout<<"NumberOfFilesPOINTSAcquired="<<mymailw->nbfiles<<"\n\n";
302 if (mymailw->nbfiles != nbfiles)
304 cerr<<"NumberOfFiles != NumberOfFilesAcquired is unexpected\n\n";
309 //supposed big files big arrays so don't read with parser
311 for (int i=1; i<=nbfiles; i++)
314 tmp=casename+tmp.sprintf(format,nbfiles,i)+".glo";
315 if (verbose>0) cout<<"FileName="<<tmp<<endl;
316 ok=mymailw->ReadFileGLO(tmp);
317 //mymailw->SwapOutOfMemory_key_mesh_wrap(QRegExp("GL",TRUE,FALSE));
320 cout<<"NumberOfFilesGLOAcquired="<<mymailw->nbfiles<<"\n\n";
321 if (mymailw->nbfiles != nbfiles)
323 cerr<<"NumberOfFiles != NumberOfFilesAcquired is unexpected\n\n";
328 ok=mymailw->list_keys_mesh_wrap();
330 ok=mymailw->list_onekey_mesh_wrap(tmp);
332 ok=mymailw->list_onekey_mesh_wrap(tmp);
334 ok=mymailw->list_onekey_mesh_wrap(tmp);
336 ok=mymailw->list_onekey_mesh_wrap(tmp);
339 ok=mymailw->list_onekey_mesh_wrap(tmp);*/
341 //test remove points (type 3)
342 //nb=mymailw->remove_key_mesh_wrap(QRegExp("PO",TRUE,FALSE));
343 //cout<<"***remove_key_mesh_wrap*** remove nb="<<nb<<endl;
344 //ok=mymailw->list_keys_mesh_wrap();
346 ok=mymailw->Write_MEDfiles();
347 //int nb=mymailw->remove_key_mesh_wrap(QRegExp(".",TRUE,FALSE));
348 nb=mymailw->remove_all_keys_mesh_wrap();
350 cout<<"***remove_all_key_mesh_wrap*** "<<nb<<" keys removed\n";
351 cout<<endl<<"===end of "<<argv[0]<<"==="<<endl;