typedef unsigned int FPSIZE;
/**
* === Типы объектов ===
* Простые типы:
* Целое число
* Действительное число
* Текстовая строка
* Дата-время
* RAW data of variable size
* Список целых чисел
* Список дейстительных чисел
* Список текстовых строк
* Список объектов дата-время
* Список объектов RAW data of variable size
*
* Составные типы:
* Структура, состоящая из элементов простых типов, из других структур и из списков структур
* Список структур
*/
class FPObject {
public:
FPSIZE m_Size; /**< Размер объекта, байт */
TCHAR* m_Name; /**< Название объекта */
FPObject() { m_Size = sizeof(FPObject); m_Name = 0; }
};
template
class OBJPTR {
T* m_pObject;
public:
OBJPTR() { m_pObject = new T; }
~OBJPTR() { delete m_pObject; };
T* operator -> () { return m_pObject;}
// operator T() { return *m_pObject; }
// operator T*() { return m_pObject; }
operator =(T* rVal) { delete m_pObject; m_pObject = rVal; } // TODO: coping assign with all subnodes
};
class StoryInfo : public FPObject {
public:
StoryInfo() { m_Size = sizeof(*this); }
OBJPTR m_alpha;
OBJPTR m_betha;
OBJPTR m_gamma;
};
class AttribInfo : public FPObject {
public:
AttribInfo() { m_Size = sizeof(*this); }
OBJPTR m_theta;
OBJPTR m_omega;
};
class StoryInfo2 : public StoryInfo {
public:
StoryInfo2() { m_Size = sizeof(*this); }
OBJPTR m_delta;
OBJPTR m_attrib;
};
/////////////////////////////////////////////////////////////////////////////
// CTestDlg message handlers
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
//FPObject obj;
StoryInfo2 si2;
si2.m_alpha->m_Size = 0;
AttribInfo i2;
i2.m_omega->m_Size = 15;
si2.m_attrib = i2;
return TRUE; // return TRUE unless you set the focus to a control
}