| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Text; |
| using OfficeOpenXml.FormulaParsing.ExcelUtilities; |
| |
| namespace OfficeOpenXml.FormulaParsing |
| { |
| /// <summary> |
| /// Represents a parsing of a single input or workbook addrses. |
| /// </summary> |
| public class ParsingScope : IDisposable |
| { |
| private readonly ParsingScopes _parsingScopes; |
| |
| public ParsingScope(ParsingScopes parsingScopes, RangeAddress address) |
| : this(parsingScopes, null, address) |
| { |
| } |
| |
| public ParsingScope(ParsingScopes parsingScopes, ParsingScope parent, RangeAddress address) |
| { |
| _parsingScopes = parsingScopes; |
| Parent = parent; |
| Address = address; |
| ScopeId = Guid.NewGuid(); |
| } |
| |
| /// <summary> |
| /// Id of the scope. |
| /// </summary> |
| public Guid ScopeId { get; private set; } |
| |
| /// <summary> |
| /// The calling scope. |
| /// </summary> |
| public ParsingScope Parent { get; private set; } |
| |
| /// <summary> |
| /// The address of the cell currently beeing parsed. |
| /// </summary> |
| public RangeAddress Address { get; private set; } |
| |
| /// <summary> |
| /// True if the current scope is a Subtotal function beeing executed. |
| /// </summary> |
| public bool IsSubtotal { get; set; } |
| |
| public void Dispose() |
| { |
| _parsingScopes.KillScope(this); |
| } |
| } |
| } |