@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());
    }
  }
Example #4
0
 /**
  * Gets the {@link Ptg} array from the supplied {@link Formula}. Handles <code>null</code>s OK.
  *
  * @param formula may be <code>null</code>
  * @return possibly <code>null</code> (if the supplied <tt>formula</tt> is <code>null</code>)
  */
 public static Ptg[] getTokens(Formula formula) {
   if (formula == null) {
     return null;
   }
   return formula.getTokens();
 }
 @Override
 protected int getValueDataSize() {
   return FIXED_SIZE + field_8_parsed_expr.getEncodedSize();
 }
 public void setParsedExpression(Ptg[] ptgs) {
   field_8_parsed_expr = Formula.create(ptgs);
 }
 /** @return the formula tokens. never <code>null</code> */
 public Ptg[] getParsedExpression() {
   return field_8_parsed_expr.getTokens();
 }
 /** Creates new FormulaRecord */
 public FormulaRecord() {
   field_8_parsed_expr = Formula.create(Ptg.EMPTY_PTG_ARRAY);
 }