source: PSPA/Interface_Web/trunk/pspaWT/sources/controler/src/elementsCollection.cc @ 305

Last change on this file since 305 was 305, checked in by garnier, 11 years ago

Suppression de la classe "elementsCollection" et bug fixed #20

File size: 2.9 KB
Line 
1
2#include <algorithm>
3
4#include "elementsCollection.h"
5#include "elementDrift.h"
6#include "elementRfgun.h"
7#include "elementCell.h"
8#include "elementSoleno.h"
9#include "elementBend.h"
10#include "elementBeam.h"
11#include "elementFit.h"
12
13elementsCollection::~elementsCollection() 
14{
15  unsigned int k;
16  for(k = 0; k < elements_.size(); k++) {
17    if ( elements_[k] != NULL ) delete elements_[k];
18  }
19}
20
21void elementsCollection::raz()
22{
23  unsigned int k;
24  for(k = 0; k < elements_.size(); k++) {
25    if ( elements_[k] != NULL ) delete elements_[k];       
26  }
27  elements_.clear();
28}
29 
30unsigned elementsCollection::size() const
31{ 
32  return elements_.size();
33}
34 
35abstractElement* elementsCollection::addElement(typedElement elemType) {
36  switch ( elemType ) {
37  case RFgun : {
38    elements_.push_back(new elementRfgun());
39    break;
40  }
41  case drift : {
42    elements_.push_back(new elementDrift());
43    break;
44  }
45  case cell : {
46    elements_.push_back(new elementCell());
47    break;
48  }
49  case soleno : {
50    elements_.push_back(new elementSoleno());
51    break;
52  }
53  case bend : {
54    elements_.push_back(new elementBend());
55    break;
56  }
57  case beam : {
58    elements_.push_back(new elementBeam());
59    break;
60  }
61  case fit : {
62    elements_.push_back(new elementFit());
63    break;
64  }
65  default : {
66    cerr << " elementsCollection::addElement : ERROR unknown type of element : " << elemType << endl;
67    return NULL;
68  }
69  }
70  return elements_.back();
71}
72
73abstractElement* elementsCollection::getElementPointer(string label) const
74{
75  unsigned int k;
76  for (k = 0; k < elements_.size() ; k++) {
77    if ( elements_[k]->getLabel() == label ) return elements_[k];       
78  }
79  std::cerr << " elementsCollection::getElementPointer() : unknown element label: " << label << std::endl;
80  return NULL;
81}
82
83// un numero va de 1 à l'infini
84abstractElement* elementsCollection::getElementPointerFromNumero(int num) const
85{
86  if ( num > (int)elements_.size() || num <= 0) 
87    { 
88      return NULL;
89    }
90  else 
91    {
92      return elements_[num-1];   
93    }
94}
95
96abstractElement* elementsCollection::getElementPointerFromIndex(unsigned int index) const
97{
98  if ( index >= elements_.size() ) return NULL;
99  else  return elements_[index];         
100}
101
102int elementsCollection::getNumeroFromElementLabel(string lab)
103{
104  unsigned int k;
105  int klab = -1;
106  for (k = 0; k < elements_.size() ; k++) 
107    {
108      if ( elements_[k]->getLabel() == lab ) 
109        {
110          klab = (int)k + 1;
111          break;
112        }       
113    }
114    return klab;
115}
116
117
118void elementsCollection::eraseElement(string label)
119{
120  abstractElement* ptr = NULL;
121  unsigned int k;
122  for (k = 0; k < elements_.size() ; k++) {
123    if ( elements_[k]->getLabel() == label ) {
124      ptr = elements_[k];
125      break;     
126    }
127  }
128
129  if(ptr == NULL) {
130    std::cerr << " elementsCollection::eraseElement() : unknown element label: " << label << std::endl;
131    return;
132  } else {
133    vector<abstractElement*>::iterator j;
134    j= find(elements_.begin(),elements_.end(),ptr);
135    elements_.erase(j--);
136  }
137}
Note: See TracBrowser for help on using the repository browser.