예제 #1
0
        public void ResolveReferences(Dictionary <AspNetCore.ReportingServices.ReportIntermediateFormat.Persistence.ObjectType, List <MemberReference> > memberReferencesCollection, Dictionary <int, IReferenceable> referenceableItems)
        {
            List <MemberReference> list = default(List <MemberReference>);

            if (memberReferencesCollection.TryGetValue(EndUserSort.m_Declaration.ObjectType, out list))
            {
                foreach (MemberReference item in list)
                {
                    switch (item.MemberName)
                    {
                    case MemberName.DataSet:
                        Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID));
                        Global.Tracer.Assert(referenceableItems[item.RefID] is DataSet);
                        Global.Tracer.Assert(this.m_dataSet != (DataSet)referenceableItems[item.RefID]);
                        this.m_dataSet = (DataSet)referenceableItems[item.RefID];
                        break;

                    case MemberName.SortTarget:
                        Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID));
                        Global.Tracer.Assert(referenceableItems[item.RefID] is ISortFilterScope);
                        Global.Tracer.Assert(this.m_sortTarget != (ISortFilterScope)referenceableItems[item.RefID]);
                        this.m_sortTarget = (ISortFilterScope)referenceableItems[item.RefID];
                        break;

                    case MemberName.DetailScopeSubReports:
                        if (this.m_detailScopeSubReports == null)
                        {
                            this.m_detailScopeSubReports = new List <SubReport>();
                        }
                        Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID));
                        Global.Tracer.Assert(referenceableItems[item.RefID] is SubReport);
                        Global.Tracer.Assert(!this.m_detailScopeSubReports.Contains((SubReport)referenceableItems[item.RefID]));
                        this.m_detailScopeSubReports.Add((SubReport)referenceableItems[item.RefID]);
                        break;

                    case MemberName.SortExpressionScope:
                        Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID));
                        Global.Tracer.Assert(referenceableItems[item.RefID] is ISortFilterScope);
                        Global.Tracer.Assert(this.m_sortExpressionScope != (ISortFilterScope)referenceableItems[item.RefID]);
                        this.m_sortExpressionScope = (ISortFilterScope)referenceableItems[item.RefID];
                        break;

                    case MemberName.GroupsInSortTarget:
                        if (this.m_groupsInSortTarget == null)
                        {
                            this.m_groupsInSortTarget = new GroupingList();
                        }
                        Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID));
                        Global.Tracer.Assert(referenceableItems[item.RefID] is Grouping);
                        Global.Tracer.Assert(!this.m_groupsInSortTarget.Contains((Grouping)referenceableItems[item.RefID]));
                        this.m_groupsInSortTarget.Add((Grouping)referenceableItems[item.RefID]);
                        break;

                    default:
                        Global.Tracer.Assert(false);
                        break;
                    }
                }
            }
        }
 public void Add(GroupingList scopeDefs, List <object>[] scopeValues, int value)
 {
     if (scopeValues == null || scopeValues.Length == 0)
     {
         Global.Tracer.Assert(scopeDefs == null || 0 == scopeDefs.Count, "(null == scopeDefs || 0 == scopeDefs.Count)");
         this.m_lookupInt = value;
     }
     else
     {
         bool flag = true;
         if (this.m_lookupTable == null)
         {
             this.m_lookupTable = new Hashtable();
             flag = false;
         }
         Hashtable hashtable = this.m_lookupTable;
         int       num       = 0;
         int       num2      = 0;
         for (int i = 0; i < scopeValues.Length; i++)
         {
             List <object> list = scopeValues[i];
             if (list == null)
             {
                 num2++;
             }
             else
             {
                 num = list.Count;
                 if (i == scopeValues.Length - 1)
                 {
                     num--;
                 }
                 this.GetNullScopeEntries(num2, ref hashtable, ref flag);
                 for (int j = 0; j < num; j++)
                 {
                     Hashtable hashtable2 = (!flag) ? null : ((Hashtable)hashtable[list[j]]);
                     if (hashtable2 == null)
                     {
                         hashtable2 = new Hashtable();
                         hashtable.Add(list[j], hashtable2);
                         flag = false;
                     }
                     hashtable = hashtable2;
                 }
                 num2 = 0;
             }
         }
         object key = 1;
         if (scopeValues[scopeValues.Length - 1] != null)
         {
             key = scopeValues[scopeValues.Length - 1][num];
         }
         else
         {
             this.GetNullScopeEntries(num2, ref hashtable, ref flag);
         }
         Global.Tracer.Assert(!hashtable.Contains(key), "(!hashEntries.Contains(lastKey))");
         hashtable.Add(key, value);
     }
 }
