@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);
 }
Example #10
0
 public void setCachedResultTypeString() {
   specialCachedValue = SpecialCachedValue.createForString();
 }
Example #11
0
 public void setCachedResultTypeEmptyString() {
   specialCachedValue = SpecialCachedValue.createCachedEmptyValue();
 }