+inline float
+SGPropertyNode::get_float () const
+{
+ if (_tied)
+ return _value.float_val->getValue();
+ else
+ return _local_val.float_val;
+}
+
+inline double
+SGPropertyNode::get_double () const
+{
+ if (_tied)
+ return _value.double_val->getValue();
+ else
+ return _local_val.double_val;
+}
+
+inline const char *
+SGPropertyNode::get_string () const
+{
+ if (_tied)
+ return _value.string_val->getValue();
+ else
+ return _local_val.string_val;
+}
+
+inline bool
+SGPropertyNode::set_bool (bool val)
+{
+ if (_tied) {
+ return _value.bool_val->setValue(val);
+ } else {
+ _local_val.bool_val = val;
+ return true;
+ }
+}
+
+inline bool
+SGPropertyNode::set_int (int val)
+{
+ if (_tied) {
+ return _value.int_val->setValue(val);
+ } else {
+ _local_val.int_val = val;
+ return true;
+ }
+}
+
+inline bool
+SGPropertyNode::set_long (long val)
+{
+ if (_tied) {
+ return _value.long_val->setValue(val);
+ } else {
+ _local_val.long_val = val;
+ return true;
+ }
+}
+
+inline bool
+SGPropertyNode::set_float (float val)
+{
+ if (_tied) {
+ return _value.float_val->setValue(val);
+ } else {
+ _local_val.float_val = val;
+ return true;
+ }
+}
+
+inline bool
+SGPropertyNode::set_double (double val)
+{
+ if (_tied) {
+ return _value.double_val->setValue(val);
+ } else {
+ _local_val.double_val = val;
+ return true;
+ }
+}
+
+inline bool
+SGPropertyNode::set_string (const char * val)
+{
+ if (_tied) {
+ return _value.string_val->setValue(val);
+ } else {
+ delete (char *)_local_val.string_val;
+ _local_val.string_val = copy_string(val);
+ return true;
+ }
+}
+
+void
+SGPropertyNode::clear_value ()