JSBSim Flight Dynamics Model  1.1.11 (13 Feb 2022)
An Open Source Flight Dynamics and Control Software Library in C++
FGPropertyNode Class Reference

Detailed Description

Class wrapper for property handling.

Author
David Megginson, Tony Peden

Definition at line 70 of file FGPropertyManager.h.

#include <FGPropertyManager.h>

+ Inheritance diagram for FGPropertyNode:
+ Collaboration diagram for FGPropertyNode:

Public Member Functions

virtual ~FGPropertyNode (void)
 Destructor.
 
bool GetBool (const std::string &name, bool defaultValue=false) const
 Get a bool value for a property. More...
 
double GetDouble (const std::string &name, double defaultValue=0.0) const
 Get a double value for a property. More...
 
float GetFloat (const std::string &name, float defaultValue=0.0) const
 Get a float value for a property. More...
 
std::string GetFullyQualifiedName (void) const
 Get the fully qualified name of a node This function is very slow, so is probably useful for debugging only.
 
int GetInt (const std::string &name, int defaultValue=0) const
 Get an int value for a property. More...
 
int GetLong (const std::string &name, long defaultValue=0L) const
 Get a long value for a property. More...
 
const std::string & GetName (void) const
 Get the name of a node.
 
FGPropertyNodeGetNode (const std::string &path, bool create=false)
 Get a property node. More...
 
FGPropertyNodeGetNode (const std::string &relpath, int index, bool create=false)
 
std::string GetPrintableName (void) const
 Get the name of a node without underscores, etc.
 
std::string GetRelativeName (const std::string &path="/fdm/jsbsim/") const
 Get the qualified name of a node relative to given base path, otherwise the fully qualified name. More...
 
std::string GetString (const std::string &name, std::string defaultValue="") const
 Get a string value for a property. More...
 
bool HasNode (const std::string &path)
 Test whether a given node exists. More...
 
void SetArchivable (const std::string &name, bool state=true)
 Set the state of the archive attribute for a property. More...
 
bool SetBool (const std::string &name, bool val)
 Set a bool value for a property. More...
 
bool SetDouble (const std::string &name, double val)
 Set a double value for a property. More...
 
bool SetFloat (const std::string &name, float val)
 Set a float value for a property. More...
 
bool SetInt (const std::string &name, int val)
 Set an int value for a property. More...
 
bool SetLong (const std::string &name, long val)
 Set a long value for a property. More...
 
void SetReadable (const std::string &name, bool state=true)
 Set the state of the read attribute for a property. More...
 
bool SetString (const std::string &name, const std::string &val)
 Set a string value for a property. More...
 
void SetWritable (const std::string &name, bool state=true)
 Set the state of the write attribute for a property. More...
 

Member Function Documentation

◆ GetBool()

bool GetBool ( const std::string &  name,
bool  defaultValue = false 
) const

Get a bool value for a property.

This method is convenient but inefficient. It should be used infrequently (i.e. for initializing, loading, saving, etc.), not in the main loop. If you need to get a value frequently, it is better to look up the node itself using GetNode and then use the node's getBoolValue() method, to avoid the lookup overhead.

Parameters
nameThe property name.
defaultValueThe default value to return if the property does not exist.
Returns
The property's value as a bool, or the default value provided.

Definition at line 175 of file FGPropertyManager.cpp.

176 {
177  return getBoolValue(name.c_str(), defaultValue);
178 }

◆ GetDouble()

double GetDouble ( const std::string &  name,
double  defaultValue = 0.0 
) const

Get a double value for a property.

This method is convenient but inefficient. It should be used infrequently (i.e. for initializing, loading, saving, etc.), not in the main loop. If you need to get a value frequently, it is better to look up the node itself using GetNode and then use the node's getDoubleValue() method, to avoid the lookup overhead.

Parameters
nameThe property name.
defaultValueThe default value to return if the property does not exist.
Returns
The property's value as a double, or the default value provided.

Definition at line 203 of file FGPropertyManager.cpp.

204 {
205  return getDoubleValue(name.c_str(), defaultValue);
206 }
+ Here is the caller graph for this function:

◆ GetFloat()

float GetFloat ( const std::string &  name,
float  defaultValue = 0.0 
) const

Get a float value for a property.

This method is convenient but inefficient. It should be used infrequently (i.e. for initializing, loading, saving, etc.), not in the main loop. If you need to get a value frequently, it is better to look up the node itself using GetNode and then use the node's getFloatValue() method, to avoid the lookup overhead.

Parameters
nameThe property name.
defaultValueThe default value to return if the property does not exist.
Returns
The property's value as a float, or the default value provided.

Definition at line 196 of file FGPropertyManager.cpp.

197 {
198  return getFloatValue(name.c_str(), defaultValue);
199 }

◆ GetInt()

int GetInt ( const std::string &  name,
int  defaultValue = 0 
) const

Get an int value for a property.

This method is convenient but inefficient. It should be used infrequently (i.e. for initializing, loading, saving, etc.), not in the main loop. If you need to get a value frequently, it is better to look up the node itself using GetNode and then use the node's getIntValue() method, to avoid the lookup overhead.

Parameters
nameThe property name.
defaultValueThe default value to return if the property does not exist.
Returns
The property's value as an int, or the default value provided.

Definition at line 182 of file FGPropertyManager.cpp.

183 {
184  return getIntValue(name.c_str(), defaultValue);
185 }

◆ GetLong()

int GetLong ( const std::string &  name,
long  defaultValue = 0L 
) const

Get a long value for a property.

This method is convenient but inefficient. It should be used infrequently (i.e. for initializing, loading, saving, etc.), not in the main loop. If you need to get a value frequently, it is better to look up the node itself using GetNode and then use the node's getLongValue() method, to avoid the lookup overhead.

Parameters
nameThe property name.
defaultValueThe default value to return if the property does not exist.
Returns
The property's value as a long, or the default value provided.

Definition at line 189 of file FGPropertyManager.cpp.

190 {
191  return getLongValue(name.c_str(), defaultValue);
192 }

◆ GetNode()

FGPropertyNode * GetNode ( const std::string &  path,
bool  create = false 
)

Get a property node.

Parameters
pathThe path of the node, relative to root.
createtrue to create the node if it doesn't exist.
Returns
The node, or 0 if none exists and none was created.

Definition at line 82 of file FGPropertyManager.cpp.

83 {
84  SGPropertyNode* node = getNode(path.c_str(), create);
85  if (node == 0) {
86  cerr << "FGPropertyManager::GetNode() No node found for " << path << endl;
87  }
88  return (FGPropertyNode*)node;
89 }

◆ GetRelativeName()

string GetRelativeName ( const std::string &  path = "/fdm/jsbsim/") const

Get the qualified name of a node relative to given base path, otherwise the fully qualified name.

This function is very slow, so is probably useful for debugging only.

Parameters
pathThe path to strip off, if found.

Definition at line 161 of file FGPropertyManager.cpp.

162 {
163  string temp_string = GetFullyQualifiedName();
164  size_t len = path.length();
165  if ( (len > 0) && (temp_string.substr(0,len) == path) ) {
166  temp_string = temp_string.erase(0,len);
167  }
168  return temp_string;
169 }

◆ GetString()

string GetString ( const std::string &  name,
std::string  defaultValue = "" 
) const

Get a string value for a property.

This method is convenient but inefficient. It should be used infrequently (i.e. for initializing, loading, saving, etc.), not in the main loop. If you need to get a value frequently, it is better to look up the node itself using GetNode and then use the node's getStringValue() method, to avoid the lookup overhead.

Parameters
nameThe property name.
defaultValueThe default value to return if the property does not exist.
Returns
The property's value as a string, or the default value provided.

Definition at line 210 of file FGPropertyManager.cpp.

211 {
212  return string(getStringValue(name.c_str(), defaultValue.c_str()));
213 }

◆ HasNode()

bool HasNode ( const std::string &  path)

Test whether a given node exists.

Parameters
pathThe path of the node, relative to root.
Returns
true if the node exists, false otherwise.

Definition at line 106 of file FGPropertyManager.cpp.

107 {
108  const SGPropertyNode* node = getNode(path.c_str(), false);
109  return (node != 0);
110 }

◆ SetArchivable()

void SetArchivable ( const std::string &  name,
bool  state = true 
)

Set the state of the archive attribute for a property.

If the archive attribute is true, the property will be written when a flight is saved; if it is false, the property will be skipped.

A warning message will be printed if the property does not exist.

Parameters
nameThe property name.
stateThe state of the archive attribute (defaults to true).

Definition at line 259 of file FGPropertyManager.cpp.

260 {
261  SGPropertyNode * node = getNode(name.c_str());
262  if (node == 0)
263  cerr <<
264  "Attempt to set archive flag for non-existent property "
265  << name << endl;
266  else
267  node->setAttribute(SGPropertyNode::ARCHIVE, state);
268 }

◆ SetBool()

bool SetBool ( const std::string &  name,
bool  val 
)

Set a bool value for a property.

Assign a bool value to a property. If the property does not yet exist, it will be created and its type will be set to BOOL; if it has a type of UNKNOWN, the type will also be set to BOOL; otherwise, the value type will be converted to the property's type.

Parameters
nameThe property name.
valThe new value for the property.
Returns
true if the assignment succeeded, false otherwise.

