コード例 #1
0
		private bool m_fSeq; // whether m_flidSource is a sequence property.

		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Initializes a new instance of the <see cref="T:NeededPropertyInfo"/> class.
		/// </summary>
		/// <param name="listItemsClass">the class of objects at the root parent of the NeedPropertyInfo tree.
		/// Typically the destination class of flidSource</param>
		/// ------------------------------------------------------------------------------------
		public NeededPropertyInfo(int listItemsClass)
		{
			m_targetClass = listItemsClass;
			m_flidSource = 0;	// don't really how we got to the root parent class.
			m_parent = null;
			m_fSeq = true;
		}
コード例 #2
0
		public void TestSeqProps()
		{
			NeededPropertyInfo info1 = new NeededPropertyInfo(1);
			NeededPropertyInfo info2 = info1.AddObjField(2, true);
			NeededPropertyInfo info2b = info1.AddObjField(2, true);
			Assert.AreSame(info2, info2b); // did't make a duplicate

			NeededPropertyInfo info3 = info1.AddObjField(3, true);
			info2b = info1.AddObjField(2, true);
			Assert.AreSame(info2, info2b); // can still find (2)

			NeededPropertyInfo info3b = info1.AddObjField(3, true);
			Assert.AreSame(info3, info3b); // also rediscovers ones that aren't first

			NeededPropertyInfo info4 = info1.AddObjField(4, true);
			info2b = info1.AddObjField(2, true);
			Assert.AreSame(info2, info2b); // can still find (2) with 3 items
			info3b = info1.AddObjField(3, true);
			Assert.AreSame(info3, info3b); // can rediscover mid-seq
			NeededPropertyInfo info4b = info1.AddObjField(4, true);
			Assert.AreSame(info4, info4b); // also rediscovers ones that aren't first

			// Now recursive
			NeededPropertyInfo info5 = info2.AddObjField(5, true);
			NeededPropertyInfo info5b = info1.AddObjField(2, true).AddObjField(5, true);
			Assert.AreSame(info5, info5b); // recursive works too.
		}
コード例 #3
0
        private bool m_fSeq;                                       // whether m_flidSource is a sequence property.

        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Initializes a new instance of the <see cref="T:NeededPropertyInfo"/> class.
        /// </summary>
        /// <param name="listItemsClass">the class of objects at the root parent of the NeedPropertyInfo tree.
        /// Typically the destination class of flidSource</param>
        /// ------------------------------------------------------------------------------------
        public NeededPropertyInfo(int listItemsClass)
        {
            m_targetClass = listItemsClass;
            m_flidSource  = 0;                  // don't really how we got to the root parent class.
            m_parent      = null;
            m_fSeq        = true;
        }
コード例 #4
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Add (or retrieve) info about a object (atomic or seq) flid. May include virtuals.
        /// </summary>
        /// <param name="flid">The flid.</param>
        /// <param name="fSeq">if set to <c>true</c> [f seq].</param>
        /// <returns></returns>
        /// ------------------------------------------------------------------------------------
        public NeededPropertyInfo AddObjField(int flid, bool fSeq)
        {
            NeededPropertyInfo info =
                m_sequenceInfo.Find(delegate(NeededPropertyInfo item)
                                    { return(item.Source == flid); });

            if (info == null)
            {
                info = new NeededPropertyInfo(flid, this, fSeq);
                m_sequenceInfo.Add(info);
            }
            return(info);
        }
コード例 #5
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Initializes a new instance of the <see cref="T:NeededPropertyInfo"/> class.
		/// </summary>
		/// <param name="flidSource">The flid source.</param>
		/// <param name="parent">The parent.</param>
		/// <param name="fSeq">if set to <c>true</c> [f seq].</param>
		/// ------------------------------------------------------------------------------------
		protected NeededPropertyInfo(int flidSource, NeededPropertyInfo parent, bool fSeq)
		{
			m_flidSource = flidSource;
			m_parent = parent;
			m_fSeq = fSeq;
		}
コード例 #6
0
		public VirtualNeededPropertyInfo(int flidSource, NeededPropertyInfo parent, bool fSeq, int dstClsId)
			: base(flidSource, parent, fSeq)
		{
			m_targetClass = dstClsId;
		}
コード例 #7
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Add (or retrieve) info about a object (atomic or seq) flid. May include virtuals.
		/// </summary>
		/// <param name="flid">The flid.</param>
		/// <param name="fSeq">if set to <c>true</c> [f seq].</param>
		/// <returns></returns>
		/// ------------------------------------------------------------------------------------
		public NeededPropertyInfo AddObjField(int flid, bool fSeq)
		{
			NeededPropertyInfo info =
				m_sequenceInfo.Find(delegate(NeededPropertyInfo item)
					{ return item.Source == flid; });
			if (info == null)
			{
				info = new NeededPropertyInfo(flid, this, fSeq);
				m_sequenceInfo.Add(info);
			}
			return info;
		}
コード例 #8
0
 /// ------------------------------------------------------------------------------------
 /// <summary>
 /// Initializes a new instance of the <see cref="T:NeededPropertyInfo"/> class.
 /// </summary>
 /// <param name="flidSource">The flid source.</param>
 /// <param name="parent">The parent.</param>
 /// <param name="fSeq">if set to <c>true</c> [f seq].</param>
 /// ------------------------------------------------------------------------------------
 protected NeededPropertyInfo(int flidSource, NeededPropertyInfo parent, bool fSeq)
 {
     m_flidSource = flidSource;
     m_parent     = parent;
     m_fSeq       = fSeq;
 }
コード例 #9
0
 public VirtualNeededPropertyInfo(int flidSource, NeededPropertyInfo parent, bool fSeq, int dstClsId)
     : base(flidSource, parent, fSeq)
 {
     m_targetClass = dstClsId;
 }