Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/exception.hfa

    r69c5c00 r1c01c58  
    9595// visible anywhere you use the instantiation of the exception is used.
    9696#define POLY_VTABLE_DECLARATION(exception_name, ...) \
    97         VTABLE_TYPE(exception_name)(__VA_ARGS__) const & get_exception_vtable(exception_name(__VA_ARGS__) *); \
     97        void mark_exception(exception_name(__VA_ARGS__) *); \
    9898        extern VTABLE_TYPE(exception_name)(__VA_ARGS__) VTABLE_NAME(exception_name)
    9999
     
    160160
    161161#define _FORALL_CTOR0_DECLARATION(exception_name, assertions, parameters) \
    162         forall(_UNPACK assertions | \
    163                 is_exception(exception_name parameters, VTABLE_TYPE(exception_name) parameters)) \
     162        forall(_UNPACK assertions | VTABLE_ASSERTION(exception_name, parameters) ) \
    164163        void ?{}(exception_name parameters & this)
    165164
    166165#define _FORALL_CTOR0_INSTANCE(exception_name, assertions, parameters) \
    167166        _FORALL_CTOR0_DECLARATION(exception_name, assertions, parameters) { \
    168                 (this).virtual_table = &get_exception_vtable(&this); \
     167                VTABLE_INIT(this, exception_name); \
    169168        }
    170169
     
    186185#define _VTABLE_DECLARATION(exception_name, parent_name, ...) \
    187186        struct exception_name; \
     187        void mark_exception(exception_name *); \
    188188        VTABLE_TYPE(exception_name); \
    189         VTABLE_TYPE(exception_name) const & get_exception_vtable(exception_name *); \
    190189        extern VTABLE_TYPE(exception_name) VTABLE_NAME(exception_name); \
    191190        VTABLE_TYPE(exception_name) { \
     
    198197
    199198#define _VTABLE_INSTANCE(exception_name, parent_name, ...) \
    200         VTABLE_TYPE(exception_name) const & get_exception_vtable(exception_name *) { \
    201                 return VTABLE_NAME(exception_name); \
    202         } \
     199        void mark_exception(exception_name *) {} \
    203200        void _GLUE2(exception_name,_copy)(exception_name * this, exception_name * other) { \
    204201                *this = *other; \
     
    221218
    222219#define _POLY_VTABLE_INSTANCE(exception_name, parent_name, ...) \
    223         extern VTABLE_TYPE(exception_name)(__VA_ARGS__) VTABLE_NAME(exception_name); \
    224         VTABLE_TYPE(exception_name)(__VA_ARGS__) const & get_exception_vtable( \
    225                         exception_name(__VA_ARGS__) *) { \
    226                 return VTABLE_NAME(exception_name); \
    227         } \
     220        void mark_exception(exception_name(__VA_ARGS__) *) {} \
    228221        void _GLUE2(exception_name,_copy)( \
    229222                        exception_name(__VA_ARGS__) * this, exception_name(__VA_ARGS__) * other) { \
Note: See TracChangeset for help on using the changeset viewer.