#include <environment.h>
Public Types | |
| typedef std::pair< wxString, wxString > | NameValue |
Public Member Functions | |
| Environment () | |
| Class constructor. | |
| ~Environment () | |
| Class destructor. | |
| wxString | GetParam (const Parameter::ParameterIdentificator ¶mId) const |
| void | GetParams (const Parameter::ParameterIdentificator ¶mId, std::vector< NameValue > *values) const |
| bool | SetParam (const Parameter::ParameterIdentificator ¶mId, const wxString &value, bool forceDefault=false) |
| bool | RegisterParam (const Parameter::ParameterIdentificator ¶mId, const wxString &value) |
| bool | UnregisterParam (const Parameter::ParameterIdentificator ¶mId) |
| void | ApplyPendingParams (Module *module, const wxString altName=wxEmptyString) |
Protected Member Functions | |
| WX_DECLARE_STRING_HASH_MAP (Parameter, InstParamList) | |
| Hash map type mapping instance (usually module instance) identificator to list of parameters registered for this instance. | |
| WX_DECLARE_STRING_HASH_MAP (InstParamList, NameInstParamList) | |
| Hash map type mapping parameter name to instance list of parameters registered. | |
| WX_DECLARE_STRING_HASH_MAP (NameInstParamList, PoolNameInstParamList) | |
| Hash map type mapping pool identificator (usually module's name) to list of parameters registered. | |
Protected Attributes | |
| PoolNameInstParamList | registeredParameters |
| Hash map mapping pool identificator (usually module's name) to list of parameters registered. | |
Definition at line 152 of file environment.h.
| typedef std::pair<wxString, wxString> VRUT::Environment::NameValue |
Definition at line 166 of file environment.h.
| Environment::Environment | ( | ) |
| Environment::~Environment | ( | ) |
| VRUT::Environment::WX_DECLARE_STRING_HASH_MAP | ( | Parameter | , | |
| InstParamList | ||||
| ) | [protected] |
Hash map type mapping instance (usually module instance) identificator to list of parameters registered for this instance.
| VRUT::Environment::WX_DECLARE_STRING_HASH_MAP | ( | InstParamList | , | |
| NameInstParamList | ||||
| ) | [protected] |
Hash map type mapping parameter name to instance list of parameters registered.
| VRUT::Environment::WX_DECLARE_STRING_HASH_MAP | ( | NameInstParamList | , | |
| PoolNameInstParamList | ||||
| ) | [protected] |
Hash map type mapping pool identificator (usually module's name) to list of parameters registered.
| wxString Environment::GetParam | ( | const Parameter::ParameterIdentificator & | paramId | ) | const |
Get parameter value as string, much faster than GetParams
| [in] | paramId | Parameter identificator of registered parameter, '*' and '?' NOT allowed |
Definition at line 29 of file environment.cpp.
00030 { 00031 PoolNameInstParamList::const_iterator poolIt = registeredParameters.find(paramId.poolName); 00032 if (poolIt != registeredParameters.end()) 00033 { 00034 NameInstParamList::const_iterator paramIt = poolIt->second.find(paramId.paramName); 00035 if (paramIt != poolIt->second.end()) 00036 { 00037 InstParamList::const_iterator instIt = paramIt->second.find(paramId.instName); 00038 if (instIt != paramIt->second.end()) 00039 return instIt->second.value; 00040 } 00041 } 00042 00043 return wxEmptyString; 00044 }
| void Environment::GetParams | ( | const Parameter::ParameterIdentificator & | paramId, | |
| std::vector< NameValue > * | values | |||
| ) | const |
Get parameter(s') value(s) as string
| [in] | paramId | Parameter identificator of registered parameter(s), '*' and '?' allowed in all members |
| [out] | values | Filled with full parameter names (first) and its values (second) |
Definition at line 47 of file environment.cpp.
00048 { 00049 if (!values) 00050 return; 00051 00052 for (PoolNameInstParamList::const_iterator poolIt = registeredParameters.begin(); 00053 poolIt != registeredParameters.end(); poolIt++) 00054 { 00055 wxString poolName = poolIt->first; 00056 if (poolName.Upper().Matches(paramId.poolName.Upper())) 00057 { 00058 for (NameInstParamList::const_iterator parIt = poolIt->second.begin(); 00059 parIt != poolIt->second.end(); parIt++) 00060 { 00061 wxString parName = parIt->first; 00062 if (parName.Upper().Matches(paramId.paramName.Upper())) 00063 { 00064 for (InstParamList::const_iterator instIt = parIt->second.begin(); 00065 instIt != parIt->second.end(); instIt++) 00066 { 00067 wxString instName = instIt->first; 00068 if (instName.Upper().Matches(paramId.instName.Upper())) 00069 { 00070 Parameter::ParameterIdentificator pi(poolName, parName, instName); 00071 NameValue ret(pi.ToString(), CloneWxString(instIt->second.value)); 00072 values->push_back(ret); 00073 } 00074 } 00075 } 00076 } 00077 } 00078 } 00079 }
| bool Environment::SetParam | ( | const Parameter::ParameterIdentificator & | paramId, | |
| const wxString & | value, | |||
| bool | forceDefault = false | |||
| ) |
Set parameter value and/or its default, will be applied to all matches Given parameter is registered if no match found and paramId.poolName and paramId.paramName have no '?','*' characters
| [in] | paramId | Parameter identificator of registered parameter(s), '*' and '?' allowed in all members |
| [in] | value | New value as string |
| [in] | forceDefault | Value will be assigned as default for this parameter |
true if any match found, false otherwise (doesn't mean neccessarily that parameter was registered) Register new parameter if conditions are met
Definition at line 82 of file environment.cpp.
00083 { 00084 bool found = false; 00085 00086 for (PoolNameInstParamList::iterator poolIt = registeredParameters.begin(); 00087 poolIt != registeredParameters.end(); poolIt++) 00088 { 00089 wxString poolName = poolIt->first; 00090 if (poolName.Upper().Matches(paramId.poolName.Upper())) 00091 { 00092 for (NameInstParamList::iterator parIt = poolIt->second.begin(); 00093 parIt != poolIt->second.end(); parIt++) 00094 { 00095 wxString parName = parIt->first; 00096 if (parName.Upper().Matches(paramId.paramName.Upper())) 00097 { 00098 for (InstParamList::iterator instIt = parIt->second.begin(); 00099 instIt != parIt->second.end(); instIt++) 00100 { 00101 wxString instName = instIt->first; 00102 if (instName.Upper().Matches(paramId.instName.Upper())) 00103 { 00104 Parameter::ParameterIdentificator pi(poolName, parName, instName); 00105 if (forceDefault && instIt->second.defaultValue != value) 00106 instIt->second.defaultValue = CloneWxString(value); 00107 //if (instIt->second.value != value) 00108 { 00109 instIt->second.value = CloneWxString(value); 00110 wxCommandEvent paramEvt = Event::GET_EVT_PARAM_SET(pi, value); 00111 KERNEL->GetMessageSink()->PostEvent(paramEvt); 00112 LOGVERBOSE(wxString::Format(wxT("<Environment>%s = %s"), pi.ToString().c_str(), value.c_str())); 00113 } 00114 found = true; 00115 } 00116 } 00117 } 00118 } 00119 } 00120 } 00121 00123 if (!found && !RegisterParam(paramId, value)) 00124 LOGERROR(wxString::Format(wxT("<Environment>Parameter '%s' not found and not valid to register"), paramId.ToString().c_str())); 00125 00126 return found; 00127 }
| bool Environment::RegisterParam | ( | const Parameter::ParameterIdentificator & | paramId, | |
| const wxString & | value | |||
| ) |
Register new parameter
| [in] | paramId | Parameter full identificator |
| [in] | value | Default value |
true if successful Get instance name - 'predef' by default, assuming predefinition from startup script or command line
If found the value has higher priority (cmdline argument or script command) and we don't want to overwrite it with value given with register call. So we do nothing
Definition at line 130 of file environment.cpp.
00131 { 00132 if (paramId.IsValid()) 00133 { 00135 wxString instNameExact = wxT("predef"); 00136 if ((paramId.instName.Find('*') == wxNOT_FOUND) 00137 && (paramId.instName.Find('?') == wxNOT_FOUND) 00138 && !paramId.instName.IsEmpty()) 00139 instNameExact = CloneWxString(paramId.instName); 00140 00141 Parameter parameter(value, value); 00142 InstParamList ipl; 00143 ipl.insert(InstParamList::value_type(instNameExact, parameter)); 00144 00145 PoolNameInstParamList::iterator poolIt = registeredParameters.find(paramId.poolName); 00146 if (poolIt == registeredParameters.end()) 00147 { 00148 NameInstParamList nipl; 00149 nipl.insert(NameInstParamList::value_type(CloneWxString(paramId.paramName), ipl)); 00150 registeredParameters.insert(PoolNameInstParamList::value_type(CloneWxString(paramId.poolName), nipl)); 00151 } 00152 else 00153 { 00154 NameInstParamList::iterator paramIt = poolIt->second.find(paramId.paramName); 00155 if (paramIt == poolIt->second.end()) 00156 poolIt->second.insert(NameInstParamList::value_type(CloneWxString(paramId.paramName), ipl)); 00157 else 00158 { 00159 InstParamList::iterator instIt = paramIt->second.find(instNameExact); 00160 if (instIt == paramIt->second.end()) 00161 paramIt->second.insert(InstParamList::value_type(instNameExact, parameter)); 00162 else 00163 { 00167 return false; 00168 } 00169 } 00170 } 00171 Parameter::ParameterIdentificator pi(paramId.poolName, paramId.paramName, instNameExact); 00172 LOGVERBOSE(wxString::Format(wxT("<Environment>Registered %s = %s"), pi.ToString().c_str(), value.c_str())); 00173 return true; 00174 } 00175 return false; 00176 }
| bool Environment::UnregisterParam | ( | const Parameter::ParameterIdentificator & | paramId | ) |
Unregister parameter
| [in] | paramId | paramId Parameter identificator of registered parameter(s), '*' and '?' allowed (not in poolName member) |
true if successful Definition at line 179 of file environment.cpp.
00180 { 00181 bool found = false; 00182 00183 PoolNameInstParamList::iterator poolIt = registeredParameters.find(paramId.poolName); 00184 if (poolIt != registeredParameters.end()) 00185 { 00186 std::vector<NameInstParamList::iterator> forDeletion; 00187 for (NameInstParamList::iterator parIt = poolIt->second.begin(); 00188 parIt != poolIt->second.end(); parIt++) 00189 { 00190 wxString parName = parIt->first; 00191 if (parName.Matches(paramId.paramName)) 00192 { 00193 std::vector<InstParamList::iterator> forDeletionInst; 00194 for (InstParamList::iterator instIt = parIt->second.begin(); 00195 instIt != parIt->second.end(); instIt++) 00196 { 00197 wxString instName = instIt->first; 00198 if (instName.Matches(paramId.instName) 00199 && !instName.IsSameAs(wxT("predef"))) 00200 { 00201 forDeletionInst.push_back(instIt); 00202 Parameter::ParameterIdentificator pi(poolIt->first, parName, instName); 00203 found = true; 00204 LOGVERBOSE(wxString::Format(wxT("<Environment>Unregistered parameter %s"), pi.ToString().c_str())); 00205 } 00206 } 00207 for (std::vector<InstParamList::iterator>::const_iterator delIt = forDeletionInst.begin(); 00208 delIt != forDeletionInst.end(); delIt++) 00209 parIt->second.erase(*delIt); 00210 if (parIt->second.empty()) 00211 forDeletion.push_back(parIt); 00212 } 00213 } 00214 for (std::vector<NameInstParamList::iterator>::const_iterator delIt = forDeletion.begin(); 00215 delIt != forDeletion.end(); delIt++) 00216 poolIt->second.erase(*delIt); 00217 if (poolIt->second.empty()) 00218 registeredParameters.erase(poolIt); 00219 } 00220 00221 return found; 00222 }
| void Environment::ApplyPendingParams | ( | Module * | module, | |
| const wxString | altName = wxEmptyString | |||
| ) |
Apply pending parameter default values to a module
| [in] | module | Module to apply default values to |
| [in] | altName | Alternative module name (for searching) |
Check if param exists for this module instance in particular
No param for this instance, try to find a predefinition value
Apply params with highest priority
Post set event (needed to update GUI)
Definition at line 225 of file environment.cpp.
00226 { 00227 bool found = false; 00228 const wxString poolName = module->GetName(); 00229 LOGVERBOSE(wxT("<Environment>Applying default parameter values to ") + poolName); 00230 PoolNameInstParamList::const_iterator poolIt = registeredParameters.find(poolName); 00231 if (poolIt == registeredParameters.end() && !altName.IsEmpty()) 00232 poolIt = registeredParameters.find(altName); 00233 if (poolIt != registeredParameters.end()) 00234 { 00235 for (NameInstParamList::const_iterator parIt = poolIt->second.begin(); 00236 parIt != poolIt->second.end(); parIt++) 00237 { 00239 wxString instName = wxString::Format(wxT("%i"), module->GetID().GetInstanceID()); 00240 Parameter::ParameterIdentificator pi(poolIt->first, parIt->first, instName); 00241 InstParamList::const_iterator instIt = parIt->second.find(instName); 00242 if (instIt == parIt->second.end()) 00243 { 00245 instIt = parIt->second.find(wxT("predef")); 00246 if (instIt == parIt->second.end()) 00247 continue; 00248 RegisterParam(pi, instIt->second.value); 00249 } 00250 found = true; 00251 wxCommandEvent paramEvt = Event::GET_EVT_PARAM_SET(pi, instIt->second.value); 00253 module->PostEvent(paramEvt, true); 00255 wxCommandEvent paramEvt2 = Event::GET_EVT_PARAM_SET(pi, instIt->second.value); 00256 KERNEL->GetMessageSink()->PostEvent(paramEvt2); 00257 LOGVERBOSE(wxString::Format(wxT("%s = %s"), pi.ToString().c_str(), instIt->second.value.c_str())); 00258 } 00259 } 00260 00261 if (!found) 00262 LOGVERBOSE(wxT("<Environment>No default parameter values pending for ") + module->GetName()); 00263 }
PoolNameInstParamList VRUT::Environment::registeredParameters [protected] |
Hash map mapping pool identificator (usually module's name) to list of parameters registered.
Definition at line 163 of file environment.h.
1.5.5