📄 cls_student.cpp
字号:
#include "cls_student.h"
#include "cpp/mycppclasses.h"
EF_BEGIN_DEFINE_FIELD_TABLE(Student)
EF_FIELD(myT("pStudent"), myT(""), EF_S_HIDDEN, EF_INT),
EF_END_DEFINE_FIELD_TABLE
struct Student_FieldsData
{
CStudent* pStudent;
};
static Student_FieldsData* _Student_GetFieldsData(EFObject* pThis)
{
return (Student_FieldsData*) EF_GET_OBJECT_FIELDS_DATA_ADDRESS(pThis, IDX_myefn_Student);
}
static void _Create_Student(EFObject* pThis)
{
Student_FieldsData* p = _Student_GetFieldsData(pThis);
p->pStudent = new CStudent(); //创建C++对象,并将其指针存储到EF数据成员中
}
static void _Delete_Student(EFObject* pThis)
{
Student_FieldsData* p = _Student_GetFieldsData(pThis);
delete p->pStudent; //删除EF数据成员中的C++对象
p->pStudent = NULL;
}
//////////////////////////////////////////////////////////////////////////
EFText Student_GetName(EFObject* pThis)
{
CStudent* pStudent = _Student_GetFieldsData(pThis)->pStudent;
const char* szName = pStudent->GetName();
EF_CString name;
name.SetText((char*)szName); //char* -> EFChar*
return EF_NEW_TEXT(name.GetText());
}
EF_BEGIN_DEFINE_ARG_TABLE(Student, SetName)
EF_ARG(myT("姓名"), myT(""), 0, EF_TEXT),
EF_END_DEFINE_ARG_TABLE
void Student_SetName(EFObject* pThis, EFText name)
{
EF_MiniMem buffer;
char* szName = EF_GetMBSStr(EF_GET_TEXT(name), buffer); //EFChar* -> char*
CStudent* pStudent = _Student_GetFieldsData(pThis)->pStudent;
pStudent->SetName(szName);
}
EFInt Student_GetAge(EFObject* pThis)
{
CStudent* pStudent = _Student_GetFieldsData(pThis)->pStudent;
return pStudent->GetAge();
}
EF_BEGIN_DEFINE_ARG_TABLE(Student, SetAge)
EF_ARG(myT("年龄"), myT(""), 0, EF_INT),
EF_END_DEFINE_ARG_TABLE
void Student_SetAge(EFObject* pThis, EFInt age)
{
CStudent* pStudent = _Student_GetFieldsData(pThis)->pStudent;
pStudent->SetAge(age);
}
EF_BEGIN_DEFINE_ARG_TABLE(Student, ConstructFromNameAndAge)
EF_ARG(myT("姓名"), myT(""), 0, EF_TEXT),
EF_ARG(myT("年龄"), myT(""), 0, EF_INT),
EF_END_DEFINE_ARG_TABLE
void Student_ConstructFromNameAndAge(EFObject* pThis, EFText name, EFInt age)
{
Student_SetName(pThis, name);
Student_SetAge(pThis, age);
}
EF_BEGIN_DEFINE_METHOD_TABLE(Student)
EF_METHOD(Student, ConstructFromNameAndAge, EF_NAME_INIT, myT(""), myT(""), EF_S_PUBLIC|EF_S_M_INIT, EF_NULL),
EF_METHOD_NOARG(Student, GetName, myT("取姓名"), myT(""), myT(""), EF_S_PUBLIC, EF_TEXT),
EF_METHOD(Student, SetName, myT("置姓名"), myT(""), myT(""), EF_S_PUBLIC, EF_NULL),
EF_METHOD_NOARG(Student, GetAge, myT("取年龄"), myT(""), myT(""), EF_S_PUBLIC, EF_INT),
EF_METHOD(Student, SetAge, myT("置年龄"), myT(""), myT(""), EF_S_PUBLIC, EF_NULL),
EF_END_DEFINE_METHOD_TABLE
EF_DEFINE_CLASS_INFO
(
1.0, // version
Student, CLS_myefn_Student, // class_en_name, class_name
myT("类的说明文本"), // help_string
CLS_sys_Object, // base_class_name
0, NULL, // interface_implement_count, interface_implement_table
EF_S_PUBLIC, -1, // state, category_index
myT(""), // properties_list
NULL, // class_init_func
_Create_Student, // object_init_func
_Delete_Student, // object_clean_func
EF_METHOD_COUNT(Student), EF_METHOD_TABLE(Student), // method_count, method_table
EF_FIELD_COUNT(Student), EF_FIELD_TABLE(Student), // element_count, element_table
0, NULL // export_event_count, export_event_table
)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -