source: PSPA/Interface_Web/trunk/pspaWT/sources/controler/src/nomDeLogiciel.cc @ 489

Last change on this file since 489 was 489, checked in by touze, 10 years ago

nvx elts: quadrupole & sextupole

File size: 4.5 KB
Line 
1#include "nomDeLogiciel.h"
2
3nomDeLogiciel::Logiciel nomDeLogiciel::fromString( std::string s)
4{
5  if (s == "parmela" ) return parmela;
6  else if ( s == "transport" ) return transport;
7  else if ( s == "generator" ) return generator;
8  else if ( s == "test" ) return test;
9  else if ( s == "madx" ) return madx;
10  else if ( s == "usersprogram" ) return usersprogram;
11  return unknownSoftware;
12}
13
14std::string nomDeLogiciel::toString(nomDeLogiciel::Logiciel lg)
15{
16  switch (lg) 
17    {
18    case parmela : { return "parmela"; }
19    case transport : { return "transport"; }
20    case generator : { return "generator"; }
21    case test : { return "test"; }
22    case madx : { return "madx"; }
23    case usersprogram : { return "usersprogram"; }
24    case unknownSoftware : { return "unknownSoftware"; }
25    }
26  return "unknownSoftware";
27}
28
29/** Color of the background of the sofware
30    Should be a valid Css name as FFEEDD
31*/
32std::string nomDeLogiciel::getWtColor( nomDeLogiciel::Logiciel lg) const
33{
34  switch (lg)
35    {
36    case parmela : { return "#e09bdf"; }
37    case transport : { return "#c0ea8e"; }
38    case generator : { return "#a3c0ed"; }
39    case test : { return "#ecc38e"; }
40    case madx : { return "#ecc38e"; } //{ return "#FFFF00"; }
41    case unknownSoftware : { return "#FFFFFF"; }
42    }
43  return "#FFFFFF";
44}
45
46nomDeLogiciel::nomDeLogiciel() 
47{
48  program_ = unknownSoftware;
49  progString_ = toString(program_);
50  setCompatiblesElements();
51}
52
53nomDeLogiciel::nomDeLogiciel(const string& s)
54{
55  program_ = fromString(s);
56  progString_ = toString(program_);
57  setCompatiblesElements(); 
58}
59
60nomDeLogiciel::nomDeLogiciel(int val)
61{ 
62  program_ = (Logiciel)val;
63  progString_ = toString(program_);
64  setCompatiblesElements(); 
65}
66
67int nomDeLogiciel::getNumberOfSoftwares() 
68{ 
69  return unknownSoftware;
70}
71
72void nomDeLogiciel::registerElement(nomdElements::typedElement nomdel,trivaluedBool b) 
73{
74  if (b == TBoolIgnore) {
75    ignoredElements_.push_back(nomdel);
76  } else if (b == TBoolOk) {
77    acceptedElements_.push_back(nomdel);
78  }
79}
80
81void nomDeLogiciel::setCompatiblesElements() 
82{
83  //cout << " nomDeLogiciel::setCompatiblesElements() " << program_ << endl;
84  switch (program_) 
85    {
86    case parmela : 
87      { 
88        registerElement(nomdElements::RFgun,TBoolOk);
89        registerElement(nomdElements::drift,TBoolOk);
90        registerElement(nomdElements::cell,TBoolOk);
91        registerElement(nomdElements::bend,TBoolOk);
92        registerElement(nomdElements::soleno,TBoolOk);
93        registerElement(nomdElements::fit,TBoolIgnore);
94        registerElement(nomdElements::snapshot,TBoolIgnore);
95        break;
96      }
97    case transport : 
98       { 
99         registerElement(nomdElements::beam,TBoolOk);
100         registerElement(nomdElements::drift,TBoolOk);
101         registerElement(nomdElements::bend,TBoolOk);
102         registerElement(nomdElements::soleno,TBoolOk);
103         registerElement(nomdElements::fit,TBoolOk);
104         registerElement(nomdElements::snapshot,TBoolIgnore);
105         break;
106       }
107    case generator : 
108      { 
109        registerElement(nomdElements::RFgun,TBoolOk);
110        break;
111      }
112    case test : 
113      { 
114        break;
115      }
116    case madx : 
117      { 
118        registerElement(nomdElements::RFgun,TBoolOk);
119        registerElement(nomdElements::drift,TBoolOk);
120        registerElement(nomdElements::mpole,TBoolOk);
121        registerElement(nomdElements::qpole,TBoolOk);
122        registerElement(nomdElements::spole,TBoolOk);
123        break;
124      }
125    case usersprogram : 
126      { 
127        registerElement(nomdElements::snapshot,TBoolOk);
128      }
129    case unknownSoftware :
130      { 
131        break;
132      }
133    }
134}
135
136trivaluedBool nomDeLogiciel::doAcceptElement(nomdElements::typedElement typdel) 
137{
138  //xx
139
140  //cout << " nomDeLogiciel::doAcceptElement type : " << typdel << endl;
141  //cout << " nomDeLogiciel::doAcceptElement nb el/ acc. " << acceptedElements_.size() << endl;
142  if (acceptedElements_.size() == 0 ) {
143    return TBoolError;
144  }
145 
146  if (std::find(acceptedElements_.begin(),acceptedElements_.end(),typdel) != acceptedElements_.end()) {
147    return TBoolOk;
148  }
149 
150  if (ignoredElements_.size() == 0) {
151    return TBoolError;
152  }
153 
154  if (std::find(ignoredElements_.begin(),ignoredElements_.end(),typdel) != ignoredElements_.end()) {
155    return TBoolIgnore;
156  }
157 
158  return TBoolOk;
159}
160
161// operators
162nomDeLogiciel& nomDeLogiciel::operator= (const nomDeLogiciel& nl)
163{
164  program_ = nl.program_;
165  progString_ = nl.progString_;
166  acceptedElements_ = nl.acceptedElements_;
167  ignoredElements_ = nl.ignoredElements_;
168  return *this;
169}
170
171bool nomDeLogiciel::operator== (const nomDeLogiciel& nl)
172{
173  return ( program_ == nl.program_);
174}
175
176bool nomDeLogiciel::operator!= (const nomDeLogiciel& nl)
177{
178  return ( program_ != nl.program_);
179}
Note: See TracBrowser for help on using the repository browser.