logplus/OSGDataModel/include/ObjectIDDescription.h
2025-10-29 17:23:30 +08:00

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