Beispiel #1
0
 // Для сравнения в том, что имена совпадают
 public bool Equal(TMetaBase _p1)
 {
     if (pTestElem == null)
         return (_p1.sName.Equals(sTestName));
     else
         return ((_p1.sName.Equals(pTestElem.sName)) && (pTestElem != _p1));
 }
Beispiel #2
0
 // Добавление элемента c проверкой наличия уже такого с такимже именем
 public HRESULT AddAndCheckElem(TMetaBase _pElem)
 {
     pTestElem = _pElem;
     if (pElems.Find(pdEqual) != null) return HRESULT.E_PAIR_NAME;
     pTestElem = null;
     pElems.Add(_pElem);
     return HRESULT.S_OK;
 }
Beispiel #3
0
        private string sTestName; // Имя для теста  - для извлечения (актуально, когда pTestElem == null)

        #endregion Fields

        #region Constructors

        public TAssembleHelper()
            : base()
        {
            pElems      = new List<TMetaBase>();
            pTestElem   = null;
            sTestName = "";
            pdEqual      = new Predicate<TMetaBase>(Equal);
            pdCompare   = new Comparison<TMetaBase>(Compare);
        }
Beispiel #4
0
 // Подготовка перед связыванием
 public HRESULT Prepare()
 {
     pElems.Sort(pdCompare);
     foreach(TMetaBase p1 in pElems)
     {
         pTestElem = p1;
         if (pElems.Find(pdEqual) != null) return HRESULT.E_PAIR_NAME;
         pTestElem = null;
     }
     return HRESULT.S_OK;
 }
Beispiel #5
0
 // Добавить в конец элемент
 public HRESULT AddChild(TMetaBase _pTMetaBase)
 {
     if (_pTMetaBase == null) return HRESULT.E_NULL_PARAMS;
     fpChilds.Add(_pTMetaBase);
     return HRESULT.S_OK;
 }
Beispiel #6
0
 // Добавить элемент на позицию _iIndex
 public HRESULT InsertChild(TMetaBase _pTMetaBase, int _iIndex)
 {
     if ((fpChilds.Count > _iIndex) && (_iIndex >= 0))
     {
         fpChilds.Insert(_iIndex, _pTMetaBase);
         return HRESULT.S_OK;
     }
     else
         return HRESULT.E_OUT_OF_LIST;
 }
Beispiel #7
0
 // Удалить дочерний элемент по самому элемненту
 public HRESULT DeleteChild(TMetaBase _pBase)
 {
     if(fpChilds.Remove(_pBase))
             return HRESULT.S_OK;
         else
             return HRESULT.E_NO_IN_LIST;
 }
Beispiel #8
0
 // Выдача элемента по имени
 public TMetaBase getElemByName(string _sName)
 {
     sTestName = _sName;
     pTestElem = null;
     return pElems.Find(pdEqual);
 }
Beispiel #9
0
 // Для делегата сравнения - сортировка
 public int Compare(TMetaBase _p1, TMetaBase _p2)
 {
     return _p1.sName.CompareTo(_p2.sName);
 }
Beispiel #10
0
 // Добавление элемента
 public HRESULT AddElem(TMetaBase _pElem)
 {
     pElems.Add(_pElem);
     return HRESULT.S_OK;
 }