⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pqdinfo.h

📁 电能质量交换格式转换库
💻 H
字号:
//  File name:          $Workfile: pqdinfo.h $
//  Last modified:      $Modtime: 7/27/01 5:44p $
//  Last modified by:   $Author: Jack $
//  
//  VCS archive path:   $Archive: /PQDIF/PQDcom/PQDcom4/pqdiflib/pqdinfo.h $
//  VCS revision:       $Revision: 12 $ 
 



//  class CPQDIF_Info

//  Base info class
//  ---------------
class NameInfo
{
public:
    inline NameInfo()
    {
        m_name = NULL;
        m_alias = NULL;
    }
    const char *    m_name;   //  Name of item in the list (tag, ID, etc.)
    const char *    m_alias;  //  Alias for the item 
};

//  Sub info classes
//  ----------------
class NI_Tag : public NameInfo
{
public:    
    GUID            m_tag;
};

class NI_ID_GUID : public NameInfo
{
public:
    GUID            m_tag;  //  Owner
    GUID            m_id;   //  ID value
};

class NI_ID_Int : public NameInfo
{
public:
    GUID            m_tag;  //  Owner
    int             m_id;   //  ID value
};

class NI_Type : public NameInfo
{
public:
    int             m_type; //  Physical type
};


//  List classes
//  ------------
typedef vector<NI_Tag> CList_NI_Tag;
typedef vector<NI_ID_GUID> CList_NI_ID_GUID;
typedef vector<NI_ID_Int> CList_NI_ID_Int;
typedef vector<NI_Type> CList_NI_Type;



class CPQDIF_Info  
    {
    public:
	    CPQDIF_Info();
        ~CPQDIF_Info();

    // Attributes
    public:

    // Operations
    public:

        //  Name encoding. These methods always return a
        //  valid string. "< Unrecognized >" is returned if
        //  the requested value is not found.
        const char * GetNameOfTag( const GUID& tag );
        const char * GetNameOfID( const GUID& valueID );   
        const char * GetNameOfID( const GUID& tagOwner, int valueID );
        const char * GetNameOfPhysType( INT4 type );

        //  Same as NameOf functions execept that NULL is
        //  returned for undefined requests.
        const char * GetNameTag( const GUID& tag );
        const char * GetNameID( const GUID& valueID );   
        const char * GetNameID( const GUID& tagOwner, int valueID );
        const char * GetNamePhysType( INT4 type );

        //  Alias encoding functions. "" is returned if the requested
        //  value is not found.
        const char * GetAliasTag( const GUID& tag );
        const char * GetAliasID( const GUID& valueID );   
        const char * GetAliasID( const GUID& tagOwner, int valueID );
        const char * GetAliasPhysType( INT4 type );

        //  Name decoding. These methods return true if
        //  the requested value is found.
        bool GetTagFromName( const char *szName, GUID& tag );
        bool GetIDFromName( const char *szName, GUID& valueID );
        bool GetIDFromName( const char *szName, GUID& tagOwner, int &valueID );

        //  Data manipulation
        static SIZE4 GetNumBytesOfType( int typePhysical );
        static inline SIZE4 padSizeTo4Bytes( SIZE4 sizeOrig )
		{
			return ( ( sizeOrig + 3 ) & ~3 );
		}
        
        static inline BYTE * GetPtrToDataValue( int /*typePhysical*/, PQDIFValue& value )
		{
			return (BYTE *)&value;
		}
        static inline const BYTE * GetPtrToDataValue( int /*typePhysical*/, const PQDIFValue& value )
		{
			return (const BYTE *)&value;
		}

        //  Tag enumeration
        int GetTagCount( void )
            { return m_listTags.size(); }
        bool GetTagGUID( int index, GUID& guidTag );
        bool GetTagName( int index, string& nameTag );

        //  GUID ID enumeration
        int GetIDCountGUID
            (
            const   GUID&   tagOwner
            );
        const char * GetIDNameGUID
            (
            const   GUID&   tagOwner,
                    int     idxID,
                    GUID&   valueID
            );

        //  Integer ID enumeration
        int GetIDCountInt
            (
            const   GUID&   tagOwner
            );
        const char * GetIDNameInt
            (
            const   GUID&   tagOwner,
                    int     idxID,
                    int&    valueID
            );

    // Implementation
    protected:
        BYTE * _GetPtrToDataValue( int typePhysical, const PQDIFValue& value );
        
        NI_Tag *        _FindTag( const GUID &tag );
        NI_ID_GUID *    _FindGUID( const GUID& id );          
        NI_ID_Int *     _FindInt( const GUID& tag, int id );            
        NI_Type *       _FindType( INT4 type );            


        NI_Tag *        _LookupTag( int idxLook );
        NI_ID_GUID *    _LookupGUID
            (
            const   GUID&   tagOwner,
                    int     idxLook 
            );          
        NI_ID_Int *     _LookupInt
            (
            const   GUID&   tagOwner,
                    int     idxLook 
            );

    //  Data
    protected:
        CList_NI_Tag        m_listTags;
        CList_NI_ID_GUID    m_listGUIDs;
        CList_NI_ID_Int     m_listInts;
        CList_NI_Type       m_listTypes;


	//	Lookup table for finding the size of a data type.
	protected: 
		static BYTE			m_sizeDataTable[70];

    };


//  The one and only information object (Singleton)
extern CPQDIF_Info  theInfo;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -