📄 tdc_base.h
字号:
union \
{\
T_VAR value;\
T_TDC_BASIC_TYPES value_as_basic_types;\
};\
virtual char* get_name () const\
{\
extern char* TDC_NAME_##SHORT_NAME;\
return TDC_NAME_##SHORT_NAME;\
}\
virtual int get_tap_handle ()\
{\
/*TODO: move this function to var base class\
return implement_get_value ();*/\
assert (action & TDC_ACTION_HAS_VALUE);\
return value;\
}\
T_DESCRIPTOR ():\
/*value (0),*/\
action (TDC_ACTION_DEFAULT)\
{\
}\
virtual unsigned get_sizeof_target ()\
{\
return sizeof T_VAR;\
}\
static T_TDC_HANDLE_BASE* implement_new_handle ()\
{\
return new_##T_DESCRIPTOR();\
}\
//-----
#define M_TDC_DESCRIPTOR_INT_ADDITIONAL(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_VAR (T_TDC_DESCRIPTOR_##SHORT_NAME, T_TDC_INT_##SHORT_NAME,SHORT_NAME)\
virtual T_TDC_IS_ENUM is ()\
{\
return TDC_IS_VAR;\
}\
//-----
#define M_TDC_DESCRIPTOR_PRIM_ADDITIONAL(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_STRUCT_BASE (SHORT_NAME)\
virtual int get_id () const\
{\
return SHORT_NAME;\
}\
#define M_TDC_DESCRIPTOR_PSTRUCT_ADDITIONAL(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_STRUCT_BASE (SHORT_NAME)\
#define M_TDC_DESCRIPTOR_PUNION_ADDITIONAL(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_UNION_BASE (SHORT_NAME,TDC_TABLE_KIND_PRIM)\
#define M_TDC_DESCRIPTOR_SDU_ADDITIONAL(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_UNION_BASE (SHORT_NAME,TDC_TABLE_KIND_PRIM)\
#define M_TDC_DESCRIPTOR_PENUM_ADDITIONAL(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_VAR (T_TDC_DESCRIPTOR_##SHORT_NAME, T_TDC_ENUM_##SHORT_NAME,SHORT_NAME)\
friend T_TDC_HANDLE_BASE* new_T_TDC_DESCRIPTOR_##SHORT_NAME ();\
/*{\
return new T_TDC_DESCRIPTOR_##SHORT_NAME;\
}*/\
//-----
#define M_TDC_DESCRIPTOR_MSG_ADDITIONAL(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_STRUCT_BASE (SHORT_NAME)\
virtual int get_id () const\
{\
return SHORT_NAME;\
}\
#define M_TDC_DESCRIPTOR_MSTRUCT_ADDITIONAL(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_STRUCT_BASE (SHORT_NAME)\
#define M_TDC_DESCRIPTOR_MUNION_ADDITIONAL(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_UNION_BASE (SHORT_NAME,TDC_TABLE_KIND_MSG)\
#define M_TDC_DESCRIPTOR_MENUM_ADDITIONAL(SHORT_NAME)\
M_TDC_DESCRIPTOR_ADDITIONAL_VAR (T_TDC_DESCRIPTOR_##SHORT_NAME, T_TDC_ENUM_##SHORT_NAME,SHORT_NAME)\
friend T_TDC_HANDLE_BASE* new_T_TDC_DESCRIPTOR_##SHORT_NAME ();\
/*{\
return new T_TDC_DESCRIPTOR_##SHORT_NAME;\
}*/\
//-----
#define M_TDC_DESCRIPTOR_XXX_PRIMITIVE_UNION_ADDITIONAL(SAP)\
M_TDC_DESCRIPTOR_ADDITIONAL_MAIN_BASE (SAP)\
#define M_TDC_DESCRIPTOR_XXX_MESSAGE_UNION_ADDITIONAL(MSG)\
M_TDC_DESCRIPTOR_ADDITIONAL_MAIN_BASE (MSG)\
virtual int get_id () const\
{\
return CCDENT_##MSG;\
}\
#define M_TDC_CREATE_DEFAULT_DESCRIPTOR_CLASS(SHORT_NAME, TDC_IS)\
M_TDC_HANDLE(M_TDC_IN_CLASS,M_TDC_WITH_BODY,SHORT_NAME,TDC_IS)\
T_TDC_HANDLE_BASE* new_T_TDC_HANDLE_##SHORT_NAME();\
#define M_TDC_CREATE_DEFAULT_PRIMITIVE_DESCRIPTOR_CLASS(SAP)\
M_TDC_CREATE_DEFAULT_DESCRIPTOR_CLASS(SAP##_PRIMITIVE_UNION,TDC_IS_XXX_PRIMITIVE_UNION)\
#define M_TDC_CREATE_DEFAULT__T_TDC_HANDLE_XXX_PRIMITIVE_UNION(SAP,CCDSAP)\
/*enum { CCDSAP_##SAP = CCDSAP };*/\
M_TDC_CREATE_DEFAULT_PRIMITIVE_DESCRIPTOR_CLASS(SAP)
#define M_TDC_DESCRIPTOR_PRIMITIVE_ADDITIONAL()\
M_TDC_DESCRIPTOR_ADDITIONAL_MAIN_BASE (PRIMITIVE_UNION)\
#define M_TDC_CREATE_DEFAULT_MESSAGE_DESCRIPTOR_CLASS(MSG)\
M_TDC_CREATE_DEFAULT_DESCRIPTOR_CLASS(MSG##_MESSAGE_UNION,TDC_IS_XXX_MESSAGE_UNION)\
enum { CCDENT_##MSG##_MESSAGE_UNION = CCDENT_##MSG };\
#define M_TDC_CREATE_DEFAULT__T_TDC_HANDLE_XXX_MESSAGE_UNION(MSG,CCDENT)\
/*enum { CCDENT_##MSG = CCDENT };*/\
M_TDC_CREATE_DEFAULT_MESSAGE_DESCRIPTOR_CLASS(MSG)
#define M_TDC_DESCRIPTOR_MESSAGE_ADDITIONAL()\
M_TDC_DESCRIPTOR_ADDITIONAL_MAIN_BASE (MESSAGE_UNION)\
//============================================================================
#if TDC_DEBUG_DOT_COMPLETE
void F_TDC_DEBUG_DOT_COMPLETE__TDC_H_1H()
{
T_TDC_DEBUG_DOT_COMPLETE__TDC_H_1 s;
s.
i;
}
#else
#endif
//----------------------------------------------------------------------------
// macros to repeat stuff that is similar in many inteface classes
//----------------------------------------------------------------------------
#define M_TDC_ADDITIONAL_CALL_FUNCTION_BASE(IN_CLASS, WITH_BODY, T_SCOPE,T_RETURN,T_ARG)\
/*T_RETURN operator = (T_ARG (*f) ())*/\
void T_SCOPE::operator = (T_ARG (*f) ())\
WITH_BODY({\
T_ARG value_ = f ();\
set_value (value_);\
/*return *this;*/\
})\
/*T_RETURN operator = (void (*f) (T_ARG))*/\
void T_SCOPE::operator = (void (*f) (T_ARG))\
WITH_BODY({\
T_ARG value_;\
f (value_);\
set_value (value_);\
})\
#define M_TDC_INTERFACE_ADDITIONAL_BASE(IN_CLASS, WITH_BODY, T_INTERFACE, T_INSTANCE_, T_HANDLE)\
IN_CLASS(typedef T_INSTANCE_ T_INSTANCE;)\
IN_CLASS(friend struct T_INSTANCE_;)\
IN_CLASS(private:)\
void T_INTERFACE::set_value (const T_INSTANCE_& value_)\
WITH_BODY({\
copy_instance ((const T_TDC_INSTANCE_BASE*)&value_);\
})\
IN_CLASS(explicit) T_INTERFACE::T_INTERFACE (const T_INTERFACE& value_)\
WITH_BODY({\
copy_interface (&value_);\
})\
IN_CLASS(public:)\
/*T_TDC_ACTION operator = (const T_TDC_ACTION& action_)*/\
void T_INTERFACE::operator = (const T_TDC_ACTION& action_)\
WITH_BODY({\
set_action (action_);\
})\
void T_INTERFACE::operator = (const T_INTERFACE& value_)\
WITH_BODY({\
copy_interface (&value_);\
})\
T_INSTANCE_ T_INTERFACE::operator = (const T_INSTANCE_& value_)\
WITH_BODY({\
copy_instance (&value_);\
return value_;\
})\
IN_CLASS(static) T_TDC_HANDLE_BASE* T_INTERFACE::implement_new_handle ()\
WITH_BODY({\
return new_##T_HANDLE();\
})\
IN_CLASS(friend) T_TDC_INTERFACE_BASE* new_##T_INTERFACE()\
WITH_BODY({\
return new T_INTERFACE;\
})\
M_TDC_ADDITIONAL_CALL_FUNCTION_BASE(IN_CLASS, WITH_BODY, T_INTERFACE,T_INSTANCE,T_INSTANCE)\
#define M_TDC_INTERFACE_ADDITIONAL_MAIN(IN_CLASS, WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME, BASE)\
public:\
void operator = (const T_TDC_INTERFACE_##BASE##_BASE& value_)\
{\
set_main_value (&value_);\
}\
void operator = (const T_TDC_INSTANCE_##BASE##_BASE& value_)\
{\
set_main_value (&value_);\
}\
T_TDC_INTERFACE_##PREFIXED_SHORT_NAME ()\
{\
tdc_level--;\
}\
M_TDC_INTERFACE_ADDITIONAL_BASE (IN_CLASS, WITH_BODY, T_TDC_INTERFACE_##PREFIXED_SHORT_NAME, T_##SHORT_NAME, T_TDC_HANDLE_##PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_ADDITIONAL_COMP(IN_CLASS, WITH_BODY, SHORT_NAME, PREFIXED_SHORT_NAME)\
public:\
T_TDC_INTERFACE_##PREFIXED_SHORT_NAME ()\
{\
tdc_level--;\
}\
M_TDC_INTERFACE_ADDITIONAL_BASE (IN_CLASS, WITH_BODY, T_TDC_INTERFACE_##PREFIXED_SHORT_NAME, T_##SHORT_NAME, T_TDC_HANDLE_##PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_ADDITIONAL_VAR(IN_CLASS, WITH_BODY, SHORT_NAME, PREFIXED_SHORT_NAME)\
public:\
T_TDC_INTERFACE_##PREFIXED_SHORT_NAME ()\
{\
}\
M_TDC_INTERFACE_ADDITIONAL_BASE (IN_CLASS, WITH_BODY, T_TDC_INTERFACE_##PREFIXED_SHORT_NAME, T_##SHORT_NAME, T_TDC_HANDLE_##PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_INT_ADDITIONAL(SHORT_NAME)\
public:\
void operator = (int value_)\
{\
set_descriptor_value (value_);\
}\
M_TDC_INTERFACE_ADDITIONAL_VAR (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME, SHORT_NAME)\
#define M_TDC_INTERFACE_ADDITIONAL_ENUM(IN_CLASS, WITH_BODY, SHORT_NAME, PREFIXED_SHORT_NAME)\
public:\
void set_value (T_TDC_ENUM_##PREFIXED_SHORT_NAME value_)\
{\
set_descriptor_value (value_);\
}\
void operator = (int value_)\
{\
/*TBD;CSH CSH*/\
set_descriptor_value (value_);\
}\
M_TDC_INTERFACE_ADDITIONAL_VAR (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME, PREFIXED_SHORT_NAME)\
#define M_TDC_INTERFACE_ADDITIONAL_MAIN_CALL(IN_CLASS, WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME,T_ARG)\
T_##SHORT_NAME operator = (const T_ARG& value_)\
{\
set_value (value_);\
return value_;\
}\
/*M_TDC_ADDITIONAL_CALL_FUNCTION_BASE (T_##SHORT_NAME, T_ARG)*/\
//-----
#define M_TDC_INTERFACE_PRIM_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_MAIN (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME,PREFIXED_SHORT_NAME, PRIMITIVE)\
M_TDC_INTERFACE_ADDITIONAL_MAIN_CALL (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME,PREFIXED_SHORT_NAME, T_PRIMITIVE_UNION)\
#define M_TDC_INTERFACE_PSTRUCT_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_COMP (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_PUNION_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_COMP (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_PENUM_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_ENUM (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
//-----
#define M_TDC_INTERFACE_MSG_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_MAIN (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME,PREFIXED_SHORT_NAME, MESSAGE)\
M_TDC_INTERFACE_ADDITIONAL_MAIN_CALL (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME,PREFIXED_SHORT_NAME, T_MESSAGE_UNION)\
#define M_TDC_INTERFACE_MSTRUCT_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_COMP (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_MUNION_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_COMP (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_MENUM_ADDITIONAL(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_ENUM (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
//-----
#define M_TDC_INTERFACE_PRIM_ADDITIONAL_INLINE(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_MAIN (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME, PRIMITIVE)\
M_TDC_INTERFACE_ADDITIONAL_MAIN_CALL (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME, T_PRIMITIVE_UNION)\
#define M_TDC_INTERFACE_PSTRUCT_ADDITIONAL_INLINE(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_COMP (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_PUNION_ADDITIONAL_INLINE(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_COMP (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_SDU_ADDITIONAL_INLINE(SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_COMP (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,SHORT_NAME)
#define M_TDC_INTERFACE_PENUM_ADDITIONAL_INLINE(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_ENUM (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
//-----
#define M_TDC_INTERFACE_MSG_ADDITIONAL_INLINE(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_MAIN (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME, MESSAGE)\
M_TDC_INTERFACE_ADDITIONAL_MAIN_CALL (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME, T_MESSAGE_UNION)\
#define M_TDC_INTERFACE_MSTRUCT_ADDITIONAL_INLINE(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_COMP (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_MUNION_ADDITIONAL_INLINE(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_COMP (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
#define M_TDC_INTERFACE_MENUM_ADDITIONAL_INLINE(SHORT_NAME,PREFIXED_SHORT_NAME)\
M_TDC_INTERFACE_ADDITIONAL_ENUM (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SHORT_NAME,PREFIXED_SHORT_NAME)
//-----
#define M_TDC_INTERFACE_XXX_PRIMITIVE_UNION_ADDITIONAL(SAP,PREFIXED_SAP)\
M_TDC_INTERFACE_ADDITIONAL_MAIN (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SAP,PREFIXED_SAP, PRIMITIVE)\
M_TDC_INTERFACE_ADDITIONAL_MAIN_CALL (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, SAP,PREFIXED_SAP, T_PRIMITIVE_UNION)\
private:\
T_TDC_INTERFACE_##SAP (const T_TDC_INTERFACE_PRIMITIVE_BASE& primitive)\
{\
TBD;\
}\
public:\
#define M_TDC_INTERFACE_XXX_PRIMITIVE_UNION_ADDITIONAL_INLINE(SAP,PREFIXED_SAP)\
M_TDC_INTERFACE_ADDITIONAL_MAIN (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SAP,PREFIXED_SAP, PRIMITIVE)\
M_TDC_INTERFACE_ADDITIONAL_MAIN_CALL (M_TDC_IN_CLASS, M_TDC_WITH_BODY, SAP,PREFIXED_SAP, T_PRIMITIVE_UNION)\
private:\
T_TDC_INTERFACE_##SAP (const T_TDC_INTERFACE_PRIMITIVE_BASE& primitive)\
{\
TBD;\
}\
public:\
#define M_TDC_INTERFACE_XXX_MESSAGE_UNION_ADDITIONAL(MSG,PREFIXED_MSG)\
M_TDC_INTERFACE_ADDITIONAL_MAIN (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, MSG, PREFIXED_MSG, MESSAGE)\
M_TDC_INTERFACE_ADDITIONAL_MAIN_CALL (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, MSG, PREFIXED_MSG, T_MESSAGE_UNION)\
private:\
T_TDC_INTERFACE_##MSG (const T_TDC_INTERFACE_MESSAGE_BASE& message)\
{\
TBD;\
}\
public:\
#define M_TDC_INTERFACE_XXX_MESSAGE_UNION_ADDITIONAL_INLINE(MSG,PREFIXED_MSG)\
M_TDC_INTERFACE_ADDITIONAL_MAIN (M_TDC_IN_CLASS, M_TDC_WITH_BODY, MSG, PREFIXED_MSG, MESSAGE)\
M_TDC_INTERFACE_ADDITIONAL_MAIN_CALL (M_TDC_IN_CLASS, M_TDC_WITH_BODY, MSG, PREFIXED_MSG, T_MESSAGE_UNION)\
private:\
T_TDC_INTERFACE_##MSG (const T_TDC_INTERFACE_MESSAGE_BASE& message)\
{\
TBD;\
}\
public:\
#define M_TDC_CREATE_DEFAULT_INTERFACE_CLASS(SHORT_NAME)\
struct T_TDC_INTERFACE_##SHORT_NAME;\
struct T_TDC_HANDLE_##SHORT_NAME;\
#define M_TDC_CREATE_DEFAULT_PRIMITIVE_INTERFACE_CLASS(SAP)\
M_TDC_CREATE_DEFAULT_INTERFACE_CLASS(SAP##_PRIMITIVE_UNION)\
#define M_TDC_CREATE_DEFAULT__T_TDC_INTERFACE_XXX_PRIMITIVE_UNION(SAP,CCDSAP)\
enum { CCDSAP_##SAP = CCDSAP };\
M_TDC_CREATE_DEFAULT_PRIMITIVE_INTERFACE_CLASS(SAP)
#define M_TDC_INTERFACE_PRIMITIVE_ADDITIONAL()\
M_TDC_INTERFACE_ADDITIONAL_MAIN (M_TDC_IN_CLASS, M_TDC_WITHOUT_BODY, PRIMITIVE_UNION, PRIMITIVE_UNION, PRIMITIVE)\
private:\
T_TDC_INTERFACE_PRIMITIVE_UNION (const T_TDC_INTERFACE_PRIMITIVE_BASE& primitive)\
{\
TBD;\
}\
public:\
#define M_TDC_INTERFACE_PRIMITIVE_ELEMENT_ADDITIONAL(SAP)\
/*nothing*/
#define M_TDC_CREATE_DEFAULT_MESSAGE_INTERFACE_CLASS(MSG)\
M_TDC_CREATE_DEFAULT_INTERFACE_CLASS(MSG##_MESSAGE_UNION)\
#define M_TDC_CREATE_DEFAULT__T_TDC_INTERFACE_XXX_MESSAGE_UNION(MSG,CCDENT)\
enum { CCDENT_##MSG = CCDENT };\
M_TDC_CREATE_DEFAULT_MESSAGE_INTERFACE_CLASS(MSG)
#define M_TDC_INTERFACE_MESSAGE_ADDITIONAL()\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -