Their was two different way to implement this, either like this with
a simple function that work on Efl_Class, or by a function on
Efl.Object. I leaned on the first one, but I could easily be convinced
it should be done on Efl.Object actually.
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7441
/**
* @brief Gets the name of the passed class.
- * @param klass the class to work on.
+ * @param[in] klass The class (or object) to work on.
* @return The class' name.
*
* @see efl_class_get()
EAPI const char *efl_class_name_get(const Efl_Class *klass);
/**
+ * @brief Gets the amount of memory this class object would use.
+ * @param[in] klass The class (or object) to work on.
+ * @return The amount of memory in Bytes.
+ *
+ * @see efl_class_get()
+ */
+EAPI size_t efl_class_memory_size_get(const Efl_Class *klass);
+
+/**
* @brief Gets a debug name for this object
* @param obj_id The object (or class)
* @return A name to use in logs and for other debugging purposes
return NULL;
}
+EAPI const size_t
+efl_class_memory_size_get(const Efl_Class *eo_id)
+{
+ const _Efl_Class *klass;
+
+ if (_eo_is_a_class(eo_id))
+ {
+ EO_CLASS_POINTER_GOTO(eo_id, _klass, err_klass);
+ klass = _klass;
+ }
+ else
+ {
+ EO_OBJ_POINTER_GOTO(eo_id, obj, err_obj);
+ klass = obj->klass;
+ EO_OBJ_DONE(eo_id);
+ }
+ return klass->obj_size;
+
+err_klass:
+ _EO_POINTER_ERR(eo_id, "Class (%p) is an invalid ref.", eo_id);
+err_obj:
+ return 0;
+}
+
+
static void
_vtable_init(Eo_Vtable *vtable, size_t size)
{