| 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); | |
| } | |
| } | |
| } |