📄 tdc_base.h
字号:
#define M_TDC_INTERFACE_MUNION_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_MENUM_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)
//-----
#define M_TDC_INTERFACE_INT_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_XXX_PRIMITIVE_UNION_ADDITIONAL(SAP,PREFIXED_SAP)
#define M_TDC_INTERFACE_XXX_MESSAGE_UNION_ADDITIONAL(MSG,PREFIXED_MSG)
#define M_TDC_CREATE_DEFAULT_PRIMITIVE_INTERFACE_CLASS(SAP)
#define M_TDC_INTERFACE_PRIMITIVE_ADDITIONAL()
#define M_TDC_CREATE_DEFAULT_MESSAGE_INTERFACE_CLASS(MSG)
#define M_TDC_INTERFACE_MESSAGE_ADDITIONAL()
//----------------------------------------------------------------------------
// macros to repeat stuff that is similar in many instance classes
//----------------------------------------------------------------------------
#define M_TDC_INSTANCE_PRIM_ADDITIONAL(SAP,SHORT_NAME)
#define M_TDC_INSTANCE_PSTRUCT_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INSTANCE_PUNION_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INSTANCE_SDU_ADDITIONAL(SHORT_NAME)
#define M_TDC_INSTANCE_PENUM_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)
//-----
#define M_TDC_INSTANCE_MSG_ADDITIONAL(MSG,SHORT_NAME)
#define M_TDC_INSTANCE_MSTRUCT_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INSTANCE_MUNION_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INSTANCE_MENUM_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)
//-----
#define M_TDC_INSTANCE_INT_ADDITIONAL(SHORT_NAME)
#define M_TDC_INSTANCE_XXX_PRIMITIVE_ADDITIONAL(SAP)
#define M_TDC_INSTANCE_XXX_MESSAGE_ADDITIONAL(MSG)
#define M_TDC_INSTANCE_PRIMITIVE_ADDITIONAL()
#define M_TDC_INSTANCE_MESSAGE_ADDITIONAL()
#else
#endif
//tdc_test_header_end
#if DOT_COMPLETE_DEFINES
#else //DOT_COMPLETE_DEFINES
#ifndef TDC_KEEP_CCC
#define CCC(COMMENT)
#endif //TDC_KEEP_CCC
//----------------------------------------------------------------------------
// macros to generate dummy functions body
//----------------------------------------------------------------------------
#define M_TDC_TYPE_NAME\
return T_TDC_TYPE_NAME();
//#define T_TDC_TYPE_NAME M_TDC_HIDE(T_TDC_TYPE_NAME)
//----------------------------------------------------------------------------
// macros to hide templates from dot-completion
//----------------------------------------------------------------------------
typedef char T_TDC_LEVEL;
extern T_TDC_LEVEL tdc_level;
//----------------------------------------------------------------------------
// macros to repeat stuff that is similar in many descriptor classes
//----------------------------------------------------------------------------
#ifndef TDC_DESCRIPTOR
#define M_TDC_FORWARD_BASE(SHORT_NAME,T_HANDLE)\
struct T_TDC_INTERFACE_##SHORT_NAME;\
T_TDC_INTERFACE_BASE* new_T_TDC_INTERFACE_##SHORT_NAME();\
struct T_HANDLE;\
T_TDC_HANDLE_BASE* new_##T_HANDLE();\
#define M_TDC_FORWARD_COMP(SHORT_NAME,TDC_IS)\
M_TDC_FORWARD_BASE(SHORT_NAME, T_TDC_HANDLE_##SHORT_NAME)\
#define M_TDC_FORWARD_VAR(SHORT_NAME)\
M_TDC_FORWARD_BASE(SHORT_NAME, T_TDC_DESCRIPTOR_##SHORT_NAME)\
#define M_TDC_POST_BASE(SHORT_NAME,T_HANDLE)\
M_TDC_INTERFACE_ADDITIONAL_BASE (M_TDC_NOT_IN_CLASS, M_TDC_WITH_BODY, T_TDC_INTERFACE_##SHORT_NAME, T_##SHORT_NAME, T_HANDLE)\
M_TDC_INSTANCE_ADDITIONAL_BASE (M_TDC_NOT_IN_CLASS, M_TDC_WITH_BODY, T_TDC_INTERFACE_##SHORT_NAME, T_##SHORT_NAME, T_HANDLE)\
#define M_TDC_POST_XXX(SHORT_NAME,TDC_IS)\
M_TDC_POST_BASE(SHORT_NAME, T_TDC_HANDLE_##SHORT_NAME)\
#define M_TDC_POST_COMP(SHORT_NAME,TDC_IS)\
M_TDC_POST_BASE(SHORT_NAME, T_TDC_HANDLE_##SHORT_NAME)\
#define M_TDC_POST_VAR(SHORT_NAME)\
M_TDC_POST_BASE(SHORT_NAME, T_TDC_DESCRIPTOR_##SHORT_NAME)\
#else //TDC_DESCRIPTOR
#define M_TDC_FORWARD_BASE(SHORT_NAME,T_HANDLE)\
#define M_TDC_FORWARD_COMP(SHORT_NAME,TDC_IS)\
M_TDC_FORWARD_BASE(SHORT_NAME,T_TDC_DESCRIPTOR_##SHORT_NAME)\
M_TDC_HANDLE(M_TDC_IN_CLASS,M_TDC_WITHOUT_BODY,SHORT_NAME,TDC_IS)\
#define M_TDC_FORWARD_VAR(SHORT_NAME)\
M_TDC_FORWARD_BASE(SHORT_NAME,T_TDC_HANDLE_##SHORT_NAME)\
struct T_TDC_DESCRIPTOR_##SHORT_NAME;\
/*TODO:eliminate*/struct T_##SHORT_NAME;\
/*TODO:eliminate*/struct T_TDC_INTERFACE_##SHORT_NAME;\
typedef T_TDC_DESCRIPTOR_##SHORT_NAME T_TDC_HANDLE_##SHORT_NAME;\
T_TDC_HANDLE_BASE* new_T_TDC_DESCRIPTOR_##SHORT_NAME();\
#define M_TDC_POST_BASE(SHORT_NAME,T_HANDLE)\
T_TDC_HANDLE_BASE* new_##T_HANDLE()\
{\
return new T_HANDLE;\
}\
#define M_TDC_POST_XXX(SHORT_NAME,TDC_IS)\
M_TDC_POST_BASE(SHORT_NAME,T_TDC_HANDLE_##SHORT_NAME)\
T_TDC_DESCRIPTOR_BASE* T_TDC_HANDLE_##SHORT_NAME::implement_new_descriptor () const\
{\
return new T_TDC_DESCRIPTOR_##SHORT_NAME;\
}\
#define M_TDC_POST_COMP(SHORT_NAME, TDC_IS)\
M_TDC_POST_BASE(SHORT_NAME,T_TDC_HANDLE_##SHORT_NAME)\
T_TDC_DESCRIPTOR_BASE* T_TDC_HANDLE_##SHORT_NAME::implement_new_descriptor () const\
{\
return new T_TDC_DESCRIPTOR_##SHORT_NAME;\
}\
M_TDC_HANDLE_ADDITIONAL(M_TDC_NOT_IN_CLASS,M_TDC_WITH_BODY,T_TDC_HANDLE_##SHORT_NAME,SHORT_NAME,TDC_IS)\
#define M_TDC_POST_VAR(SHORT_NAME)\
M_TDC_POST_BASE(SHORT_NAME,T_TDC_DESCRIPTOR_##SHORT_NAME)\
#endif //TDC_DESCRIPTOR
#define M_TDC_HANDLE_ADDITIONAL(IN_CLASS,WITH_BODY,T_HANDLE_,SHORT_NAME,TDC_IS)\
IN_CLASS(virtual) char* T_HANDLE_::get_name () const\
WITH_BODY({\
return #SHORT_NAME;\
})\
IN_CLASS(virtual) long T_HANDLE_::get_sizeof ()\
WITH_BODY({\
return sizeof *this;\
})\
IN_CLASS(virtual) T_TDC_IS_ENUM T_HANDLE_::is ()\
WITH_BODY({\
return T_TDC_IS_ENUM (TDC_IS_COMP | TDC_IS);\
})\
IN_CLASS(static) T_TDC_HANDLE_BASE* T_HANDLE_::implement_new_handle ()\
WITH_BODY({\
/*return new_T_TDC_HANDLE_##SHORT_NAME();*/\
return new T_HANDLE_();\
})\
#define M_TDC_HANDLE(IN_CLASS,WITH_BODY,SHORT_NAME,TDC_IS)\
struct T_TDC_DESCRIPTOR_##SHORT_NAME;\
struct T_TDC_HANDLE_##SHORT_NAME:T_TDC_HANDLE_BASE\
{\
typedef T_TDC_DESCRIPTOR_##SHORT_NAME T_DESCRIPTOR;\
M_TDC_HANDLE_ADDITIONAL(IN_CLASS,WITH_BODY,T_TDC_HANDLE_##SHORT_NAME,SHORT_NAME,TDC_IS)\
M_TDC_DESCRIPTOR_HANDLE_ADDITIONAL_PART (T_TDC_DESCRIPTOR_##SHORT_NAME)\
};\
//------
#define M_TDC_FORWARD_PRIM(SHORT_NAME)\
M_TDC_FORWARD_COMP (SHORT_NAME,TDC_IS_PRIM)
#define M_TDC_FORWARD_PSTRUCT(SHORT_NAME)\
M_TDC_FORWARD_COMP (SHORT_NAME,TDC_IS_STRUCT)
#define M_TDC_FORWARD_PUNION(SHORT_NAME)\
M_TDC_FORWARD_COMP (SHORT_NAME,TDC_IS_UNION)
#define M_TDC_FORWARD_SDU(SHORT_NAME)\
M_TDC_FORWARD_COMP (SHORT_NAME,TDC_IS_SDU)
#define M_TDC_FORWARD_TYPEDEF_SDU(BUF)\
typedef T_TDC_HANDLE_SDU T_TDC_HANDLE_##BUF;\
typedef T_TDC_DESCRIPTOR_SDU T_TDC_DESCRIPTOR_##BUF;\
#define M_FORWARD_TYPEDEF_SDU(BUF)/*TODO: eliminate this macro*/\
M_TDC_FORWARD_TYPEDEF_SDU(BUF)\
#define M_TDC_FORWARD_TYPEDEF(BASE,SHORT_NAME)\
typedef T_TDC_HANDLE_##BASE T_TDC_HANDLE_##SHORT_NAME;\
typedef T_TDC_DESCRIPTOR_##BASE T_TDC_DESCRIPTOR_##SHORT_NAME;\
#define M_TDC_FORWARD_PENUM(SHORT_NAME)\
M_TDC_FORWARD_VAR (SHORT_NAME)
//------
#define M_TDC_FORWARD_MSG(SHORT_NAME)\
M_TDC_FORWARD_COMP (SHORT_NAME,TDC_IS_MSG)
#define M_TDC_FORWARD_MSTRUCT(SHORT_NAME)\
M_TDC_FORWARD_COMP (SHORT_NAME,TDC_IS_STRUCT)
#define M_TDC_FORWARD_MUNION(SHORT_NAME)\
M_TDC_FORWARD_COMP (SHORT_NAME,TDC_IS_UNION)
#define M_TDC_FORWARD_MENUM(SHORT_NAME)\
M_TDC_FORWARD_VAR (SHORT_NAME)
//------
#define M_TDC_FORWARD_INT(SHORT_NAME)\
M_TDC_FORWARD_BASE(SHORT_NAME, T_TDC_DESCRIPTOR_##SHORT_NAME)\
struct T_TDC_DESCRIPTOR_##SHORT_NAME;\
typedef T_TDC_DESCRIPTOR_##SHORT_NAME T_TDC_HANDLE_##SHORT_NAME;\
typedef T_TDC_INT_##SHORT_NAME SHORT_NAME;\
T_TDC_HANDLE_BASE* new_T_TDC_DESCRIPTOR_##SHORT_NAME();\
#define M_TDC_FORWARD_XXX_PRIMITIVE_UNION(SAP)\
/*M_TDC_FORWARD_COMP (SAP)*/\
M_TDC_FORWARD_BASE (SAP, T_TDC_HANDLE_##SAP)\
#define M_TDC_FORWARD_XXX_MESSAGE_UNION(MSG)\
/*M_TDC_FORWARD_COMP (MSG)*/\
M_TDC_FORWARD_BASE (MSG,T_TDC_HANDLE_##MSG)\
//----------------------------------------------------------------------------
// macros to repeat stuff that is similar in many descriptor classes
//----------------------------------------------------------------------------
#define M_TDC_POST_PRIM(SHORT_NAME)\
M_TDC_POST_COMP (SHORT_NAME, TDC_IS_PRIM)
#define M_TDC_POST_PSTRUCT(SHORT_NAME)\
M_TDC_POST_COMP (SHORT_NAME, TDC_IS_STRUCT)
#define M_TDC_POST_PUNION(SHORT_NAME)\
M_TDC_POST_COMP (SHORT_NAME, TDC_IS_UNION)
#define M_TDC_POST_SDU(SHORT_NAME)
#define M_TDC_POST_PENUM(SHORT_NAME)\
M_TDC_POST_VAR (SHORT_NAME)
#define M_TDC_POST_MSG(SHORT_NAME)\
M_TDC_POST_COMP (SHORT_NAME, TDC_IS_MSG)
#define M_TDC_POST_MSTRUCT(SHORT_NAME)\
M_TDC_POST_COMP (SHORT_NAME, TDC_IS_STRUCT)
#define M_TDC_POST_MUNION(SHORT_NAME)\
M_TDC_POST_COMP (SHORT_NAME, TDC_IS_UNION)
#define M_TDC_POST_MENUM(SHORT_NAME)\
M_TDC_POST_VAR (SHORT_NAME)
#define M_TDC_POST_INT(SHORT_NAME)
#define M_TDC_POST_XXX_PRIMITIVE_UNION(SAP)\
M_TDC_POST_XXX(SAP,TDC_IS_XXX_PRIMITIE_UNION)
#define M_TDC_POST_XXX_MESSAGE_UNION(MSG)\
M_TDC_POST_XXX(MSG,TDC_IS_XXX_MESSAGE_UNION)
#define M_TDC_POST_PRIMITIVE()
#define M_TDC_POST_MESSAGE()
//============================================================================
#if TDC_DEBUG_DOT_COMPLETE
void F_TDC_DEBUG_DOT_COMPLETE__TDC_H_1F()
{
T_TDC_DEBUG_DOT_COMPLETE__TDC_H_1 s;
s.
i;
}
#else
#endif
//----------------------------------------------------------------------------
// macros to repeat stuff that is similar in many descriptor classes
//----------------------------------------------------------------------------
#define M_TDC_DESCRIPTOR_HANDLE_ADDITIONAL_PART(T_DESCRIPTOR)\
T_TDC_ACTION_ENUM action;\
T_DESCRIPTOR* descriptor;\
/*friend T_TDC_DESCRIPTOR_BASE* new_##T_DESCRIPTOR ();*/\
virtual T_TDC_DESCRIPTOR_BASE* implement_new_descriptor () const;\
/*{\
return new_##T_DESCRIPTOR ();\
}*/\
/*virtual void implement_set_descriptor (T_TDC_DESCRIPTOR_BASE* descriptor_)\
{\
IF_TDC_DEBUG (assert (descriptor_ == (T_TDC_DESCRIPTOR_BASE*)-1 || dynamic_cast<T_DESCRIPTOR*>(descriptor_));)\
descriptor = (T_DESCRIPTOR*) descriptor_;\
}*/\
/*T_HANDLE ():\
descriptor (0),\
action (TDC_ACTION_DEFAULT)\
{\
}*/\
/*~T_HANDLE ()\
{\
if (action & TDC_ACTION_HAS_REF)\
{\
assert (!descriptor);\
/ *delete descriptor;\
descriptor = 0;* /\
}\
}*/\
#define M_TDC_DESCRIPTOR_ADDITIONAL_BASE(SHORT_NAME)\
public:\
virtual long get_sizeof ()\
{\
return sizeof *this;\
}\
#define M_TDC_DESCRIPTOR_ADDITIONAL_MAIN_BASE(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_BASE(SHORT_NAME)\
public:\
int ctrl;\
virtual int read_ctrl () const\
{\
return ctrl;\
}\
T_TDC_HANDLE_BASE* get_element (unsigned index)\
{\
return implement_get_union_element (index, ctrl);\
}\
virtual char* get_name () const\
{\
return #SHORT_NAME;\
}\
T_TDC_DESCRIPTOR_##SHORT_NAME ():\
ctrl (0)\
{\
}\
/*friend T_TDC_DESCRIPTOR_BASE* new_T_TDC_DESCRIPTOR_##SHORT_NAME ()\
{\
return new T_TDC_DESCRIPTOR_##SHORT_NAME;\
}*/\
#define M_TDC_DESCRIPTOR_ADDITIONAL_STRUCT_BASE(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_BASE(SHORT_NAME)\
public:\
typedef T_TDC_HANDLE_##SHORT_NAME T_HANDLE;\
virtual char* get_name () const\
{\
extern char* TDC_NAME_##SHORT_NAME;\
return TDC_NAME_##SHORT_NAME;\
}\
friend T_TDC_DESCRIPTOR_BASE* new_T_TDC_DESCRIPTOR_##SHORT_NAME ()\
{\
return new T_TDC_DESCRIPTOR_##SHORT_NAME;\
}\
T_TDC_DESCRIPTOR_##SHORT_NAME ()\
{\
}\
#define M_TDC_DESCRIPTOR_ADDITIONAL_UNION_BASE(SHORT_NAME,TABLE_KIND)\
M_TDC_DESCRIPTOR_ADDITIONAL_BASE(SHORT_NAME)\
public:\
typedef T_TDC_HANDLE_##SHORT_NAME T_HANDLE;\
int ctrl;\
virtual int read_ctrl () const\
{\
return ctrl;\
}\
T_TDC_HANDLE_BASE* get_element (unsigned index)\
{\
return implement_get_union_element (index, ctrl);\
}\
virtual char* get_name () const\
{\
extern char* TDC_NAME_##SHORT_NAME;\
return TDC_NAME_##SHORT_NAME;\
}\
T_TDC_DESCRIPTOR_##SHORT_NAME ():\
ctrl (0)\
{\
}\
#define M_TDC_DESCRIPTOR_ADDITIONAL_VAR(T_DESCRIPTOR, T_VAR, SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_BASE(SHORT_NAME)\
public:\
typedef T_DESCRIPTOR T_HANDLE;\
T_TDC_ACTION_ENUM action;\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -