/// <summary> /// Initializes a new instance of the <see cref="FormulaRecordAggregate"/> class. /// </summary> /// <param name="formulaRec">The formula rec.</param> /// <param name="stringRec">The string rec.</param> /// <param name="svm">The SVM.</param> public FormulaRecordAggregate(FormulaRecord formulaRec, StringRecord stringRec, SharedValueManager svm) { if (svm == null) { throw new ArgumentException("sfm must not be null"); } bool hasStringRec = stringRec != null; bool hasCachedStringFlag = formulaRec.HasCachedResultString; if (hasStringRec != hasCachedStringFlag) { throw new RecordFormatException("String record was " + (hasStringRec ? "" : "not ") + " supplied but formula record flag is " + (hasCachedStringFlag ? "" : "not ") + " set"); } if (formulaRec.IsSharedFormula) { svm.ConvertSharedFormulaRecord(formulaRec); } _formulaRecord = formulaRec; _sharedValueManager = svm; _stringRecord = stringRec; }
public void Construct(CellValueRecordInterface rec, RecordStream rs, SharedValueManager sfh) { if (rec is FormulaRecord) { FormulaRecord formulaRec = (FormulaRecord)rec; if (formulaRec.IsSharedFormula) { sfh.ConvertSharedFormulaRecord(formulaRec); } // read optional cached text value StringRecord cachedText=null; Type nextClass = rs.PeekNextClass(); if (nextClass == typeof(StringRecord)) { cachedText = (StringRecord)rs.GetNext(); } else { cachedText = null; } InsertCell(new FormulaRecordAggregate(formulaRec, cachedText, sfh)); } else { InsertCell(rec); } }