@Override protected void serializeValue(LittleEndianOutput out) { if (specialCachedValue == null) { out.writeDouble(field_4_value); } else { specialCachedValue.serialize(out); } out.writeShort(getOptions()); out.writeInt( field_6_zero); // may as well write original data back so as to minimise differences from // original field_8_parsed_expr.serialize(out); }
public FormulaRecord(RecordInputStream ris) { super(ris); LittleEndianInput in = ris; long valueLongBits = in.readLong(); field_5_options = in.readShort(); specialCachedValue = SpecialCachedValue.create(valueLongBits); if (specialCachedValue == null) { field_4_value = Double.longBitsToDouble(valueLongBits); } field_6_zero = in.readInt(); int field_7_expression_len = in.readShort(); // this length does not include any extra array data int nBytesAvailable = in.available(); field_8_parsed_expr = Formula.read(field_7_expression_len, in, nBytesAvailable); }
@Override protected void appendValueText(StringBuilder sb) { sb.append(" .value = "); if (specialCachedValue == null) { sb.append(field_4_value).append("\n"); } else { sb.append(specialCachedValue.formatDebugString()).append("\n"); } sb.append(" .options = ").append(HexDump.shortToHex(getOptions())).append("\n"); sb.append(" .alwaysCalc= ").append(isAlwaysCalc()).append("\n"); sb.append(" .calcOnLoad= ").append(isCalcOnLoad()).append("\n"); sb.append(" .shared = ").append(isSharedFormula()).append("\n"); sb.append(" .zero = ").append(HexDump.intToHex(field_6_zero)).append("\n"); Ptg[] ptgs = field_8_parsed_expr.getTokens(); for (int k = 0; k < ptgs.length; k++) { if (k > 0) { sb.append("\n"); } sb.append(" Ptg[").append(k).append("]="); Ptg ptg = ptgs[k]; sb.append(ptg.toString()).append(ptg.getRVAType()); } }
public int getCachedErrorValue() { return specialCachedValue.getErrorValue(); }
public boolean getCachedBooleanValue() { return specialCachedValue.getBooleanValue(); }
public int getCachedResultType() { if (specialCachedValue == null) { return HSSFCell.CELL_TYPE_NUMERIC; } return specialCachedValue.getValueType(); }
/** * @return <code>true</code> if this {@link FormulaRecord} is followed by a {@link StringRecord} * representing the cached text result of the formula evaluation. */ public boolean hasCachedResultString() { if (specialCachedValue == null) { return false; } return specialCachedValue.getTypeCode() == SpecialCachedValue.STRING; }
public void setCachedResultBoolean(boolean value) { specialCachedValue = SpecialCachedValue.createCachedBoolean(value); }
public void setCachedResultErrorCode(int errorCode) { specialCachedValue = SpecialCachedValue.createCachedErrorCode(errorCode); }
public void setCachedResultTypeString() { specialCachedValue = SpecialCachedValue.createForString(); }
public void setCachedResultTypeEmptyString() { specialCachedValue = SpecialCachedValue.createCachedEmptyValue(); }