diff --git a/src/bin/eolian_js/eolian/class.hh b/src/bin/eolian_js/eolian/class.hh index c9f027d532..633d6c4e72 100644 --- a/src/bin/eolian_js/eolian/class.hh +++ b/src/bin/eolian_js/eolian/class.hh @@ -44,7 +44,7 @@ inline std::string type_class_name(Eolian_Type const* tp) tpt = ::eolian_type_type_get(tp); if (tpt == EOLIAN_TYPE_CLASS) { - Eolian_Class const* klass = ::eolian_type_class_get(NULL, tp); + Eolian_Class const* klass = ::eolian_type_class_get(tp); if (klass) { Eina_Stringshare* klass_name = ::eolian_class_full_name_get(klass); diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua index 080e06bde2..5ce81a0aa3 100644 --- a/src/bindings/luajit/eolian.lua +++ b/src/bindings/luajit/eolian.lua @@ -404,7 +404,7 @@ ffi.cdef [[ const Eolian_Type *eolian_type_aliased_base_get(const Eolian_Unit *unit, const Eolian_Type *tp); const Eolian_Type *eolian_typedecl_aliased_base_get(const Eolian_Unit *unit, const Eolian_Typedecl *tp); - const Eolian_Class *eolian_type_class_get(const Eolian_Unit *unit, const Eolian_Type *tp); + const Eolian_Class *eolian_type_class_get(const Eolian_Type *tp); Eina_Bool eolian_type_is_owned(const Eolian_Type *tp); Eina_Bool eolian_type_is_const(const Eolian_Type *tp); Eina_Bool eolian_type_is_ptr(const Eolian_Type *tp); @@ -853,8 +853,8 @@ M.Type = ffi.metatype("Eolian_Type", { return v end, - class_get = function(self, unit) - local v = eolian.eolian_type_class_get(unit, self) + class_get = function(self) + local v = eolian.eolian_type_class_get(self) if v == nil then return nil end return v end, diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index 2f6336664e..8e9017b778 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -1985,13 +1985,12 @@ EAPI const Eolian_Type *eolian_type_aliased_base_get(const Eolian_Unit *unit, co /* * @brief Get the class associated with an EOLIAN_TYPE_CLASS type. * - * @param[in] unit the unit to look in * @param[in] tp the type. * @return the class or NULL. * * @ingroup Eolian */ -EAPI const Eolian_Class *eolian_type_class_get(const Eolian_Unit *unit, const Eolian_Type *tp); +EAPI const Eolian_Class *eolian_type_class_get(const Eolian_Type *tp); /* * @brief Get whether the given type is owned. diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c index d733a93ed3..4528b7c9ed 100644 --- a/src/lib/eolian/database_type_api.c +++ b/src/lib/eolian/database_type_api.c @@ -312,12 +312,12 @@ eolian_typedecl_aliased_base_get(const Eolian_Unit *unit, const Eolian_Typedecl } EAPI const Eolian_Class * -eolian_type_class_get(const Eolian_Unit *unit, const Eolian_Type *tp) +eolian_type_class_get(const Eolian_Type *tp) { EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL); if (eolian_type_type_get(tp) != EOLIAN_TYPE_CLASS) return NULL; - return eolian_class_get_by_name(unit, tp->full_name); + return tp->klass; } EAPI Eina_Bool diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c index b6e40b690a..fbbf26e03d 100644 --- a/src/lib/eolian/database_validate.c +++ b/src/lib/eolian/database_validate.c @@ -266,7 +266,7 @@ _validate_type(const Eolian_Unit *src, Eolian_Type *tp) } case EOLIAN_TYPE_CLASS: { - tp->klass = (Eolian_Class *)eolian_type_class_get(src, tp); + tp->klass = (Eolian_Class *)eolian_class_get_by_name(src, tp->full_name); if (!tp->klass) { snprintf(buf, sizeof(buf), "undefined class %s " diff --git a/src/lib/eolian_cxx/grammar/klass_def.hpp b/src/lib/eolian_cxx/grammar/klass_def.hpp index baaa61382e..e7e6018872 100644 --- a/src/lib/eolian_cxx/grammar/klass_def.hpp +++ b/src/lib/eolian_cxx/grammar/klass_def.hpp @@ -385,7 +385,7 @@ inline void type_def::set(Eolian_Type const* eolian_type, Eolian_Unit const* uni break; case EOLIAN_TYPE_CLASS: { - Eolian_Class const* klass = eolian_type_class_get(unit, eolian_type); + Eolian_Class const* klass = eolian_type_class_get(eolian_type); original_type = klass_name(klass, {qualifiers(eolian_type), {}}); } break; diff --git a/src/scripts/pyolian/eolian.py b/src/scripts/pyolian/eolian.py index c15f167433..9146f5245b 100644 --- a/src/scripts/pyolian/eolian.py +++ b/src/scripts/pyolian/eolian.py @@ -1087,11 +1087,10 @@ class Type(EolianBaseObject): # OK (4 TODO Unit*) # c_type = lib.eolian_type_aliased_base_get(self._obj) # return Type(c_type) if c_type else None - # TODO FIXME STRANGE API (need Eolian_Unit*) - # @cached_property - # def class_(self): - # c_cls = lib.eolian_type_class_get(self._obj) - # return Class(c_cls) if c_cls else None + @cached_property + def class_(self): + c_cls = lib.eolian_type_class_get(self._obj) + return Class(c_cls) if c_cls else None @cached_property def file(self): diff --git a/src/scripts/pyolian/eolian_lib.py b/src/scripts/pyolian/eolian_lib.py index 66b1556b5b..945f15d4c2 100644 --- a/src/scripts/pyolian/eolian_lib.py +++ b/src/scripts/pyolian/eolian_lib.py @@ -560,10 +560,9 @@ lib.eolian_type_next_type_get.restype = c_void_p # lib.eolian_type_aliased_base_get.argtypes = [c_void_p,] # lib.eolian_type_aliased_base_get.restype = c_void_p -# TODO FIXME STRANGE API (need Eolian_Unit*) -# EAPI const Eolian_Class *eolian_type_class_get(const Eolian_Unit *unit, const Eolian_Type *tp); -# lib.eolian_type_class_get.argtypes = [c_void_p,] -# lib.eolian_type_class_get.restype = c_void_p +# EAPI const Eolian_Class *eolian_type_class_get(const Eolian_Type *tp); +lib.eolian_type_class_get.argtypes = [c_void_p,] +lib.eolian_type_class_get.restype = c_void_p # EAPI Eina_Bool eolian_type_is_owned(const Eolian_Type *tp); lib.eolian_type_is_owned.argtypes = [c_void_p,]