internal RuntimeDataTablixGroupRootObj(IReference <IScope> outerScope, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode dynamicMember, ref DataActions dataAction, OnDemandProcessingContext odpContext, IReference <RuntimeMemberObj>[] innerGroupings, bool outermostStatics, int headingLevel, Microsoft.ReportingServices.ReportProcessing.ObjectType objectType) : base(outerScope, dynamicMember, dataAction, odpContext, objectType) { m_innerGroupings = innerGroupings; m_headingLevel = headingLevel; m_outermostStatics = outermostStatics; m_hasLeafCells = false; HierarchyNodeList innerStaticMembersInSameScope = dynamicMember.InnerStaticMembersInSameScope; m_hasLeafCells = (!dynamicMember.HasInnerDynamic || (innerStaticMembersInSameScope != null && innerStaticMembersInSameScope.LeafCellIndexes != null)); if (((innerGroupings == null && innerStaticMembersInSameScope != null && innerStaticMembersInSameScope.LeafCellIndexes != null) || (innerGroupings != null && outermostStatics)) && m_hasLeafCells) { m_processStaticCellsForRVs = true; } if (m_hasLeafCells && outermostStatics) { m_processOutermostStaticCells = true; } NeedProcessDataActions(dynamicMember); NeedProcessDataActions(dynamicMember.InnerStaticMembersInSameScope); if (dynamicMember.Grouping.Filters == null) { dataAction = DataActions.None; } if ((m_processOutermostStaticCells || m_processStaticCellsForRVs) && (dynamicMember.DataRegionDef.CellPostSortAggregates != null || dynamicMember.DataRegionDef.CellRunningValues != null)) { m_dataAction |= DataActions.PostSortAggregates; } }
private void CreateRuntimeMemberObjects(HierarchyNodeList outerMembers, HierarchyNodeList innerMembers, out HierarchyNodeList outerTopLevelStaticMembers, out HierarchyNodeList innerTopLevelStaticMembers, ref DataActions innerDataAction) { bool hasOppositeStaticLeafMembers = false; HierarchyNodeList topLevelDynamicMembers = null; outerTopLevelStaticMembers = null; if (outerMembers != null) { hasOppositeStaticLeafMembers = outerMembers.HasStaticLeafMembers; topLevelDynamicMembers = outerMembers.DynamicMembersAtScope; outerTopLevelStaticMembers = outerMembers.StaticMembersInSameScope; } bool hasOppositeStaticLeafMembers2 = false; HierarchyNodeList topLevelDynamicMembers2 = null; innerTopLevelStaticMembers = null; if (innerMembers != null) { hasOppositeStaticLeafMembers2 = innerMembers.HasStaticLeafMembers; topLevelDynamicMembers2 = innerMembers.DynamicMembersAtScope; innerTopLevelStaticMembers = innerMembers.StaticMembersInSameScope; } DataActions groupingDataAction = DataActions.None; CreateTopLevelRuntimeGroupings(ref groupingDataAction, ref m_innerGroupings, innerTopLevelStaticMembers, topLevelDynamicMembers2, null, hasOppositeStaticLeafMembers); Global.Tracer.Assert(m_innerGroupings != null && m_innerGroupings.Length >= 1, "(null != m_innerGroupings && m_innerGroupings.Length >= 1)"); CreateTopLevelRuntimeGroupings(ref innerDataAction, ref m_outerGroupings, outerTopLevelStaticMembers, topLevelDynamicMembers, m_innerGroupings, hasOppositeStaticLeafMembers2); }
private void NeedProcessDataActions(HierarchyNodeList members) { if (members != null) { for (int i = 0; i < members.Count; i++) { NeedProcessDataActions(members[i]); } } }
public RuntimeDataTablixGroupRootObj(IReference <IScope> outerScope, AspNetCore.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode dynamicMember, ref DataActions dataAction, OnDemandProcessingContext odpContext, IReference <RuntimeMemberObj>[] innerGroupings, bool outermostStatics, int headingLevel, AspNetCore.ReportingServices.ReportProcessing.ObjectType objectType) : base(outerScope, dynamicMember, dataAction, odpContext, objectType) { this.m_innerGroupings = innerGroupings; this.m_headingLevel = headingLevel; this.m_outermostStatics = outermostStatics; this.m_hasLeafCells = false; HierarchyNodeList innerStaticMembersInSameScope = dynamicMember.InnerStaticMembersInSameScope; this.m_hasLeafCells = (!dynamicMember.HasInnerDynamic || (innerStaticMembersInSameScope != null && innerStaticMembersInSameScope.LeafCellIndexes != null)); if (innerGroupings == null && innerStaticMembersInSameScope != null && innerStaticMembersInSameScope.LeafCellIndexes != null) { goto IL_0075; } if (innerGroupings != null && outermostStatics) { goto IL_0075; } goto IL_0084; IL_0084: if (this.m_hasLeafCells && outermostStatics) { this.m_processOutermostStaticCells = true; } this.NeedProcessDataActions(dynamicMember); this.NeedProcessDataActions(dynamicMember.InnerStaticMembersInSameScope); if (dynamicMember.Grouping.Filters == null) { dataAction = DataActions.None; } if (!this.m_processOutermostStaticCells && !this.m_processStaticCellsForRVs) { return; } if (dynamicMember.DataRegionDef.CellPostSortAggregates == null && dynamicMember.DataRegionDef.CellRunningValues == null) { return; } base.m_dataAction |= DataActions.PostSortAggregates; return; IL_0075: if (this.m_hasLeafCells) { this.m_processStaticCellsForRVs = true; } goto IL_0084; }
protected override void ConstructRuntimeStructure(ref DataActions innerDataAction, bool onePassProcess) { HierarchyNodeList hierarchyNodeList = default(HierarchyNodeList); HierarchyNodeList hierarchyNodeList2 = default(HierarchyNodeList); this.CreateRuntimeMemberObjects(base.m_dataRegionDef.OuterMembers, base.m_dataRegionDef.InnerMembers, out hierarchyNodeList, out hierarchyNodeList2, ref innerDataAction); if (((hierarchyNodeList != null && hierarchyNodeList.Count != 0) || (hierarchyNodeList2 != null && hierarchyNodeList2.Count != 0)) && base.DataRegionDef.OutermostStaticColumnIndexes == null && base.DataRegionDef.OutermostStaticRowIndexes == null) { List <int> list = (hierarchyNodeList2 != null) ? hierarchyNodeList2.LeafCellIndexes : null; List <int> list2 = (hierarchyNodeList != null) ? hierarchyNodeList.LeafCellIndexes : null; if (base.DataRegionDef.ProcessingInnerGrouping == AspNetCore.ReportingServices.ReportIntermediateFormat.DataRegion.ProcessingInnerGroupings.Column) { base.DataRegionDef.OutermostStaticColumnIndexes = list; base.DataRegionDef.OutermostStaticRowIndexes = list2; } else { base.DataRegionDef.OutermostStaticColumnIndexes = list2; base.DataRegionDef.OutermostStaticRowIndexes = list; } } }
private void CreateTopLevelRuntimeGroupings(ref DataActions groupingDataAction, ref IReference <RuntimeMemberObj>[] groupings, HierarchyNodeList topLevelStaticMembers, HierarchyNodeList topLevelDynamicMembers, IReference <RuntimeMemberObj>[] innerGroupings, bool hasOppositeStaticLeafMembers) { int num = topLevelDynamicMembers?.Count ?? 0; groupings = new IReference <RuntimeMemberObj> [Math.Max(1, num)]; if (num == 0) { IReference <RuntimeMemberObj> reference = RuntimeDataTablixMemberObj.CreateRuntimeMemberObject(m_selfReference, null, ref groupingDataAction, m_odpContext, innerGroupings, topLevelStaticMembers, hasOppositeStaticLeafMembers, 0, base.ObjectType); groupings[0] = reference; return; } for (int i = 0; i < num; i++) { Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode dynamicMemberDef = topLevelDynamicMembers[i]; IReference <RuntimeMemberObj> reference2 = RuntimeDataTablixMemberObj.CreateRuntimeMemberObject(m_selfReference, dynamicMemberDef, ref groupingDataAction, m_odpContext, innerGroupings, (i == 0) ? topLevelStaticMembers : null, hasOppositeStaticLeafMembers, 0, base.ObjectType); groupings[i] = reference2; } }
internal static IReference <RuntimeMemberObj> CreateRuntimeMemberObject(IReference <IScope> owner, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode dynamicMemberDef, ref DataActions dataAction, OnDemandProcessingContext odpContext, IReference <RuntimeMemberObj>[] innerGroupings, HierarchyNodeList staticMembers, bool outerMostStatics, int headingLevel, Microsoft.ReportingServices.ReportProcessing.ObjectType dataRegionType) { RuntimeDataTablixMemberObj obj = new RuntimeDataTablixMemberObj(owner, dynamicMemberDef, ref dataAction, odpContext, innerGroupings, staticMembers, outerMostStatics, headingLevel, dataRegionType); return(odpContext.TablixProcessingScalabilityCache.Allocate((RuntimeMemberObj)obj, headingLevel)); }
private RuntimeDataTablixMemberObj(IReference <IScope> owner, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode dynamicMember, ref DataActions dataAction, OnDemandProcessingContext odpContext, IReference <RuntimeMemberObj>[] innerGroupings, HierarchyNodeList staticMembers, bool outerMostStatics, int headingLevel, Microsoft.ReportingServices.ReportProcessing.ObjectType objectType) : base(owner, dynamicMember) { int excludedCellIndex = -1; if (dynamicMember != null) { excludedCellIndex = dynamicMember.MemberCellIndex; RuntimeDataTablixGroupRootObj runtimeDataTablixGroupRootObj = new RuntimeDataTablixGroupRootObj(owner, dynamicMember, ref dataAction, odpContext, innerGroupings, outerMostStatics, headingLevel, objectType); m_groupRoot = (RuntimeDataTablixGroupRootObjReference)runtimeDataTablixGroupRootObj.SelfReference; m_groupRoot.UnPinValue(); } if (staticMembers != null && staticMembers.Count != 0) { _ = staticMembers.Count; m_hasStaticMembers = true; m_staticLeafCellIndexes = staticMembers.GetLeafCellIndexes(excludedCellIndex); } }