public void Add(Term addition) { if (topLayer is AddSubtractLayer) ((AddSubtractLayer)topLayer).Additions.Add(addition.TopLayer); else { AddSubtractLayer newTopLayer = new AddSubtractLayer(); newTopLayer.Additions.Add(topLayer); newTopLayer.Additions.Add(addition.TopLayer); topLayer = Layer.GetBetterChild(newTopLayer); } }
private void AddFirstToLayerAndDeleteFromList(AddSubtractLayer layer, List<IElement> els) { bool isAddition = true; if (els[0] is MinusElement) isAddition = false; if (els[0] is PlusElement || els[0] is MinusElement) els.RemoveAt(0); int length = GetFirstIndexOrCount(els, typeof(PlusElement), typeof(MinusElement)); ElementsToLayersParser parser = new ElementsToLayersParser(els.GetRange(0, length)); parser.Parse(); if (isAddition) layer.Additions.Add(parser.TopLayer); if (!isAddition) layer.Subtractions.Add(parser.TopLayer); els.RemoveRange(0, length); }
private AddSubtractLayer ParseAddSubtractLayerFromElements() { AddSubtractLayer layer = new AddSubtractLayer(); List<IElement> els = new List<IElement>(elements); while (els.Count > 0) AddFirstToLayerAndDeleteFromList(layer, els); return layer; }
private AddSubtractLayer CreateNonCombinedLayerPart(ILayer[] pair, MultiplyDivideLayer[] parents) { AddSubtractLayer layerPart = new AddSubtractLayer(); MultiplyDivideLayer layer0 = Layer.GetMultiplyDivideLayerWithoutOne(parents[0], pair[0]); if (additions.Contains(parents[0])) layerPart.Additions.Add(layer0); else layerPart.Subtractions.Add(layer0); MultiplyDivideLayer layer1 = Layer.GetMultiplyDivideLayerWithoutOne(parents[1], pair[1]); if (additions.Contains(parents[1])) layerPart.Additions.Add(layer1); else layerPart.Subtractions.Add(layer1); return layerPart; }