81 lines
1.9 KiB
C++
81 lines
1.9 KiB
C++
/**
|
|
* @file ObjectIDDescription.h
|
|
* @brief 所有的ID的元数据描述
|
|
* @date 2014-5-26
|
|
* @author: liyonggang
|
|
*/
|
|
#ifndef PAI_FRAME_OSGOBJECTIDDESCRIPTION_H
|
|
#define PAI_FRAME_OSGOBJECTIDDESCRIPTION_H
|
|
#pragma warning( push ,0)
|
|
#include "OSGDataModel.h"
|
|
#include <QUuid>
|
|
#pragma warning( pop )
|
|
|
|
#pragma execution_character_set("utf-8")
|
|
|
|
BEGIN_OSGDATAMODEL_NAMESPACE;
|
|
|
|
/**
|
|
* @class ID的元数据类
|
|
* @brief 主要包括它编程时的"宏"(助记符)和它的描述信息
|
|
*/
|
|
class OSGDATAMODEL_EXPORT CObjectIDDescription
|
|
{
|
|
public:
|
|
CObjectIDDescription();
|
|
|
|
CObjectIDDescription( QUuid ID,QString strID,QString strDescription );
|
|
|
|
bool operator !=( const CObjectIDDescription& s );
|
|
|
|
bool operator < ( const CObjectIDDescription& s ) const;
|
|
|
|
public:
|
|
QUuid m_ID; // ID
|
|
QString m_strID; //ID对应的编程时的"宏"(助记符)
|
|
QString m_strDescription; //可读解释此ID的描述信息
|
|
};
|
|
|
|
/**
|
|
* @brief 实现ID元数据注册
|
|
*/
|
|
OSGDATAMODEL_EXPORT void RegisterGuidDescription( CObjectIDDescription s );
|
|
|
|
/**
|
|
* @brief 根据ID得到对应的元数据
|
|
*/
|
|
OSGDATAMODEL_EXPORT const CObjectIDDescription *GetGuidDescription( QUuid id );
|
|
|
|
/**
|
|
* @class CGuidDescriptionAuto
|
|
* @brief 实现ID元数据自动注册的辅助类
|
|
*/
|
|
class OSGDATAMODEL_EXPORT CGuidDescriptionAuto
|
|
{
|
|
public:
|
|
CGuidDescriptionAuto( CObjectIDDescription *pDescription )
|
|
{
|
|
while( pDescription && pDescription->m_ID != QUuid() )
|
|
{
|
|
RegisterGuidDescription( *pDescription );
|
|
++pDescription;
|
|
}
|
|
}
|
|
};
|
|
|
|
//实现ID元数据自动注册的宏
|
|
#define BEGIN_REGISTER_ID_DESCRIPTION() \
|
|
datamodel::CObjectIDDescription gGuidDescription[] = {
|
|
|
|
//实现ID元数据自动注册的宏
|
|
#define END_REGISTER_ID_DESCRIPTION()\
|
|
,datamodel::CObjectIDDescription() };\
|
|
datamodel::CGuidDescriptionAuto g_GuidDescriptionAuto( gGuidDescription );
|
|
|
|
#define ID_ITEM_DATA( id,strDescription) \
|
|
datamodel::CObjectIDDescription( id,#id,strDescription)
|
|
|
|
END_OSGDATAMODEL_NAMESPACE
|
|
|
|
#endif
|