JSBSim Flight Dynamics Model  1.2.0 (05 Nov 2023)
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 72 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 180 of file FGPropertyManager.cpp.

181 {
182  return getBoolValue(name.c_str(), defaultValue);
183 }

◆ 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 208 of file FGPropertyManager.cpp.

209 {
210  return getDoubleValue(name.c_str(), defaultValue);
211 }
+ 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 201 of file FGPropertyManager.cpp.

202 {
203  return getFloatValue(name.c_str(), defaultValue);
204 }

◆ 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 187 of file FGPropertyManager.cpp.

188 {
189  return getIntValue(name.c_str(), defaultValue);
190 }

◆ 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 194 of file FGPropertyManager.cpp.

195 {
196  return getLongValue(name.c_str(), defaultValue);
197 }

◆ 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 97 of file FGPropertyManager.cpp.

98 {
99  SGPropertyNode* node = getNode(path.c_str(), create);
100  if (node == 0) {
101  cerr << "FGPropertyManager::GetNode() No node found for " << path << endl;
102  }
103  return (FGPropertyNode*)node;
104 }
+ Here is the caller graph for this function:

◆ 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 166 of file FGPropertyManager.cpp.

167 {
168  string temp_string = GetFullyQualifiedName();
169  size_t len = path.length();
170  if ( (len > 0) && (temp_string.substr(0,len) == path) ) {
171  temp_string = temp_string.erase(0,len);
172  }
173  return temp_string;
174 }
std::string GetFullyQualifiedName(void) const
Get the fully qualified name of a node This function is very slow, so is probably useful for debuggin...

◆ 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 215 of file FGPropertyManager.cpp.

216 {
217  return string(getStringValue(name.c_str(), defaultValue.c_str()));
218 }

◆ 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 121 of file FGPropertyManager.cpp.

122 {
123  const SGPropertyNode* node = getNode(path.c_str(), false);
124  return (node != 0);
125 }

◆ 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 264 of file FGPropertyManager.cpp.

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

◆ 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 222 of file FGPropertyManager.cpp.

223 {
224  return setBoolValue(name.c_str(), val);
225 }

◆ 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 250 of file FGPropertyManager.cpp.

251 {
252  return setDoubleValue(name.c_str(), val);
253 }

◆ 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 243 of file FGPropertyManager.cpp.

244 {
245  return setFloatValue(name.c_str(), val);
246 }

◆ 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 229 of file FGPropertyManager.cpp.

230 {
231  return setIntValue(name.c_str(), val);
232 }

◆ 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 236 of file FGPropertyManager.cpp.

237 {
238  return setLongValue(name.c_str(), val);
239 }

◆ 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 277 of file FGPropertyManager.cpp.

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

◆ 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 257 of file FGPropertyManager.cpp.

258 {
259  return setStringValue(name.c_str(), val.c_str());
260 }

◆ 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 290 of file FGPropertyManager.cpp.

291 {
292  SGPropertyNode * node = getNode(name.c_str());
293  if (node == 0)
294  cerr <<
295  "Attempt to set write flag for non-existant property "
296  << name << endl;
297  else
298  node->setAttribute(SGPropertyNode::WRITE, state);
299 }

The documentation for this class was generated from the following files: