]> git.mxchange.org Git - simgear.git/commitdiff
cppbind: add to_nasal_helper for enums.
authorThomas Geymayer <tomgey@gmail.com>
Mon, 14 Oct 2013 21:03:36 +0000 (23:03 +0200)
committerThomas Geymayer <tomgey@gmail.com>
Mon, 14 Oct 2013 21:03:36 +0000 (23:03 +0200)
simgear/nasal/cppbind/cppbind_test.cxx
simgear/nasal/cppbind/detail/to_nasal_helper.hxx

index 6d75b96607e3c68802d80a21c514f549c09c8be0..2a010d387666470aa7d74c070e7b674ad1cdeb99 100644 (file)
     return 1; \
   }
 
+enum MyEnum
+{
+  ENUM_FIRST,
+  ENUM_ANOTHER,
+  ENUM_LAST
+};
 struct Base
 {
   naRef member(const nasal::CallContext&) { return naNil(); }
@@ -83,6 +89,9 @@ int main(int argc, char* argv[])
 
   using namespace nasal;
 
+  r = to_nasal(c, ENUM_ANOTHER);
+  VERIFY( from_nasal<int>(c, r) == ENUM_ANOTHER );
+
   r = to_nasal(c, "Test");
   VERIFY( strncmp("Test", naStr_data(r), naStr_len(r)) == 0 );
   VERIFY( from_nasal<std::string>(c, r) == "Test" );
index f9e4f235f4dcbb580add1fb861715c418ca38029..e6c8a6e472c0e95fafa818b247feeb6ef3637e6e 100644 (file)
@@ -75,6 +75,16 @@ namespace nasal
 
   naRef to_nasal_helper(naContext c, const free_function_t& func);
 
+  /**
+   * Convert an enum value to the according numeric value
+   */
+  template<class T>
+  typename boost::enable_if< boost::is_enum<T>, naRef >::type
+  to_nasal_helper(naContext c, T val)
+  {
+    return naNum(val);
+  }
+
   /**
    * Convert a numeric type to Nasal number
    */