ConnectionRelation.h

#pragma once


namespace Core
{
    ref class Link;

    typedef array< Link^ > Links;


    /// 接続関係
    public ref class ConnectionRelation
    {
    // Construction --------------------------------------------------------
    public:
        ConnectionRelation( Link^ upper, Link^ equal, Link^ lower );
        ConnectionRelation( Link^ upper, Links^ links, System::Xml::XmlElement^ element );


    // Operation -----------------------------------------------------------
    public:
        void CheckData( Link^ ownLink );

        virtual System::String^ ToString() override;

    private:
        Link^ GetLink( Links^ links, System::String^ linkName );
        void CheckData();


    // Attribute ===========================================================
    private:
        Link^ m_upper;        ///< 上方 (接続元)
        Link^ m_equal;        ///< 対等 (接続元が等しい)
        Link^ m_lower;        ///< 下方 (接続先)


    // Property ------------------------------------------------------------
    public:
        /// 上方
        property Link^ Upper
        {
            Link^ get()
            {
                return m_upper;
            }
        }

        /// 対等
        property Link^ Equal
        {
            Link^ get()
            {
                return m_equal;
            }
        }

        /// 下方
        property Link^ Lower
        {
            Link^ get()
            {
                return m_lower;
            }
        }
    };
}