public override void Deserialize(IntermediateFormatReader reader) { base.Deserialize(reader); reader.RegisterDeclaration(m_declaration); while (reader.NextMember()) { switch (reader.CurrentMember.MemberName) { case MemberName.Grouping: m_grouping = (RuntimeGroupingObj)reader.ReadRIFObject(); if (m_grouping != null) { m_grouping.SetOwner(this); } break; case MemberName.Expression: m_expression = (RuntimeExpressionInfo)reader.ReadRIFObject(); break; case MemberName.HierarchyRoot: m_hierarchyRoot = (RuntimeHierarchyObjReference)reader.ReadRIFObject(); break; case MemberName.HierarchyObjs: m_hierarchyObjs = reader.ReadListOfRIFObjects <List <IReference <RuntimeHierarchyObj> > >(); break; default: Global.Tracer.Assert(condition: false); break; } } }
private void ConstructorHelper(int exprIndex, RuntimeHierarchyObjReference hierarchyRoot) { m_hierarchyRoot = hierarchyRoot; using (m_hierarchyRoot.PinValue()) { RuntimeGroupRootObj runtimeGroupRootObj = m_hierarchyRoot.Value() as RuntimeGroupRootObj; Global.Tracer.Assert(runtimeGroupRootObj != null, "(null != groupRoot)"); List <Microsoft.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) { m_hierarchyObjs = new List <IReference <RuntimeHierarchyObj> >(); RuntimeGroupLeafObjReference runtimeGroupLeafObjReference = null; _ = m_odpContext.TablixProcessingScalabilityCache; if (ProcessingStages.Grouping == runtimeGroupRootObj.ProcessingStage) { runtimeGroupLeafObjReference = runtimeGroupRootObj.CreateGroupLeaf(); if (!runtimeGroupRootObj.HasParent) { runtimeGroupRootObj.AddChildWithNoParent(runtimeGroupLeafObjReference); } } if (null != runtimeGroupLeafObjReference) { m_hierarchyObjs.Add(runtimeGroupLeafObjReference); } } else { m_expression = new RuntimeExpressionInfo(list, expressionsHost, directions, exprIndex); m_grouping = RuntimeGroupingObj.CreateGroupingObj(runtimeGroupRootObj.GroupingType, this, m_objectType); } } }
protected RuntimeHierarchyObjReference CreateHierarchyObjAndAddToParent() { RuntimeHierarchyObjReference runtimeHierarchyObjReference = null; try { RuntimeHierarchyObj runtimeHierarchyObj = new RuntimeHierarchyObj(base.m_owner, base.m_objectType, ((IScope)base.m_owner).Depth + 1); runtimeHierarchyObjReference = (RuntimeHierarchyObjReference)runtimeHierarchyObj.SelfReference; runtimeHierarchyObj.NextRow(); return(runtimeHierarchyObjReference); } finally { if ((BaseReference)null != (object)runtimeHierarchyObjReference) { runtimeHierarchyObjReference.UnPinValue(); } } }