1 // Created on: 1993-01-22
2 // Created by: Gilles DEBARBOUILLE
3 // Copyright (c) 1993-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
17 #include <Dynamic_FuzzyClass.ixx>
18 #include <Dynamic_Parameter.hxx>
19 #include <Dynamic_BooleanParameter.hxx>
20 #include <Dynamic_IntegerParameter.hxx>
21 #include <Dynamic_RealParameter.hxx>
22 #include <Dynamic_StringParameter.hxx>
23 #include <Dynamic_ObjectParameter.hxx>
26 //=======================================================================
27 //function : Dynamic_FuzzyClass
29 //=======================================================================
31 Dynamic_FuzzyClass::Dynamic_FuzzyClass()
35 //=======================================================================
36 //function : FirstParameter
38 //=======================================================================
40 Handle(Dynamic_ParameterNode) Dynamic_FuzzyClass::FirstParameter() const
42 return thefirstparameternode;
45 //=======================================================================
46 //function : Parameter
48 //=======================================================================
50 Standard_Boolean Dynamic_FuzzyClass::Parameter(const Standard_CString aparameter) const
52 Handle(Dynamic_Parameter) parameter;
53 Handle(Dynamic_ParameterNode) definition = thefirstparameternode;
55 while(!definition.IsNull())
57 parameter = definition->Object();
58 if(parameter->Name() == aparameter) return Standard_True;
59 definition = definition->Next();
61 return Standard_False;
64 //=======================================================================
65 //function : Parameter
67 //=======================================================================
69 void Dynamic_FuzzyClass::Parameter(const Handle(Dynamic_Parameter)& aparameter)
71 Handle(Dynamic_ParameterNode) parameternode = new Dynamic_ParameterNode(aparameter);
72 parameternode->Next(thefirstparameternode);
73 thefirstparameternode = parameternode;
76 //=======================================================================
77 //function : Parameter
79 //=======================================================================
81 void Dynamic_FuzzyClass::Parameter(const Standard_CString aparameter,
82 const Standard_Boolean avalue)
84 Handle(Dynamic_ParameterNode) parameternode;
85 Handle(Dynamic_Parameter) parameter;
86 Handle(Dynamic_BooleanParameter) booleanparameter;
88 parameternode = thefirstparameternode;
89 while(!parameternode.IsNull())
91 parameter = parameternode->Object();
92 if(parameter->Name() == aparameter)
94 Handle(Dynamic_BooleanParameter)::DownCast(parameter)->Value(avalue);
97 parameternode = parameternode->Next();
99 booleanparameter = new Dynamic_BooleanParameter(aparameter,avalue);
100 Parameter(booleanparameter);
103 //=======================================================================
104 //function : Parameter
106 //=======================================================================
108 void Dynamic_FuzzyClass::Parameter(const Standard_CString aparameter,
109 const Standard_Integer avalue)
111 Handle(Dynamic_ParameterNode) parameternode;
112 Handle(Dynamic_Parameter) parameter;
113 Handle(Dynamic_IntegerParameter) integerparameter;
115 parameternode = thefirstparameternode;
116 while(!parameternode.IsNull())
118 parameter = parameternode->Object();
119 if(parameter->Name() == aparameter)
121 Handle(Dynamic_IntegerParameter)::DownCast(parameter)->Value(avalue);
124 parameternode = parameternode->Next();
126 integerparameter = new Dynamic_IntegerParameter(aparameter,avalue);
127 Parameter(integerparameter);
130 //=======================================================================
131 //function : Parameter
133 //=======================================================================
135 void Dynamic_FuzzyClass::Parameter(const Standard_CString aparameter,
136 const Standard_Real avalue)
138 Handle(Dynamic_ParameterNode) parameternode;
139 Handle(Dynamic_Parameter) parameter;
140 Handle(Dynamic_RealParameter) realparameter;
142 parameternode = thefirstparameternode;
143 while(!parameternode.IsNull())
145 parameter = parameternode->Object();
146 if(parameter->Name() == aparameter)
148 Handle(Dynamic_RealParameter)::DownCast(parameter)->Value(avalue);
151 parameternode = parameternode->Next();
153 realparameter = new Dynamic_RealParameter(aparameter,avalue);
154 Parameter(realparameter);
157 //=======================================================================
158 //function : Parameter
160 //=======================================================================
162 void Dynamic_FuzzyClass::Parameter(const Standard_CString aparameter,
163 const Standard_CString astring)
165 Handle(Dynamic_ParameterNode) parameternode;
166 Handle(Dynamic_Parameter) parameter;
167 Handle(Dynamic_StringParameter) stringparameter;
169 parameternode = thefirstparameternode;
170 while(!parameternode.IsNull())
172 parameter = parameternode->Object();
173 if(parameter->Name() == aparameter)
175 Handle(Dynamic_StringParameter)::DownCast(parameter)->Value(astring);
178 parameternode = parameternode->Next();
180 stringparameter = new Dynamic_StringParameter(aparameter,astring);
181 Parameter(stringparameter);
184 //=======================================================================
185 //function : Parameter
187 //=======================================================================
189 void Dynamic_FuzzyClass::Parameter(const Standard_CString aparameter,
190 const Handle(Standard_Transient)& anobject)
192 Handle(Dynamic_ParameterNode) parameternode;
193 Handle(Dynamic_Parameter) parameter;
194 Handle(Dynamic_ObjectParameter) objectparameter;
196 parameternode = thefirstparameternode;
197 while(!parameternode.IsNull())
199 parameter = parameternode->Object();
200 if(parameter->Name() == aparameter)
202 Handle(Dynamic_ObjectParameter)::DownCast(parameter)->Value(anobject);
205 parameternode = parameternode->Next();
207 objectparameter = new Dynamic_ObjectParameter(aparameter,anobject);
208 Parameter(objectparameter);
211 //=======================================================================
214 //=======================================================================
216 Standard_Boolean Dynamic_FuzzyClass::Value(const Standard_CString aparameter,
217 Standard_Boolean& avalue) const
219 Handle(Dynamic_ParameterNode) parameternode;
220 Handle(Dynamic_Parameter) parameter;
222 parameternode = thefirstparameternode;
224 while(!parameternode.IsNull())
226 parameter = parameternode->Object();
227 if(parameter->Name() == aparameter)
229 avalue = (*(Handle(Dynamic_BooleanParameter)*)¶meter)->Value();
230 return Standard_True;
232 parameternode = parameternode->Next();
235 return Standard_False;
238 //=======================================================================
241 //=======================================================================
243 Standard_Boolean Dynamic_FuzzyClass::Value(const Standard_CString aparameter,
244 Standard_Integer& avalue) const
246 Handle(Dynamic_ParameterNode) parameternode;
247 Handle(Dynamic_Parameter) parameter;
249 parameternode = thefirstparameternode;
251 while(!parameternode.IsNull())
253 parameter = parameternode->Object();
254 if(parameter->Name() == aparameter)
256 avalue = (*(Handle(Dynamic_IntegerParameter)*)¶meter)->Value();
257 return Standard_True;
259 parameternode = parameternode->Next();
262 return Standard_False;
265 //=======================================================================
268 //=======================================================================
270 Standard_Boolean Dynamic_FuzzyClass::Value(const Standard_CString aparameter,
271 Standard_Real& avalue) const
273 Handle(Dynamic_ParameterNode) parameternode;
274 Handle(Dynamic_Parameter) parameter;
276 parameternode = thefirstparameternode;
278 while(!parameternode.IsNull())
280 parameter = parameternode->Object();
281 if(parameter->Name() == aparameter)
283 avalue = (*(Handle(Dynamic_RealParameter)*)¶meter)->Value();
284 return Standard_True;
286 parameternode = parameternode->Next();
289 return Standard_False;
292 //=======================================================================
295 //=======================================================================
297 Standard_Boolean Dynamic_FuzzyClass::Value(const Standard_CString aparameter,
298 TCollection_AsciiString& avalue) const
300 Handle(Dynamic_ParameterNode) parameternode;
301 Handle(Dynamic_Parameter) parameter;
303 parameternode = thefirstparameternode;
305 while(!parameternode.IsNull())
307 parameter = parameternode->Object();
308 if(parameter->Name() == aparameter)
310 avalue = (*(Handle(Dynamic_StringParameter)*)¶meter)->Value();
311 return Standard_True;
313 parameternode = parameternode->Next();
316 return Standard_False;
319 //=======================================================================
322 //=======================================================================
324 Standard_Boolean Dynamic_FuzzyClass::Value(const Standard_CString aparameter,
325 Handle(Standard_Transient)& anobject) const
327 Handle(Dynamic_ParameterNode) parameternode;
328 Handle(Dynamic_Parameter) parameter;
330 parameternode = thefirstparameternode;
332 while(!parameternode.IsNull())
334 parameter = parameternode->Object();
335 if(parameter->Name() == aparameter)
337 anobject = (*(Handle(Dynamic_ObjectParameter)*)¶meter)->Value();
338 return Standard_True;
340 parameternode = parameternode->Next();
343 return Standard_False;
346 //=======================================================================
349 //=======================================================================
351 //void Dynamic_FuzzyClass::Dump(Standard_OStream& astream) const
352 void Dynamic_FuzzyClass::Dump(Standard_OStream& ) const