Definition at line 217 of file FGPropertyManager.cpp.

218 {
219  return setBoolValue(name.c_str(), val);
220 }

◆ SetDouble()

bool SetDouble ( const std::string &  name,
double  val 
)

Set a double value for a property.

Assign a double value to a property. If the property does not yet exist, it will be created and its type will be set to DOUBLE; if it has a type of UNKNOWN, the type will also be set to DOUBLE; otherwise, the double value will be converted to the property's type.

Parameters
nameThe property name.
valThe new value for the property.
Returns
true if the assignment succeeded, false otherwise.

Definition at line 245 of file FGPropertyManager.cpp.

246 {
247  return setDoubleValue(name.c_str(), val);
248 }
+ Here is the caller graph for this function:

◆ SetFloat()

bool SetFloat ( const std::string &  name,
float  val 
)

Set a float value for a property.

Assign a float value to a property. If the property does not yet exist, it will be created and its type will be set to FLOAT; if it has a type of UNKNOWN, the type will also be set to FLOAT; otherwise, the value type will be converted to the property's type.

Parameters
nameThe property name.
valThe new value for the property.
Returns
true if the assignment succeeded, false otherwise.

Definition at line 238 of file FGPropertyManager.cpp.

239 {
240  return setFloatValue(name.c_str(), val);
241 }

◆ SetInt()

bool SetInt ( const std::string &  name,
int  val 
)

Set an int value for a property.

Assign an int value to a property. If the property does not yet exist, it will be created and its type will be set to INT; if it has a type of UNKNOWN, the type will also be set to INT; otherwise, the value type will be converted to the property's type.

Parameters
nameThe property name.
valThe new value for the property.
Returns
true if the assignment succeeded, false otherwise.

Definition at line 224 of file FGPropertyManager.cpp.

225 {
226  return setIntValue(name.c_str(), val);
227 }

◆ SetLong()

bool SetLong ( const std::string &  name,
long  val 
)

Set a long value for a property.

Assign a long value to a property. If the property does not yet exist, it will be created and its type will be set to LONG; if it has a type of UNKNOWN, the type will also be set to LONG; otherwise, the value type will be converted to the property's type.

Parameters
nameThe property name.
valThe new value for the property.
Returns
true if the assignment succeeded, false otherwise.

Definition at line 231 of file FGPropertyManager.cpp.

232 {
233  return setLongValue(name.c_str(), val);
234 }

◆ SetReadable()

void SetReadable ( const std::string &  name,
bool  state = true 
)

Set the state of the read attribute for a property.

If the read attribute is true, the property value will be readable; if it is false, the property value will always be the default value for its type.

A warning message will be printed if the property does not exist.

Parameters
nameThe property name.
stateThe state of the read attribute (defaults to true).

Definition at line 272 of file FGPropertyManager.cpp.

273 {
274  SGPropertyNode * node = getNode(name.c_str());
275  if (node == 0)
276  cerr <<
277  "Attempt to set read flag for non-existant property "
278  << name << endl;
279  else
280  node->setAttribute(SGPropertyNode::READ, state);
281 }

◆ SetString()

bool SetString ( const std::string &  name,
const std::string &  val 
)

Set a string value for a property.

Assign a string value to a property. If the property does not yet exist, it will be created and its type will be set to STRING; if it has a type of UNKNOWN, the type will also be set to STRING; otherwise, the string value will be converted to the property's type.

Parameters
nameThe property name.
valThe new value for the property.
Returns
true if the assignment succeeded, false otherwise.

Definition at line 252 of file FGPropertyManager.cpp.

253 {
254  return setStringValue(name.c_str(), val.c_str());
255 }

◆ SetWritable()

void SetWritable ( const std::string &  name,
bool  state = true 
)

Set the state of the write attribute for a property.

If the write attribute is true, the property value may be modified (depending on how it is tied); if the write attribute is false, the property value may not be modified.

A warning message will be printed if the property does not exist.

Parameters
nameThe property name.
stateThe state of the write attribute (defaults to true).

Definition at line 285 of file FGPropertyManager.cpp.

286 {
287  SGPropertyNode * node = getNode(name.c_str());
288  if (node == 0)
289  cerr <<
290  "Attempt to set write flag for non-existant property "
291  << name << endl;
292  else
293  node->setAttribute(SGPropertyNode::WRITE, state);
294 }
+ Here is the caller graph for this function:

The documentation for this class was generated from the following files:
JSBSim::FGPropertyNode::GetFullyQualifiedName
std::string GetFullyQualifiedName(void) const
Get the fully qualified name of a node This function is very slow, so is probably useful for debuggin...
Definition: FGPropertyManager.cpp:135