]> git.mxchange.org Git - simgear.git/blobdiff - simgear/structure/SGBinding.hxx
Some Linux platforms need <cstdio> for snprintf.
[simgear.git] / simgear / structure / SGBinding.hxx
index eb12f3d235b3c8b6052d2451cce4110ad3572347..15757faeeeb357c214c0dd3c5d0a06abe74d5a46 100644 (file)
@@ -58,6 +58,14 @@ public:
    */
   virtual ~SGBinding ();
 
+  
+  /**
+   * clear internal state of the binding back to empty. This is useful
+   * if you don't want the 'remove on delete' behaviour of the 
+   * destructor.
+   */
+  void clear();
+
 
   /**
    * Get the command name.
@@ -114,8 +122,15 @@ public:
    */
   void fire (double setting) const;
 
-
+  /**
+   * Fire a binding with a number of additional parameters
+   * 
+   * The children of params will be merged with the fixed arguments.
+   */
+  void fire (SGPropertyNode* params) const;
+  
 private:
+  void innerFire() const;
                                 // just to be safe.
   SGBinding (const SGBinding &binding);
 
@@ -134,7 +149,7 @@ typedef std::map<unsigned,SGBindingList> SGBindingMap;
  * fire every binding in a list, in sequence
  
  */
-void fireBindingList(const SGBindingList& aBindings);
+void fireBindingList(const SGBindingList& aBindings, SGPropertyNode* params = NULL);
 
 /**
  * fire every binding in a list with a setting value
@@ -147,4 +162,9 @@ void fireBindingListWithOffset(const SGBindingList& aBindings, double offset, do
  */
 SGBindingList readBindingList(const simgear::PropertyList& aNodes, SGPropertyNode* aRoot);
 
+/**
+ * call clear() on every binding in a list
+ */
+void clearBindingList(const SGBindingList& aBindings);
+
 #endif