source: Sophya/trunk/SophyaProg/Tests/piapp.cc@ 499

Last change on this file since 499 was 499, checked in by ansari, 26 years ago

modifs piapp et ajout tobjio.cc Reza 22/10/99

File size: 3.3 KB
RevLine 
[224]1#include <stdlib.h>
2#include <stdio.h>
3
[499]4#include "pistdimgapp.h"
5#include "piacmd.h"
6#include "piversion.h"
7#include "piaversion.h"
[224]8
9#include "timing.h"
[499]10#include "outilsinit.h"
[224]11
12
13
14
15/* ================================ MAIN() ================================= */
16
17int main(int narg, char *arg[])
18{
19int ofa;
[499]20int fgfpe, fgsegv, fgred, fgexec;
[224]21
[499]22PeidaInit();
[224]23
24InitTim();
25
26ofa = 1;
27if (narg > 1)
28 {
29 if (strcmp(arg[1],"-h") == 0)
30 {
31 puts("\n piapp: Programme d'analyse interactive ");
[499]32 puts("Usage: piapp [-nored] [-nosig] [-nosigfpe] [-nosigsegv] [-help2tex] [-exec file [args]]");
33 puts(" -nored : NoRedirect StdOut/StdErr");
34 puts(" -nosig : Don't catch SigFPE, SigSEGV");
35 puts(" -nosigfpe -nosigsegv: Don't catch SigFPE / SigSEGV");
36 puts(" -help2tex: Create a LaTeX help file (piahelp.tex)");
37 puts(" -exec file [args] : Execute command file \n");
[224]38 exit(0);
39 }
40 }
41
42ofa = 1;
[499]43fgred = fgfpe = fgsegv = true;
44fgexec = false;
45string exfc;
46// Pour fabriquer le help
47bool fgtexh = false;
48int ka;
49for(ka=1; ka<narg; ka++) {
50 if (strcmp(arg[ka],"-nored") == 0) fgred=false;
51 else if (strcmp(arg[ka],"-nosig") == 0) fgfpe=fgsegv=false;
52 else if (strcmp(arg[ka],"-nosigfpe") == 0) fgfpe=false;
53 else if (strcmp(arg[ka],"-nosigsegv") == 0) fgsegv=false;
54 else if (strcmp(arg[ka],"-help2tex") == 0) { fgtexh=true; fgred=false; }
55 else if (strcmp(arg[ka],"-exec") == 0) {
56 if (ka < narg-1) {
57 fgexec = true;
58 exfc = "exec";
59 for(int kaa=ka+1; kaa<narg; kaa++) { exfc += ' '; exfc += arg[kaa]; }
60 }
61 break;
62 }
63 }
[224]64
[499]65if (fgexec) printf(">>>>> Starting piapp , Executing %s \n", exfc.c_str());
66else printf(">>>>> Starting piapp <<<<< \n");
67printf("Version: piapp=%g PI=%g PEIDA=%g \n", (double)PIAPP_VERSIONNUMBER,
68 (double)PI_VERSIONNUMBER, (float)PeidaVersion());
[224]69
[499]70PIStdImgApp * app = new PIStdImgApp(narg, arg);
[224]71
[499]72// Gestion de redirection stdout/err et Signaux
73if (fgred) app->RedirectStdOutErr(true);
74else app->RedirectStdOutErr(false);
75app->CatchSignals(fgfpe, fgsegv);
76
77// S'il y a un fichier de commande a executer
78if (fgexec) app->CmdInterpreter()->Interpret(exfc);
79
80// S'il y a besoin de faire le fichier Help
81if (fgtexh) {
82 string thf = "piahelp.tex";
83 app->CmdInterpreter()->HelptoLaTex(thf);
84 printf("piapp : Help file piahelp.tex created --> exit(0) \n");
85 delete app;
86 exit(0);
87}
88
[224]89int rc = 0;
90bool cont = true;
91while(cont) {
92 rc = 0; cont = false;
93 app->SetReady();
94 if (fgred) app->RedirectStdOutErr(true);
[499]95 try {
[224]96 app->Run();
[499]97 } catch ( PException exc ) {
[224]98 char ans[32],rep;
99 app->Stop();
100 app->RedirectStdOutErr(false);
101 fflush(stdout);
102 cout << endl;
103 cerr << endl;
[499]104 cerr << "PIStdImg/main() Exception catched ! " << exc.Msg() << endl;
105 cerr << " continue <CR> , Stop program S<CR> ? " << endl; gets(ans);
106 rc = 9;
[224]107 rep = toupper(ans[0]);
[499]108 if (rep == 'S') {
109 printf(" !!!! Stopping piapp !!!! \n");
110 cont = false;
111 }
112 else {
113 printf(" *** piapp - Continuing event loop *** \n");
114 cont = true;
115 }
116// else { cont = true; if (rep == 'K') app->CloseAllWindows(); }
[224]117 } ENDTRY;
118}
119
120app->RedirectStdOutErr(false);
[499]121// On de-charge le module erospiamodule
[224]122delete app;
[499]123
[224]124printf("piapp : Exiting .... Rc= %d \n", rc);
125exit(rc);
126}
127
Note: See TracBrowser for help on using the repository browser.