Salome HOME
CCAR: remove some memory leaks in non local SALOMEDS
[modules/kernel.git] / src / SALOMEDS / SALOMEDS_IParameters.hxx
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 //  This library is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU Lesser General Public
8 //  License as published by the Free Software Foundation; either
9 //  version 2.1 of the License.
10 //
11 //  This library is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 //  Lesser General Public License for more details.
15 //
16 //  You should have received a copy of the GNU Lesser General Public
17 //  License along with this library; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 #ifndef SALOMEDS_IParameters_H
23 #define SALOMEDS_IParameters_H
24
25 #include <string>
26 #include <vector>
27 #include <map>
28
29 #include "SALOMEDSClient.hxx"
30 #include "SALOMEDSClient_IParameters.hxx"
31
32 /*! 
33   Class which an interface to store the parameters of the objects
34 */
35 class SALOMEDS_IParameters: public SALOMEDSClient_IParameters
36 {
37 public:
38   SALOMEDS_IParameters(const _PTR(AttributeParameter)& ap); 
39
40   virtual ~SALOMEDS_IParameters();
41
42   /*!
43     Appends a string value to a named list. 
44     Returns a number of the added value.
45     Note: the name of the list MUST be unique
46    */
47   virtual int append(const std::string& listName, const std::string& value); 
48
49   /*!
50     Returns a number elements in the list
51    */
52   virtual int nbValues(const std::string& listName);
53
54   /*!
55     Returns a list of values in the list
56    */
57   virtual std::vector<std::string> getValues(const std::string& listName);
58
59   /*!
60     Returns a value with given %index, where %index is in range [0:nbValues-1]
61    */
62   virtual std::string getValue(const std::string& listName, int index);
63
64   /*!
65     Returns a list all entries lists
66    */
67   virtual std::vector<std::string> getLists();
68
69   /*!
70     Sets a new named parameter value for the given entry
71    */
72   virtual void setParameter(const std::string& entry, const std::string& parameterName, const std::string& value);
73
74   /*!
75     Gets a named parameter value for the given entry
76    */
77   virtual std::string getParameter(const std::string& entry, const std::string& parameterName);
78
79   /*!
80     Returns all parameter names of the given entry
81    */
82   virtual std::vector<std::string> getAllParameterNames(const std::string& entry);
83
84   /*!
85     Returns all parameter  values of the given entry
86    */
87   virtual std::vector<std::string> getAllParameterValues(const std::string& entry);
88
89   /*!
90     Returns a number of parameters of the given entry
91    */
92   virtual int getNbParameters(const std::string& entry);
93
94   /*!
95     Returns a list all entries 
96    */
97   virtual std::vector<std::string> getEntries();
98
99   /*!
100     Sets a global named property value
101    */
102   virtual void setProperty(const std::string& name, const std::string& value);
103
104   /*!
105     Gets a value of global named property
106    */
107   virtual std::string getProperty(const std::string& name);
108
109   /*!
110     Returns a list all properties 
111    */
112   virtual std::vector<std::string> getProperties();
113
114   /*!
115     Breaks a value string in two parts which is divided by %separator.
116     If fromEnd is True the search of separator starts from the end of the string
117    */
118   virtual std::vector<std::string> parseValue(const std::string& value, const char separator, bool fromEnd = true);
119
120
121   /*!
122     Returns encoded entry that is a relative entry for the component
123    */
124   virtual std::string encodeEntry(const std::string& entry, const std::string& compName);
125
126   /*!
127     Returns decoded entry that is an absolute entry
128    */
129   virtual std::string decodeEntry(const std::string& entry);
130
131   /*!
132     Enables/Disables the dumping visual parameters
133    */
134   virtual void setDumpPython(_PTR(Study) study, const std::string& theID = "");
135
136   /*!
137     Returns whether there is the dumping visual parameters
138    */
139   virtual bool isDumpPython(_PTR(Study) study, const std::string& theID = "");  
140
141   /*!
142     Returns a default name of the component where the visula parameters are stored.
143   */
144   virtual std::string getDefaultVisualComponent();
145
146 private:
147   _PTR(AttributeParameter) _ap;
148   _PTR(Study) _study;
149   std::map<std::string, std::string> _compNames;
150 };
151
152
153 #endif