public override void Deserialize(IntermediateFormatReader reader) { base.Deserialize(reader); reader.RegisterDeclaration(RuntimeHierarchyObj.m_declaration); while (reader.NextMember()) { switch (reader.CurrentMember.MemberName) { case MemberName.Grouping: this.m_grouping = (RuntimeGroupingObj)reader.ReadRIFObject(); if (this.m_grouping != null) { this.m_grouping.SetOwner(this); } break; case MemberName.Expression: this.m_expression = (RuntimeExpressionInfo)reader.ReadRIFObject(); break; case MemberName.HierarchyRoot: this.m_hierarchyRoot = (RuntimeHierarchyObjReference)reader.ReadRIFObject(); break; case MemberName.HierarchyObjs: this.m_hierarchyObjs = reader.ReadListOfRIFObjects <List <IReference <RuntimeHierarchyObj> > >(); break; default: Global.Tracer.Assert(false); break; } } }
private void ConstructorHelper(int exprIndex, RuntimeHierarchyObjReference hierarchyRoot) { this.m_hierarchyRoot = hierarchyRoot; using (this.m_hierarchyRoot.PinValue()) { RuntimeGroupRootObj runtimeGroupRootObj = this.m_hierarchyRoot.Value() as RuntimeGroupRootObj; Global.Tracer.Assert(null != runtimeGroupRootObj, "(null != groupRoot)"); List <AspNetCore.ReportingServices.ReportIntermediateFormat.ExpressionInfo> list; IndexedExprHost expressionsHost; List <bool> directions; if (ProcessingStages.Grouping == runtimeGroupRootObj.ProcessingStage) { list = runtimeGroupRootObj.GroupExpressions; expressionsHost = runtimeGroupRootObj.GroupExpressionHost; directions = runtimeGroupRootObj.GroupDirections; } else { Global.Tracer.Assert(ProcessingStages.SortAndFilter == runtimeGroupRootObj.ProcessingStage, "(ProcessingStages.SortAndFilter == groupRoot.ProcessingStage)"); list = runtimeGroupRootObj.SortExpressions; expressionsHost = runtimeGroupRootObj.SortExpressionHost; directions = runtimeGroupRootObj.SortDirections; } if (exprIndex == -1 || exprIndex >= list.Count) { this.m_hierarchyObjs = new List <IReference <RuntimeHierarchyObj> >(); RuntimeGroupLeafObjReference runtimeGroupLeafObjReference = null; IScalabilityCache tablixProcessingScalabilityCache = base.m_odpContext.TablixProcessingScalabilityCache; if (ProcessingStages.Grouping == runtimeGroupRootObj.ProcessingStage) { runtimeGroupLeafObjReference = runtimeGroupRootObj.CreateGroupLeaf(); if (!runtimeGroupRootObj.HasParent) { runtimeGroupRootObj.AddChildWithNoParent(runtimeGroupLeafObjReference); } } if ((BaseReference)null != (object)runtimeGroupLeafObjReference) { this.m_hierarchyObjs.Add(runtimeGroupLeafObjReference); } } else { this.m_expression = new RuntimeExpressionInfo(list, expressionsHost, directions, exprIndex); this.m_grouping = RuntimeGroupingObj.CreateGroupingObj(runtimeGroupRootObj.GroupingType, this, base.m_objectType); } } }