]> git.mxchange.org Git - simgear.git/commitdiff
Template functions and overloaded functions for accessing property values.
authortimoore <timoore>
Tue, 18 Nov 2008 22:16:58 +0000 (22:16 +0000)
committertimoore <timoore>
Tue, 18 Nov 2008 22:16:58 +0000 (22:16 +0000)
These are useful for writing templates that manipulate properties.

simgear/props/props.hxx

index f9b469fe6aa0e4ab2d60cc2122a6cc336ce07700..d25637e04a351fc793b521fa9ab34ce298f51017 100644 (file)
@@ -1508,6 +1508,72 @@ private:
 
 };
 
+// Convenice functions for use in templates
+template<typename T>
+T getValue(const SGPropertyNode*);
+
+template<>
+inline bool getValue<bool>(const SGPropertyNode* node) { return node->getBoolValue(); }
+
+template<>
+inline int getValue<int>(const SGPropertyNode* node) { return node->getIntValue(); }
+
+template<>
+inline long getValue<long>(const SGPropertyNode* node) { return node->getLongValue(); }
+
+template<>
+inline float getValue<float>(const SGPropertyNode* node)
+{
+    return node->getFloatValue();
+}
+
+template<>
+inline double getValue<double>(const SGPropertyNode* node)
+{
+    return node->getDoubleValue();
+}
+
+template<>
+inline const char * getValue<const char*>(const SGPropertyNode* node)
+{
+    return node->getStringValue ();
+}
+
+inline bool setValue(SGPropertyNode* node, bool value)
+{
+    return node->setBoolValue(value);
+}
+
+inline bool setValue(SGPropertyNode* node, int value)
+{
+    return node->setIntValue(value);
+}
+
+inline bool setValue(SGPropertyNode* node, long value)
+{
+    return node->setLongValue(value);
+}
+
+inline bool setValue(SGPropertyNode* node, float value)
+{
+    return node->setFloatValue(value);
+}
+
+inline bool setValue(SGPropertyNode* node, double value)
+{
+    return node->setDoubleValue(value);
+}
+
+inline bool setValue(SGPropertyNode* node, const char* value)
+{
+    return node->setStringValue(value);
+}
+
+inline bool setValue (SGPropertyNode* node, const std::string& value)
+{
+    return node->setStringValue(value.c_str());
+}
+
 #endif // __PROPS_HXX
 
 // end of props.hxx