#define __TEST_CLASS_CLASS_IMPLEMENT__ #include "test_class.h" #include #include #include #include #ifndef ASSERT #define ASSERT(...) assert(__VA_ARGS__) #endif #undef this #define this (*ptThis) const i_test_class_t TEST_CLASS = { .Init = &test_class_init, .Depose = &test_class_depose, /* other methods */ }; /*! \brief the constructor of the class: test_class */ test_class_t *test_class_init(test_class_t *ptObj, test_class_cfg_t *ptCFG) { /* initialise "this" (i.e. ptThis) to access class members */ class_internal(ptObj, ptThis, test_class_t); ASSERT(NULL != ptObj && NULL != ptCFG); return ptObj; } /*! \brief the destructor of the class: test_class */ void test_class_depose(test_class_t *ptObj) { /* initialise "this" (i.e. ptThis) to access class members */ class_internal(ptObj, ptThis, test_class_t); } /*! \brief a method only visible for current class and derived class */ void test_class_protected_method_example1(test_class_t *ptObj) { /* initialise "this" (i.e. ptThis) to access class members */ class_internal(ptObj, ptThis, test_class_t); } /*! \brief a method only visible for current class and derived class */ void test_class_protected_method_example2(test_class_t *ptObj) { /* initialise "this" (i.e. ptThis) to access class members */ class_internal(ptObj, ptThis, test_class_t); }