• Roland Levillain's avatar
    Revamp the virtual types (aka properties) system. · 119255ef
    Roland Levillain authored
    No longer use the C++'s inheritance mechanism to ``pack'' the
    internal vtypes of a class.  Rely on a metacode algorithm to
    recursively look for vtypes in internal and external vtypes
    instead, using both the super link and a ``pseudosuper'' link to
    visit the upper classes.  The set/get classes have been replaced
    by a single class (in fact, by two classes, one for internal
    vtypes, the other for external vtypes).  The pseudosuper link is
    used to inherit (or fetch) the vtypes from a given class, without
    needing to inherit from this class.
    - metalic/mlc/properties.hh (mlc_equip_namespace_with_properties):
    Rewrite this macro.
    (set_types, set_ext_types): Rename as...
    (vtypes, ext_vtypes): ...this.
    (get_types, get_ext_type): Remove.
    - metalic/tests/properties.cc: Update the test.
    Check for new cases (external vtype, pseudo inheritance of
    (rec_get_vtype, rec_get_ext_vtype): New.
    This class holds the algorithm for the recursive retrieval of
    internal/external vtypes.
    (typeof_): Adjust.
    git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@414 4aad255d-cdde-0310-9447-f3009e2ae8c0