⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cls_student.cpp

📁 易语言IDE源代码
💻 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 + -