예제 #3
0
 public UserSortFilterContext(UserSortFilterContext parentContext, AspNetCore.ReportingServices.ReportIntermediateFormat.SubReport subReport)
 {
     this.m_runtimeSortFilterInfo  = parentContext.RuntimeSortFilterInfo;
     this.m_dataSetGlobalID        = parentContext.DataSetGlobalId;
     this.m_inProcessUserSortPhase = parentContext.m_inProcessUserSortPhase;
     subReport.UpdateSubReportScopes(parentContext);
     this.m_containingScopes      = subReport.ContainingScopes;
     this.m_detailScopeSubReports = subReport.DetailScopeSubReports;
 }
예제 #4
0
 public void ResetContextForTopLevelDataSet()
 {
     this.m_dataSetGlobalID = -1;
     this.m_currentSortFilterEventSource = null;
     this.m_runtimeSortFilterInfo        = null;
     this.m_currentContainingScope       = null;
     this.m_containingScopes             = null;
     this.m_inProcessUserSortPhase       = null;
 }
예제 #5
0
 public void UpdateSubReportScopes(AspNetCore.ReportingServices.OnDemandProcessing.TablixProcessing.UserSortFilterContext context)
 {
     if (this.m_containingScopes != null && 0 < this.m_containingScopes.Count && this.m_containingScopes.LastEntry == null)
     {
         if (context.DetailScopeSubReports != null)
         {
             this.m_detailScopeSubReports = context.CloneDetailScopeSubReports();
         }
         else
         {
             this.m_detailScopeSubReports = new List <SubReport>();
         }
         this.m_detailScopeSubReports.Add(this);
     }
     else
     {
         this.m_detailScopeSubReports = context.DetailScopeSubReports;
     }
     if (context.ContainingScopes != null)
     {
         if (this.m_containingScopes != null && 0 < this.m_containingScopes.Count)
         {
             this.m_containingScopes.InsertRange(0, context.ContainingScopes);
         }
         else
         {
             this.m_containingScopes = context.ContainingScopes;
         }
     }
     if (this.m_report != null && this.m_report.EventSources != null)
     {
         int count = this.m_report.EventSources.Count;
         for (int i = 0; i < count; i++)
         {
             IInScopeEventSource inScopeEventSource = this.m_report.EventSources[i];
             if (inScopeEventSource.UserSort != null)
             {
                 inScopeEventSource.UserSort.DetailScopeSubReports = this.m_detailScopeSubReports;
             }
             if (this.m_containingScopes != null && 0 < this.m_containingScopes.Count)
             {
                 if (inScopeEventSource.ContainingScopes != null && 0 < inScopeEventSource.ContainingScopes.Count)
                 {
                     inScopeEventSource.ContainingScopes.InsertRange(0, this.m_containingScopes);
                 }
                 else
                 {
                     inScopeEventSource.IsSubReportTopLevelScope = true;
                     inScopeEventSource.ContainingScopes         = this.m_containingScopes;
                 }
             }
         }
     }
 }
예제 #6
0
        public new GroupingList Clone()
        {
            int          count        = this.Count;
            GroupingList groupingList = new GroupingList(count);

            for (int i = 0; i < count; i++)
            {
                groupingList.Add(this[i]);
            }
            return(groupingList);
        }
예제 #7
0
        public object PublishClone(AutomaticSubtotalContext context, ReportHierarchyNode owner)
        {
            int          count        = this.Count;
            GroupingList groupingList = new GroupingList(count);

            for (int i = 0; i < count; i++)
            {
                groupingList.Add(this[i].PublishClone(context, owner));
            }
            return(groupingList);
        }
예제 #8
0
 public override void InitializeRVDirectionDependentItems(InitializationContext context)
 {
     this.m_containingScopes = context.GetContainingScopes();
     for (int i = 0; i < this.m_containingScopes.Count; i++)
     {
         this.m_containingScopes[i].SaveGroupExprValues = true;
     }
     if (this.m_isDetailScope)
     {
         this.m_containingScopes.Add(null);
     }
 }
예제 #9
0
        public override void ResolveReferences(Dictionary <AspNetCore.ReportingServices.ReportIntermediateFormat.Persistence.ObjectType, List <MemberReference> > memberReferencesCollection, Dictionary <int, IReferenceable> referenceableItems)
        {
            base.ResolveReferences(memberReferencesCollection, referenceableItems);
            List <MemberReference> list = default(List <MemberReference>);

            if (memberReferencesCollection.TryGetValue(TextBox.m_Declaration.ObjectType, out list))
            {
                foreach (MemberReference item in list)
                {
                    switch (item.MemberName)
                    {
                    case MemberName.ContainingScopes:
                        if (this.m_containingScopes == null)
                        {
                            this.m_containingScopes = new GroupingList();
                        }
                        if (item.RefID != -2)
                        {
                            Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID));
                            Global.Tracer.Assert(referenceableItems[item.RefID] is Grouping);
                            Global.Tracer.Assert(!this.m_containingScopes.Contains((Grouping)referenceableItems[item.RefID]));
                            this.m_containingScopes.Add((Grouping)referenceableItems[item.RefID]);
                        }
                        else
                        {
                            this.m_containingScopes.Add(null);
                        }
                        break;

                    case MemberName.RecursiveMember:
                    {
                        IReferenceable referenceable = default(IReferenceable);
                        if (referenceableItems.TryGetValue(item.RefID, out referenceable))
                        {
                            this.m_recursiveMember = (referenceable as TablixMember);
                        }
                        break;
                    }

                    default:
                        Global.Tracer.Assert(false);
                        break;
                    }
                }
            }
        }
        public int Lookup(GroupingList scopeDefs, List <object>[] scopeValues)
        {
            object obj = null;

            if (scopeValues == null || scopeValues.Length == 0)
            {
                Global.Tracer.Assert(scopeDefs == null || 0 == scopeDefs.Count, "(null == scopeDefs || 0 == scopeDefs.Count)");
                obj = this.m_lookupInt;
            }
            else
            {
                Hashtable hashtable = this.m_lookupTable;
                int       num       = 0;
                for (int i = 0; i < scopeValues.Length; i++)
                {
                    List <object> list = scopeValues[i];
                    if (list == null)
                    {
                        num++;
                    }
                    else
                    {
                        hashtable = (Hashtable)hashtable[num];
                        for (int j = 0; j < list.Count; j++)
                        {
                            obj = hashtable[list[j]];
                            if (i < scopeValues.Length - 1 || j < list.Count - 1)
                            {
                                hashtable = (Hashtable)obj;
                                Global.Tracer.Assert(null != hashtable, "(null != hashEntries)");
                            }
                        }
                        num = 0;
                    }
                }
                if (scopeValues[scopeValues.Length - 1] == null)
                {
                    hashtable = (Hashtable)hashtable[num];
                    obj       = hashtable[1];
                }
            }
            Global.Tracer.Assert(obj is int, "(value is int)");
            return((int)obj);
        }
예제 #11
0
        public void Deserialize(IntermediateFormatReader reader)
        {
            reader.RegisterDeclaration(EndUserSort.m_Declaration);
            while (reader.NextMember())
            {
                switch (reader.CurrentMember.MemberName)
                {
                case MemberName.DataSet:
                    this.m_dataSet = reader.ReadReference <DataSet>(this);
                    break;

                case MemberName.SortExpressionScope:
                    this.m_sortExpressionScope = reader.ReadReference <ISortFilterScope>(this);
                    break;

                case MemberName.GroupsInSortTarget:
                    this.m_groupsInSortTarget = reader.ReadListOfReferences <GroupingList, Grouping>(this);
                    break;

                case MemberName.SortTarget:
                    this.m_sortTarget = reader.ReadReference <ISortFilterScope>(this);
                    break;

                case MemberName.SortExpressionIndex:
                    this.m_sortExpressionIndex = reader.ReadInt32();
                    break;

                case MemberName.DetailScopeSubReports:
                    this.m_detailScopeSubReports = reader.ReadGenericListOfReferences <SubReport>(this);
                    break;

                default:
                    Global.Tracer.Assert(false);
                    break;
                }
            }
        }
예제 #12
0
 public bool PopulateRuntimeSortFilterEventInfo(OnDemandProcessingContext odpContext, AspNetCore.ReportingServices.ReportIntermediateFormat.DataSet myDataSet)
 {
     if (odpContext.TopLevelContext.UserSortFilterInfo != null && odpContext.TopLevelContext.UserSortFilterInfo.OdpSortInfo != null && odpContext.TopLevelContext.OldSortFilterEventInfo != null)
     {
         if (-1 != this.m_dataSetGlobalID)
         {
             return(false);
         }
         this.m_runtimeSortFilterInfo = null;
         EventInformation.OdpSortEventInfo odpSortInfo = odpContext.TopLevelContext.UserSortFilterInfo.OdpSortInfo;
         for (int i = 0; i < odpSortInfo.Count; i++)
         {
             string uniqueNameAt = odpSortInfo.GetUniqueNameAt(i);
             AspNetCore.ReportingServices.ReportIntermediateFormat.SortFilterEventInfo sortFilterEventInfo = odpContext.TopLevelContext.OldSortFilterEventInfo[uniqueNameAt];
             if (sortFilterEventInfo != null && sortFilterEventInfo.EventSource.UserSort != null)
             {
                 int num = sortFilterEventInfo.EventSource.UserSort.SubReportDataSetGlobalId;
                 if (-1 == num)
                 {
                     num = sortFilterEventInfo.EventSource.UserSort.DataSet.GlobalID;
                 }
                 if (num == myDataSet.GlobalID)
                 {
                     if (this.m_runtimeSortFilterInfo == null)
                     {
                         this.m_runtimeSortFilterInfo = new List <IReference <RuntimeSortFilterEventInfo> >();
                     }
                     RuntimeSortFilterEventInfo runtimeSortFilterEventInfo = new RuntimeSortFilterEventInfo(sortFilterEventInfo.EventSource, uniqueNameAt, odpSortInfo.GetSortDirectionAt(i), sortFilterEventInfo.EventSourceScopeInfo, odpContext, (this.m_currentContainingScope == null) ? 1 : this.m_currentContainingScope.Value().Depth);
                     runtimeSortFilterEventInfo.SelfReference.UnPinValue();
                     this.m_runtimeSortFilterInfo.Add(runtimeSortFilterEventInfo.SelfReference);
                 }
             }
         }
         if (this.m_runtimeSortFilterInfo != null)
         {
             int count = this.m_runtimeSortFilterInfo.Count;
             for (int j = 0; j < count; j++)
             {
                 IReference <RuntimeSortFilterEventInfo> reference = this.m_runtimeSortFilterInfo[j];
                 using (reference.PinValue())
                 {
                     RuntimeSortFilterEventInfo runtimeSortFilterEventInfo2 = reference.Value();
                     IInScopeEventSource        eventSource = runtimeSortFilterEventInfo2.EventSource;
                     AspNetCore.ReportingServices.ReportIntermediateFormat.ISortFilterScope sortExpressionScope = eventSource.UserSort.SortExpressionScope;
                     if (sortExpressionScope != null)
                     {
                         sortExpressionScope.IsSortFilterExpressionScope = this.SetSortFilterInfo(sortExpressionScope.IsSortFilterExpressionScope, count, j);
                     }
                     AspNetCore.ReportingServices.ReportIntermediateFormat.ISortFilterScope sortTarget = eventSource.UserSort.SortTarget;
                     if (sortTarget != null)
                     {
                         sortTarget.IsSortFilterTarget = this.SetSortFilterInfo(sortTarget.IsSortFilterTarget, count, j);
                     }
                     if (eventSource.ContainingScopes != null && 0 < eventSource.ContainingScopes.Count)
                     {
                         int num2 = 0;
                         int num3 = 0;
                         for (int k = 0; k < eventSource.ContainingScopes.Count; k++)
                         {
                             AspNetCore.ReportingServices.ReportIntermediateFormat.Grouping grouping = eventSource.ContainingScopes[k];
                             if (grouping == null || !grouping.IsDetail)
                             {
                                 List <object> list = runtimeSortFilterEventInfo2.SortSourceScopeInfo[num2];
                                 if (grouping != null)
                                 {
                                     if (grouping.SortFilterScopeInfo == null)
                                     {
                                         grouping.SortFilterScopeInfo = new List <object> [count];
                                         for (int l = 0; l < count; l++)
                                         {
                                             grouping.SortFilterScopeInfo[l] = null;
                                         }
                                         grouping.SortFilterScopeIndex = new int[count];
                                         for (int m = 0; m < count; m++)
                                         {
                                             grouping.SortFilterScopeIndex[m] = -1;
                                         }
                                     }
                                     grouping.SortFilterScopeInfo[j]  = list;
                                     grouping.SortFilterScopeIndex[j] = num2;
                                 }
                                 else
                                 {
                                     List <AspNetCore.ReportingServices.ReportIntermediateFormat.SubReport> detailScopeSubReports = eventSource.UserSort.DetailScopeSubReports;
                                     AspNetCore.ReportingServices.ReportIntermediateFormat.ReportItem       reportItem            = (detailScopeSubReports == null || num3 >= detailScopeSubReports.Count) ? eventSource.Parent : detailScopeSubReports[num3++].Parent;
                                     while (reportItem != null && !reportItem.IsDataRegion)
                                     {
                                         reportItem = reportItem.Parent;
                                     }
                                     Global.Tracer.Assert(reportItem.IsDataRegion, "(parent.IsDataRegion)");
                                     AspNetCore.ReportingServices.ReportIntermediateFormat.DataRegion dataRegion = (AspNetCore.ReportingServices.ReportIntermediateFormat.DataRegion)reportItem;
                                     if (dataRegion.SortFilterSourceDetailScopeInfo == null)
                                     {
                                         dataRegion.SortFilterSourceDetailScopeInfo = new int[count];
                                         for (int n = 0; n < count; n++)
                                         {
                                             dataRegion.SortFilterSourceDetailScopeInfo[n] = -1;
                                         }
                                     }
                                     Global.Tracer.Assert(list != null && 1 == list.Count, "(null != scopeValues && 1 == scopeValues.Count)");
                                     dataRegion.SortFilterSourceDetailScopeInfo[j] = (int)list[0];
                                 }
                                 num2++;
                             }
                         }
                     }
                     AspNetCore.ReportingServices.ReportIntermediateFormat.GroupingList groupsInSortTarget = eventSource.UserSort.GroupsInSortTarget;
                     if (groupsInSortTarget != null)
                     {
                         for (int num5 = 0; num5 < groupsInSortTarget.Count; num5++)
                         {
                             groupsInSortTarget[num5].NeedScopeInfoForSortFilterExpression = this.SetSortFilterInfo(groupsInSortTarget[num5].NeedScopeInfoForSortFilterExpression, count, j);
                         }
                     }
                     List <int> peerSortFilters = eventSource.GetPeerSortFilters(false);
                     if (peerSortFilters != null && peerSortFilters.Count != 0)
                     {
                         if (runtimeSortFilterEventInfo2.PeerSortFilters == null)
                         {
                             runtimeSortFilterEventInfo2.PeerSortFilters = new Hashtable();
                         }
                         for (int num6 = 0; num6 < peerSortFilters.Count; num6++)
                         {
                             if (eventSource.ID != peerSortFilters[num6])
                             {
                                 runtimeSortFilterEventInfo2.PeerSortFilters.Add(peerSortFilters[num6], null);
                             }
                         }
                     }
                 }
             }
         }
         return(true);
     }
     return(false);
 }
예제 #13
0
        public override void Deserialize(IntermediateFormatReader reader)
        {
            base.Deserialize(reader);
            reader.RegisterDeclaration(SubReport.m_Declaration);
            while (reader.NextMember())
            {
                switch (reader.CurrentMember.MemberName)
                {
                case MemberName.Parameters:
                    this.m_parameters = reader.ReadGenericListOfRIFObjects <ParameterValue>();
                    break;

                case MemberName.NoRowsMessage:
                    this.m_noRowsMessage = (ExpressionInfo)reader.ReadRIFObject();
                    break;

                case MemberName.MergeTransactions:
                    this.m_mergeTransactions = reader.ReadBoolean();
                    break;

                case MemberName.ContainingScopes:
                    if (reader.ReadListOfReferencesNoResolution(this) == 0)
                    {
                        this.m_containingScopes = new GroupingList();
                    }
                    break;

                case MemberName.IsTablixCellScope:
                    this.m_isTablixCellScope = reader.ReadBoolean();
                    break;

                case MemberName.ReportName:
                    this.m_reportName = reader.ReadString();
                    break;

                case MemberName.OmitBorderOnPageBreak:
                    this.m_omitBorderOnPageBreak = reader.ReadBoolean();
                    break;

                case MemberName.KeepTogether:
                    this.m_keepTogether = reader.ReadBoolean();
                    break;

                case MemberName.Location:
                    this.m_location = (AspNetCore.ReportingServices.ReportPublishing.LocationFlags)reader.ReadEnum();
                    break;

                case MemberName.IndexInCollection:
                    this.m_indexInCollection = reader.ReadInt32();
                    break;

                case MemberName.ContainingSection:
                    this.m_containingSection = reader.ReadReference <ReportSection>(this);
                    break;

                default:
                    Global.Tracer.Assert(false);
                    break;
                }
            }
        }
예제 #14
0
        public override void Deserialize(IntermediateFormatReader reader)
        {
            base.Deserialize(reader);
            reader.RegisterDeclaration(TextBox.m_Declaration);
            while (reader.NextMember())
            {
                switch (reader.CurrentMember.MemberName)
                {
                case MemberName.Paragraphs:
                    this.m_paragraphs = reader.ReadGenericListOfRIFObjects <Paragraph>();
                    break;

                case MemberName.Value:
                {
                    TextRun        orCreateSingleTextRun2 = this.GetOrCreateSingleTextRun(reader);
                    ExpressionInfo expressionInfo         = (ExpressionInfo)reader.ReadRIFObject();
                    this.m_hasValue = true;
                    this.m_hasExpressionBasedValue = expressionInfo.IsExpression;
                    orCreateSingleTextRun2.Value   = expressionInfo;
                    if (base.m_styleClass != null)
                    {
                        orCreateSingleTextRun2.Paragraph.StyleClass = new ParagraphFilteredStyle(base.m_styleClass);
                        orCreateSingleTextRun2.StyleClass           = new TextRunFilteredStyle(base.m_styleClass);
                        base.m_styleClass = new TextBoxFilteredStyle(base.m_styleClass);
                    }
                    break;
                }

                case MemberName.CanScrollVertically:
                    this.m_canScrollVertically = reader.ReadBoolean();
                    break;

                case MemberName.CanGrow:
                    this.m_canGrow = reader.ReadBoolean();
                    break;

                case MemberName.CanShrink:
                    this.m_canShrink = reader.ReadBoolean();
                    break;

                case MemberName.HideDuplicates:
                    this.m_hideDuplicates = reader.ReadString();
                    break;

                case MemberName.Action:
                    this.m_action = (Action)reader.ReadRIFObject();
                    break;

                case MemberName.IsToggle:
                    this.m_isToggle = reader.ReadBoolean();
                    break;

                case MemberName.InitialToggleState:
                    this.m_initialToggleState = (ExpressionInfo)reader.ReadRIFObject();
                    break;

                case MemberName.ValueReferenced:
                    this.m_valueReferenced = reader.ReadBoolean();
                    break;

                case MemberName.TextRunValueReferenced:
                    this.m_textRunValueReferenced = reader.ReadBoolean();
                    break;

                case MemberName.RecursiveSender:
                    this.m_recursiveSender = reader.ReadBoolean();
                    break;

                case MemberName.DataElementStyleAttribute:
                    this.m_dataElementStyleAttribute = reader.ReadBoolean();
                    break;

                case MemberName.ContainingScopes:
                    if (reader.ReadListOfReferencesNoResolution(this) == 0)
                    {
                        this.m_containingScopes = new GroupingList();
                    }
                    break;

                case MemberName.UserSort:
                    this.m_userSort = (EndUserSort)reader.ReadRIFObject();
                    break;

                case MemberName.IsTablixCellScope:
                    this.m_isTablixCellScope = reader.ReadBoolean();
                    break;

                case MemberName.IsSubReportTopLevelScope:
                    this.m_isSubReportTopLevelScope = reader.ReadBoolean();
                    break;

                case MemberName.DataType:
                {
                    TextRun orCreateSingleTextRun = this.GetOrCreateSingleTextRun(reader);
                    orCreateSingleTextRun.DataType = (DataType)reader.ReadEnum();
                    break;
                }

                case MemberName.KeepTogether:
                    this.m_keepTogether = reader.ReadBoolean();
                    break;

                case MemberName.SequenceID:
                    this.m_sequenceID = reader.ReadInt32();
                    break;

                case MemberName.RecursiveMember:
                    this.m_recursiveMember = reader.ReadReference <TablixMember>(this);
                    break;

                case MemberName.HasExpressionBasedValue:
                    this.m_hasExpressionBasedValue = reader.ReadBoolean();
                    break;

                case MemberName.HasValue:
                    this.m_hasValue = reader.ReadBoolean();
                    break;

                case MemberName.IsSimple:
                    this.m_isSimple = reader.ReadBoolean();
                    break;

                case MemberName.HasNonRecursiveSender:
                    this.m_hasNonRecursiveSender = reader.ReadBoolean();
                    break;

                default:
                    Global.Tracer.Assert(false);
                    break;
                }
            }
        }