Version: 8.3.0
resume.cxx
Go to the documentation of this file.
1 // Copyright (C) 2006-2016 CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 
20 #include "RuntimeSALOME.hxx"
21 #include "Proc.hxx"
22 #include "Exception.hxx"
23 #include "Executor.hxx"
24 #include "parsers.hxx"
25 #include "VisitorSaveState.hxx"
26 #include "LoadState.hxx"
27 
28 
29 #include <iostream>
30 #include <fstream>
31 
32 using YACS::YACSLoader;
33 using namespace YACS::ENGINE;
34 using namespace std;
35 
36 
37 int
38 main (int argc, char* argv[])
39 {
40  if (argc != 3 && argc != 4)
41  {
42  cerr << "usage: " << argv[0] << " [--display=n] schema.xml state.xml" << endl;
43  return 1;
44  }
45  int display=0;
46  int argfile=1;
47  int argState=2;
48  if(argc == 4)
49  {
50  argfile=2;
51  argState=3;
52  if(std::string(argv[1]) == "--display=1")
53  display=1;
54  else if(std::string(argv[1]) == "--display=2")
55  display=2;
56  else if(std::string(argv[1]) == "--display=3")
57  display=3;
58  }
59 
61 
63  Executor executor;
64 
65  try
66  {
67  Proc* p=loader.load(argv[argfile]);
68  p->init();
69  p->exUpdateState();
70  stateParser* rootParser = new stateParser();
71  stateLoader myStateLoader(rootParser, p);
72  myStateLoader.parse(argv[argState]);
73 
74  std::ofstream f("toto");
75  p->writeDot(f);
76  f.close();
77  cerr << "+++++++++++++++++++ start calculation +++++++++++++++++++" << endl;
78  executor.RunW(p, display, false);
79  cerr << "+++++++++++++++++++ end calculation +++++++++++++++++++" << endl;
80  std::ofstream g("titi");
81  p->writeDot(g);
82  g.close();
84  vst.openFileDump("dumpState.xml");
85  p->accept(&vst);
86  vst.closeFileDump();
87  delete p;
89  return 0;
90  }
91  catch (YACS::Exception& e)
92  {
93  cerr << "Caught a YACS exception" << endl;
94  cerr << e.what() << endl;
96  return 1;
97  }
98  catch (const std::ios_base::failure&)
99  {
100  cerr << "Caught an io failure exception" << endl;
101  return 1;
102  }
103  catch(CORBA::SystemException& ex)
104  {
105  cerr << "Caught a CORBA::SystemException." ;
106  CORBA::Any tmp;
107  tmp <<= ex;
108  CORBA::TypeCode_var tc = tmp.type();
109  const char *p = tc->name();
110  if ( *p != '\0' )
111  cerr <<p;
112  else
113  cerr << tc->id();
114  cerr << endl;
115  return 1;
116  }
117  catch(omniORB::fatalException& fe)
118  {
119  cerr << "Caught omniORB::fatalException:" << endl;
120  cerr << " file: " << fe.file() << endl;
121  cerr << " line: " << fe.line() << endl;
122  cerr << " mesg: " << fe.errmsg() << endl;
123  return 1;
124  }
125  catch(...)
126  {
127  cerr << "Caught unknown exception." << endl;
128  return 1;
129  }
130 }
131