public bool IsEqual(CSmartArray array) { Dictionary <ProductTag, int> map = array.GetMap(); int count = m_TagMap.Count; if (count != map.Count) { return(false); } var en = m_TagMap.Keys.GetEnumerator(); en.MoveNext(); for (int i = 0; i < count; i++) { ProductTag pTag = en.Current; int TagCount = array.GetTagCount(pTag); if (TagCount == 0) { return(false); } if (TagCount != GetTagCount(pTag)) { return(false); } } return(true); }
public void UpdateResult(CSmartArray arr) { if (arr == null) { return; } arr.Merge(m_Result); m_Result.RemoveAll(); }
public void Merge(CSmartArray Arr) { var e = Arr.m_TagMap.Keys.GetEnumerator(); e.MoveNext(); for (int i = 0; i < Arr.m_TagMap.Keys.Count; i++) { ProductTag pTag = e.Current; Add(pTag, Arr.m_TagMap[pTag]); e.MoveNext(); } e.Dispose(); }
public CSmartArray Copy() { CSmartArray array = new CSmartArray(); var e = m_TagMap.Keys.GetEnumerator(); for (int i = 0; i < m_TagMap.Keys.Count; i++) { e.MoveNext(); ProductTag tag = e.Current; array.Add(tag, m_TagMap[tag]); } return(array); }
virtual public void SetInput(CSmartArray Array) { int count = m_TagInputArray.Count; for (int i = 0; i < count; i++) { ProductTag tag = m_TagInputArray[i]; int ProductCount = Array.GetTagCount(tag); m_InputCount[i] = ProductCount; m_SmartInput.Add(tag, ProductCount); Array.ClearTag(tag); } }
public void Refresh() { m_InputCount = new List <int>(); m_SmartInput = new CSmartArray(); m_Result = new CSmartArray(); int count = m_TagInputArray.Count(); for (int i = 0; i < count; i++) { m_InputCount.Add(0); } }
public void ExcludeWhatHave(CSmartArray Arr) { var e = m_TagMap.Keys.GetEnumerator(); List <ProductTag> sameTag = new List <ProductTag>(); for (int i = 0; i < m_TagMap.Keys.Count; i++) { e.MoveNext(); ProductTag tag = e.Current; int count = Arr.GetTagCount(tag); if (count != 0) { sameTag.Add(tag); } } for (int i = 0; i < sameTag.Count; i++) { ProductTag tag = sameTag[i]; int count = Arr.GetTagCount(tag); int value = m_TagMap[tag]; if (value > count) { Add(tag, -count); Arr.ClearTag(tag); } else if (value < count) { ClearTag(tag); Arr.Add(tag, -value); } else //одинаковое значение { ClearTag(tag); Arr.ClearTag(tag); } } //e.MoveNext(); }