diff --git a/src/cpp/shared-table.cpp b/src/cpp/shared-table.cpp index 1baf7dd..8728497 100644 --- a/src/cpp/shared-table.cpp +++ b/src/cpp/shared-table.cpp @@ -4,7 +4,6 @@ #include #include -#include namespace effil { diff --git a/src/cpp/stored-object.cpp b/src/cpp/stored-object.cpp index 8d016e3..207f76d 100644 --- a/src/cpp/stored-object.cpp +++ b/src/cpp/stored-object.cpp @@ -188,25 +188,24 @@ StoredObject createStoredObject(GCObjectHandle handle) { return std::make_unique(handle); } -sol::optional storedObjectToBool(const StoredObject& sobj) { - auto ptr = dynamic_cast*>(sobj.get()); +template +sol::optional getPrimitiveHolderData(const StoredObject& sobj) { + auto ptr = dynamic_cast*>(sobj.get()); if (ptr) return ptr->getData(); - return sol::optional(); + return sol::optional(); +} + +sol::optional storedObjectToBool(const StoredObject& sobj) { + return getPrimitiveHolderData(sobj); } sol::optional storedObjectToDouble(const StoredObject& sobj) { - auto ptr = dynamic_cast*>(sobj.get()); - if (ptr) - return ptr->getData(); - return sol::optional(); + return getPrimitiveHolderData(sobj); } sol::optional storedObjectToString(const StoredObject& sobj) { - auto ptr = dynamic_cast*>(sobj.get()); - if (ptr) - return ptr->getData(); - return sol::optional(); + return getPrimitiveHolderData(sobj); } } // effil diff --git a/src/cpp/stored-object.h b/src/cpp/stored-object.h index b6755be..1c9a132 100644 --- a/src/cpp/stored-object.h +++ b/src/cpp/stored-object.h @@ -1,7 +1,5 @@ #pragma once -#include "utils.h" - #include "garbage-collector.h" #include