public bool AddTuple(T tuple) { if (tuple.GetDimValue(dim) < splitValue) { if (eleLE.AddTuple(tuple)) { return(true); } eleLE = new Node(parent, (dim + 1) % dimMax, dimMax, (Leaf)eleLE); return(eleLE.AddTuple(tuple)); } if (tuple.GetDimValue(dim) > splitValue) { if (eleGE.AddTuple(tuple)) { return(true); } eleGE = new Node(parent, (dim + 1) % dimMax, dimMax, (Leaf)eleGE); return(eleGE.AddTuple(tuple)); } if (eleLE.IsLeafWithSpace()) { eleLE.AddTuple(tuple); } else if (eleGE.IsLeafWithSpace()) { eleGE.AddTuple(tuple); } else if (eleLE is Node) { eleLE.AddTuple(tuple); } else if (eleGE is Node) { eleGE.AddTuple(tuple); } else { eleLE = new Node(parent, (dim + 1) % dimMax, dimMax, (Leaf)eleLE); return(eleLE.AddTuple(tuple)); } return(true); }
public void AddTuple(T tuple) { if (!eleRoot.AddTuple(tuple)) { eleRoot = new Node(this, 0, dimMax, (Leaf)eleRoot); if (!eleRoot.AddTuple(tuple)) { throw new Exception("Bspt.AddTuple() failed"); } } }