]> SALOME platform Git repositories - modules/shaper.git/blob - src/XAO/XAO_IntegerStep.cxx
Salome HOME
Fixed validators for Boolean and Intersection
[modules/shaper.git] / src / XAO / XAO_IntegerStep.cxx
1 // Copyright (C) 2013-2015  CEA/DEN, EDF R&D, OPEN CASCADE
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 // Author : Frederic Pons (OpenCascade)
20
21 #include "XAO_IntegerStep.hxx"
22 #include "XAO_XaoUtils.hxx"
23
24 using namespace XAO;
25
26 IntegerStep::IntegerStep(const int& step, const int& stamp, const int& nbElements, const int& nbComponents)
27 {
28     m_nbElements = nbElements;
29     m_nbComponents = nbComponents;
30     m_step = step;
31     m_stamp = stamp;
32
33     m_values.reserve(m_nbElements);
34     for (int i = 0; i < m_nbElements; ++i)
35     {
36         std::vector<int> row;
37         row.reserve(m_nbComponents);
38         for (int j = 0; j < m_nbComponents; ++j)
39             row.push_back(0);
40         m_values.push_back(row);
41     }
42 }
43
44 std::vector<int> IntegerStep::getValues()
45 {
46     std::vector<int> result;
47     result.reserve(m_nbElements * m_nbComponents);
48
49     std::vector< std::vector<int>  >::iterator it;
50     for (it = m_values.begin(); it != m_values.end(); ++it)
51     {
52         std::vector<int> eltValues = *it;
53         result.insert(result.end(), eltValues.begin(), eltValues.end());
54     }
55
56     return result;
57 }
58
59 std::vector<int> IntegerStep::getElement(const int& element)
60 throw (XAO_Exception)
61 {
62     checkElementIndex(element);
63
64     std::vector<int> result(m_values[element]);
65     return result;
66 }
67
68 std::vector<int> IntegerStep::getComponent(const int& component)
69 throw (XAO_Exception)
70 {
71     checkComponentIndex(component);
72
73     std::vector<int> result;
74     result.reserve(m_nbElements);
75
76     std::vector< std::vector<int>  >::iterator it;
77     for (it = m_values.begin(); it != m_values.end(); ++it)
78     {
79         std::vector<int> eltValues = *it;
80         result.push_back(eltValues[component]);
81     }
82
83     return result;
84 }
85
86 const int IntegerStep::getValue(const int& element, const int& component)
87 throw (XAO_Exception)
88 {
89     checkElementIndex(element);
90     checkComponentIndex(component);
91
92     return m_values[element][component];
93 }
94
95 const std::string IntegerStep::getStringValue(const int& element, const int& component)
96 throw (XAO_Exception)
97 {
98     return XaoUtils::intToString(getValue(element, component));
99 }
100
101 void IntegerStep::setValues(const std::vector<int>& values)
102 throw (XAO_Exception)
103 {
104     checkNbValues(values.size());
105
106     for (int i = 0; i < m_nbElements; ++i)
107     {
108         for (int j = 0; j < m_nbComponents; ++j)
109         {
110             m_values[i][j] = values[i * m_nbComponents + j];
111         }
112     }
113 }
114
115 void IntegerStep::setElement(const int& element, const std::vector<int>& elements)
116 throw (XAO_Exception)
117 {
118     checkElementIndex(element);
119     checkNbComponents(elements.size());
120
121     for (int i = 0; i < m_nbComponents; ++i)
122         m_values[element][i] = elements[i];
123 }
124
125 void IntegerStep::setComponent(const int& component, const std::vector<int>& components)
126 throw (XAO_Exception)
127 {
128     checkElementIndex(component);
129     checkNbElements(components.size());
130
131     for (int i = 0; i < m_nbElements; ++i)
132         m_values[i][component] = components[i];
133 }
134
135 void IntegerStep::setValue(const int& element, const int& component, const int& value)
136 throw (XAO_Exception)
137 {
138     checkElementIndex(element);
139     checkComponentIndex(component);
140
141     m_values[element][component] = value;
142 }
143
144 void IntegerStep::setStringValue(const int& element, const int& component, const std::string& value)
145 throw (XAO_Exception)
146 {
147     setValue(element, component, XaoUtils::stringToInt(value));
148 }