/** * @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 #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