260 lines
5.1 KiB
C++
260 lines
5.1 KiB
C++
#pragma once
|
|
#include "PDList.h"
|
|
#include "SHList.h"
|
|
#include "globalFunc.h"
|
|
|
|
//字典项
|
|
class WDictItem
|
|
{
|
|
public:
|
|
|
|
WDictItem(const TCHAR* sName = NULL, const TCHAR* sDesc = NULL);
|
|
|
|
virtual ~WDictItem();
|
|
|
|
virtual int GetType() const;
|
|
|
|
virtual void operator >> (CArchive &ar);
|
|
|
|
virtual void operator << (CArchive &ar);
|
|
|
|
virtual void CopyData(const WDictItem &src);
|
|
|
|
bool IsDict() const;
|
|
|
|
bool IsValid();
|
|
|
|
bool operator == (const WDictItem &item) const;
|
|
|
|
bool operator != (const WDictItem &item) const;
|
|
|
|
bool operator > (const WDictItem &item) const;
|
|
|
|
bool operator < (const WDictItem &item) const;
|
|
|
|
virtual void saveToJson(DIMJson::WValue &v);
|
|
virtual void loadByJson(const DIMJson::WValue &v);
|
|
|
|
public:
|
|
|
|
//名称不能为空,区分大小写!
|
|
CString m_sName;
|
|
|
|
//项描述
|
|
CString m_sDesc;
|
|
};
|
|
|
|
class WBoolItem : public WDictItem
|
|
{
|
|
public:
|
|
|
|
virtual ~WBoolItem();
|
|
|
|
virtual int GetType()const;
|
|
|
|
virtual void operator>>(CArchive& ar);
|
|
|
|
virtual void operator<<(CArchive& ar);
|
|
|
|
virtual void CopyData(const WDictItem& src);
|
|
virtual void saveToJson(DIMJson::WValue &v);
|
|
virtual void loadByJson(const DIMJson::WValue &v);
|
|
|
|
public:
|
|
|
|
BOOL m_data;
|
|
};
|
|
|
|
class WCharItem : public WDictItem
|
|
{
|
|
public:
|
|
virtual ~WCharItem();
|
|
|
|
virtual int GetType()const;
|
|
|
|
virtual void operator >> (CArchive &ar);
|
|
|
|
virtual void operator << (CArchive &ar);
|
|
|
|
virtual void CopyData(const WDictItem &src);
|
|
virtual void saveToJson(DIMJson::WValue &v);
|
|
virtual void loadByJson(const DIMJson::WValue &v);
|
|
|
|
public:
|
|
|
|
char m_data;
|
|
};
|
|
|
|
class WCStringItem : public WDictItem
|
|
{
|
|
public:
|
|
|
|
virtual ~WCStringItem();
|
|
|
|
virtual int GetType()const;
|
|
|
|
virtual void operator >> (CArchive &ar);
|
|
|
|
virtual void operator << (CArchive &ar);
|
|
|
|
virtual void CopyData(const WDictItem &src);
|
|
virtual void saveToJson(DIMJson::WValue &v);
|
|
virtual void loadByJson(const DIMJson::WValue &v);
|
|
|
|
public:
|
|
|
|
CString m_data;
|
|
};
|
|
|
|
class WDoubleItem : public WDictItem
|
|
{
|
|
public:
|
|
|
|
virtual ~WDoubleItem();
|
|
virtual int GetType()const;
|
|
|
|
virtual void operator>>(CArchive &ar);
|
|
|
|
virtual void operator<<(CArchive &ar);
|
|
|
|
virtual void CopyData(const WDictItem &src);
|
|
virtual void saveToJson(DIMJson::WValue &v);
|
|
virtual void loadByJson(const DIMJson::WValue &v);
|
|
|
|
public:
|
|
|
|
double m_data;
|
|
};
|
|
|
|
class WLongItem : public WDictItem
|
|
{
|
|
public:
|
|
|
|
virtual ~WLongItem();
|
|
|
|
virtual int GetType()const;
|
|
|
|
virtual void operator >> (CArchive &ar);
|
|
|
|
virtual void operator << (CArchive &ar);
|
|
|
|
virtual void CopyData(const WDictItem &src);
|
|
virtual void saveToJson(DIMJson::WValue &v);
|
|
virtual void loadByJson(const DIMJson::WValue &v);
|
|
|
|
public:
|
|
|
|
long m_data;
|
|
};
|
|
|
|
class WSelectItem : public WDictItem, public SHList<CString>
|
|
{
|
|
public:
|
|
|
|
virtual ~WSelectItem();
|
|
|
|
virtual void operator >> (CArchive &ar);
|
|
|
|
virtual void operator << (CArchive &ar);
|
|
|
|
virtual void CopyData(const WDictItem &src);
|
|
|
|
//自定义类型类型号大于100
|
|
virtual int GetType()const;
|
|
|
|
//外部要保证m_data为有效索引
|
|
CString GetSelString()const;
|
|
virtual void saveToJson(DIMJson::WValue &v);
|
|
virtual void loadByJson(const DIMJson::WValue &v);
|
|
|
|
public:
|
|
|
|
int m_data;
|
|
};
|
|
|
|
class WDictPath : public PDList<WDictItem>
|
|
{
|
|
public:
|
|
|
|
~WDictPath();
|
|
WDictPath(const CString& sPath);
|
|
|
|
bool IsValid();
|
|
};
|
|
|
|
class WDict : public WDictItem, public PDList<WDictItem>
|
|
{
|
|
public:
|
|
WDict(const TCHAR* sName = NULL, const TCHAR *sDesc = NULL);
|
|
virtual ~WDict();
|
|
|
|
virtual int GetType() const;
|
|
|
|
virtual void operator >> (CArchive &ar);
|
|
|
|
virtual void operator << (CArchive &ar);
|
|
|
|
virtual void CopyData(const WDictItem &src);
|
|
|
|
//没找到则添加,路径被键占用返回NULL,path内容一般会改变!
|
|
WDict* FindOrAddDict(WDictPath &path);
|
|
|
|
WDict* FindOrAddDict(const CString &sPath);
|
|
|
|
bool ReadFile(const TCHAR *sFile);
|
|
|
|
bool WriteFile(const TCHAR *sFile);
|
|
|
|
bool ReadByDWG();
|
|
bool WriteToDWG();
|
|
|
|
//如果名称重复返回false,且外部释放pNewItem!无论是否添加成功,GetCurPData()==*pNewItem!
|
|
bool AppendItem(WDictItem *pNewItem);
|
|
|
|
//在父路径下添加,返回false时外部释放pNewItem!
|
|
bool AppendItem(const CString &sParentPath, WDictItem *pNewItem);
|
|
|
|
bool SetValue(const CString &sPath, int value);
|
|
|
|
bool GetValue(const CString &sPath, int &value);
|
|
|
|
bool SetValue(const CString &sPath, bool value);
|
|
|
|
bool GetValue(const CString &sPath, bool &value);
|
|
|
|
bool SetValue(const CString &sPath, char value);
|
|
|
|
bool GetValue(const CString &sPath, char &value);
|
|
|
|
bool SetValue(const CString &sPath, long value);
|
|
|
|
bool GetValue(const CString &sPath, long &value);
|
|
|
|
bool SetValue(const CString &sPath, double value);
|
|
|
|
bool GetValue(const CString &sPath, double &value);
|
|
|
|
bool SetValue(const CString &sPath, unsigned int valude);
|
|
|
|
bool GetValue(const CString &sPath, unsigned int &value);
|
|
|
|
bool SetValue(const CString &sPath, const CString& value);
|
|
|
|
bool GetValue(const CString &sPath, CString &value);
|
|
|
|
bool GetCombValue(const CString &sPath, int &v);
|
|
|
|
//path内容一般会改变!
|
|
WDictItem* FindItem(WDictPath &path);
|
|
|
|
WDictItem* FindItem(const CString &sPath);
|
|
|
|
//没找到则添加
|
|
WDictItem* FindOrAddItem(const CString &sPath, int type);
|
|
virtual void saveToJson(DIMJson::WValue &v);
|
|
virtual void loadByJson(const DIMJson::WValue &v);
|
|
|
|
private:
|
|
WDictItem* DynCreateItem(int type);
|
|
};
|