]> git.mxchange.org Git - simgear.git/commitdiff
nasal::Ghost tweaking and to_nasal_helper for SGGeod.
authorThomas Geymayer <tomgey@gmail.com>
Sat, 23 Mar 2013 11:47:06 +0000 (12:47 +0100)
committerThomas Geymayer <tomgey@gmail.com>
Sat, 23 Mar 2013 11:47:06 +0000 (12:47 +0100)
simgear/nasal/cppbind/Ghost.hxx
simgear/nasal/cppbind/cppbind_test.cxx
simgear/nasal/cppbind/detail/to_nasal_helper.cxx
simgear/nasal/cppbind/detail/to_nasal_helper.hxx

index 77c0f2870c53b2e5adc3b29e99af49f293e065e2..1ffadba7636bae3ed86300f9c1d7c1a6467d2f2f 100644 (file)
@@ -278,6 +278,14 @@ namespace nasal
         return *getSingletonPtr();
       }
 
+      /**
+       * Check whether ghost type has already been initialized.
+       */
+      static bool isInit()
+      {
+        return getSingletonPtr();
+      }
+
       /**
        * Register a base class for this ghost. The base class needs to be
        * registers on its own before it can be used as base class.
index 9fa925344507799a0f960fc84b45dd996b4e5fb9..ed5cb400112ce0af6b4cbfc1bbcd45f5d14a0bcc 100644 (file)
@@ -165,6 +165,7 @@ int main(int argc, char* argv[])
     .member("base", &DoubleDerived2::getBase)
     .method("doIt", &DoubleDerived2::doSomeBaseWork);
 
+  VERIFY( Ghost<BasePtr>::isInit() );
   nasal::to_nasal(c, DoubleDerived2Ptr());
 
   BasePtr d( new Derived );
index fd744fde6fbe3125502c20aaebd1da074a4aeda2..d3dd584f156f92af32ee2b1d76974429f72a41c6 100644 (file)
@@ -20,6 +20,7 @@
 #include <simgear/nasal/cppbind/NasalHash.hxx>
 #include <simgear/nasal/cppbind/Ghost.hxx>
 
+#include <simgear/math/SGMath.hxx>
 #include <simgear/misc/sg_path.hxx>
 
 #include <boost/function.hpp>
@@ -52,6 +53,16 @@ namespace nasal
     return ref;
   }
 
+  //------------------------------------------------------------------------------
+  naRef to_nasal_helper(naContext c, const SGGeod& pos)
+  {
+    nasal::Hash hash(c);
+    hash.set("lat", pos.getLatitudeDeg());
+    hash.set("lon", pos.getLongitudeDeg());
+    hash.set("elevation", pos.getElevationM());
+    return hash.get_naRef();
+  }
+
   //----------------------------------------------------------------------------
   naRef to_nasal_helper(naContext c, const SGPath& path)
   {
index c74282ef3b02cbb1e181708eb1bed895d451c066..f9e4f235f4dcbb580add1fb861715c418ca38029 100644 (file)
@@ -33,6 +33,7 @@
 #include <string>
 #include <vector>
 
+class SGGeod;
 class SGPath;
 
 namespace nasal
@@ -63,6 +64,8 @@ namespace nasal
    */
   naRef to_nasal_helper(naContext c, const naRef& ref);
 
+  naRef to_nasal_helper(naContext c, const SGGeod& pos);
+
   naRef to_nasal_helper(naContext c, const SGPath& path);
 
   /**