You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by jo...@apache.org on 2008/10/26 08:18:19 UTC
svn commit: r707945 [2/4] - in /poi/branches/ooxml: ./
src/contrib/src/org/apache/poi/contrib/poibrowser/
src/java/org/apache/poi/hssf/model/ src/java/org/apache/poi/hssf/record/
src/java/org/apache/poi/hssf/record/constant/ src/java/org/apache/poi/hss...
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/AreaPtgBase.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/AreaPtgBase.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/AreaPtgBase.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/AreaPtgBase.java Sun Oct 26 00:18:17 2008
@@ -17,12 +17,12 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* Specifies a rectangular area of cells A1:A4 for instance.
@@ -46,7 +46,7 @@
private int field_3_first_column;
/** zero based, unsigned 8 bit */
private int field_4_last_column;
-
+
private final static BitField rowRelative = BitFieldFactory.getInstance(0x8000);
private final static BitField colRelative = BitFieldFactory.getInstance(0x4000);
private final static BitField columnMask = BitFieldFactory.getInstance(0x3FFF);
@@ -54,7 +54,7 @@
protected AreaPtgBase() {
// do nothing
}
-
+
protected AreaPtgBase(String arearef) {
AreaReference ar = new AreaReference(arearef);
CellReference firstCell = ar.getFirstCell();
@@ -66,17 +66,17 @@
setFirstColRelative(!firstCell.isColAbsolute());
setLastColRelative(!lastCell.isColAbsolute());
setFirstRowRelative(!firstCell.isRowAbsolute());
- setLastRowRelative(!lastCell.isRowAbsolute());
+ setLastRowRelative(!lastCell.isRowAbsolute());
}
-
+
protected AreaPtgBase(int firstRow, int lastRow, int firstColumn, int lastColumn,
boolean firstRowRelative, boolean lastRowRelative, boolean firstColRelative, boolean lastColRelative) {
-
+
checkColumnBounds(firstColumn);
checkColumnBounds(lastColumn);
checkRowBounds(firstRow);
checkRowBounds(lastRow);
-
+
if (lastRow > firstRow) {
setFirstRow(firstRow);
setLastRow(lastRow);
@@ -88,7 +88,7 @@
setFirstRowRelative(lastRowRelative);
setLastRowRelative(firstRowRelative);
}
-
+
if (lastColumn > firstColumn) {
setFirstColumn(firstColumn);
setLastColumn(lastColumn);
@@ -100,7 +100,7 @@
setFirstColRelative(lastColRelative);
setLastColRelative(firstColRelative);
}
- }
+ }
private static void checkColumnBounds(int colIx) {
if((colIx & 0x0FF) != colIx) {
@@ -113,17 +113,17 @@
}
}
- protected final void readCoordinates(RecordInputStream in) {
+ protected final void readCoordinates(LittleEndianInput in) {
field_1_first_row = in.readUShort();
field_2_last_row = in.readUShort();
field_3_first_column = in.readUShort();
field_4_last_column = in.readUShort();
}
- protected final void writeCoordinates(byte[] array, int offset) {
- LittleEndian.putUShort(array, offset + 0, field_1_first_row);
- LittleEndian.putUShort(array, offset + 2, field_2_last_row);
- LittleEndian.putUShort(array, offset + 4, field_3_first_column);
- LittleEndian.putUShort(array, offset + 6, field_4_last_column);
+ protected final void writeCoordinates(LittleEndianOutput out) {
+ out.writeShort(field_1_first_row);
+ out.writeShort(field_2_last_row);
+ out.writeShort(field_3_first_column);
+ out.writeShort(field_4_last_column);
}
/**
@@ -150,7 +150,7 @@
}
/**
- * @param rowIx last row number in the area
+ * @param rowIx last row number in the area
*/
public final void setLastRow(int rowIx) {
checkRowBounds(rowIx);
@@ -177,7 +177,7 @@
public final boolean isFirstRowRelative() {
return rowRelative.isSet(field_3_first_column);
}
-
+
/**
* sets the first row to relative or not
* @param rel is relative or not.
@@ -192,9 +192,9 @@
public final boolean isFirstColRelative() {
return colRelative.isSet(field_3_first_column);
}
-
+
/**
- * set whether the first column is relative
+ * set whether the first column is relative
*/
public final void setFirstColRelative(boolean rel) {
field_3_first_column=colRelative.setBoolean(field_3_first_column,rel);
@@ -235,7 +235,7 @@
public final boolean isLastRowRelative() {
return rowRelative.isSet(field_4_last_column);
}
-
+
/**
* set whether the last row is relative or not
* @param rel <code>true</code> if the last row relative, else
@@ -251,14 +251,14 @@
public final boolean isLastColRelative() {
return colRelative.isSet(field_4_last_column);
}
-
+
/**
* set whether the last column should be relative or not
*/
public final void setLastColRelative(boolean rel) {
field_4_last_column=colRelative.setBoolean(field_4_last_column,rel);
}
-
+
/**
* set the last column in the area
*/
@@ -276,13 +276,13 @@
protected final String formatReferenceAsString() {
CellReference topLeft = new CellReference(getFirstRow(),getFirstColumn(),!isFirstRowRelative(),!isFirstColRelative());
CellReference botRight = new CellReference(getLastRow(),getLastColumn(),!isLastRowRelative(),!isLastColRelative());
-
+
if(AreaReference.isWholeColumnReference(topLeft, botRight)) {
return (new AreaReference(topLeft, botRight)).formatAsString();
}
- return topLeft.formatAsString() + ":" + botRight.formatAsString();
+ return topLeft.formatAsString() + ":" + botRight.formatAsString();
}
-
+
public String toFormulaString() {
return formatReferenceAsString();
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java Sun Oct 26 00:18:17 2008
@@ -17,11 +17,11 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.hssf.record.UnicodeString;
import org.apache.poi.hssf.record.constant.ConstantValueParser;
import org.apache.poi.hssf.record.constant.ErrorConstant;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* ArrayPtg - handles arrays
@@ -54,7 +54,7 @@
private short token_2_rows;
private Object[] token_3_arrayValues;
- public ArrayPtg(RecordInputStream in) {
+ public ArrayPtg(LittleEndianInput in) {
field_1_reserved = new byte[RESERVED_FIELD_LEN];
// TODO - add readFully method to RecordInputStream
for(int i=0; i< RESERVED_FIELD_LEN; i++) {
@@ -108,7 +108,7 @@
* AFTER the last Ptg in the expression.
* See page 304-305 of Excel97-2007BinaryFileFormat(xls)Specification.pdf
*/
- public void readTokenValues(RecordInputStream in) {
+ public void readTokenValues(LittleEndianInput in) {
int nColumns = in.readUByte();
short nRows = in.readShort();
//The token_1_columns and token_2_rows do not follow the documentation.
@@ -132,7 +132,7 @@
if (token_3_arrayValues == null) {
sb.append(" #values#uninitialised#\n");
} else {
- sb.append(" ").append(formatAsString());
+ sb.append(" ").append(toFormulaString());
}
return sb.toString();
}
@@ -153,17 +153,16 @@
return rowIx * token_1_columns + colIx;
}
- public void writeBytes(byte[] data, int offset) {
-
- LittleEndian.putByte(data, offset + 0, sid + getPtgClass());
- System.arraycopy(field_1_reserved, 0, data, offset+1, RESERVED_FIELD_LEN);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.write(field_1_reserved);
}
- public int writeTokenValueBytes(byte[] data, int offset) {
+ public int writeTokenValueBytes(LittleEndianOutput out) {
- LittleEndian.putByte(data, offset + 0, token_1_columns-1);
- LittleEndian.putUShort(data, offset + 1, token_2_rows-1);
- ConstantValueParser.encode(data, offset + 3, token_3_arrayValues);
+ out.writeByte(token_1_columns-1);
+ out.writeShort(token_2_rows-1);
+ ConstantValueParser.encode(out, token_3_arrayValues);
return 3 + ConstantValueParser.getEncodedSize(token_3_arrayValues);
}
@@ -183,7 +182,7 @@
+ ConstantValueParser.getEncodedSize(token_3_arrayValues);
}
- public String formatAsString() { // TODO - fold into toFormulaString
+ public String toFormulaString() {
StringBuffer b = new StringBuffer();
b.append("{");
for (int y=0;y<getRowCount();y++) {
@@ -201,9 +200,6 @@
b.append("}");
return b.toString();
}
- public String toFormulaString() {
- return formatAsString();
- }
private static String getConstantText(Object o) {
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java Sun Oct 26 00:18:17 2008
@@ -17,10 +17,11 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* "Special Attributes"
@@ -78,7 +79,7 @@
_chooseFuncOffset = -1;
}
- public AttrPtg(RecordInputStream in)
+ public AttrPtg(LittleEndianInput in)
{
field_1_options = in.readByte();
field_2_data = in.readShort();
@@ -213,19 +214,16 @@
return sb.toString();
}
- public void writeBytes(byte [] array, int offset)
- {
- LittleEndian.putByte(array, offset+0, sid);
- LittleEndian.putByte(array, offset+1, field_1_options);
- LittleEndian.putShort(array,offset+2, field_2_data);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeByte(field_1_options);
+ out.writeShort(field_2_data);
int[] jt = _jumpTable;
if (jt != null) {
- int joff = offset+4;
for (int i = 0; i < jt.length; i++) {
- LittleEndian.putUShort(array, joff, jt[i]);
- joff+=2;
+ out.writeShort(jt[i]);
}
- LittleEndian.putUShort(array, joff, _chooseFuncOffset);
+ out.writeShort(_chooseFuncOffset);
}
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java Sun Oct 26 00:18:17 2008
@@ -17,42 +17,43 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
- * Boolean (boolean)
- * Stores a (java) boolean value in a formula.
+ * Boolean (boolean) Stores a (java) boolean value in a formula.
+ *
* @author Paul Krause (pkrause at soundbite dot com)
* @author Andrew C. Oliver (acoliver at apache dot org)
* @author Jason Height (jheight at chariot dot net dot au)
*/
public final class BoolPtg extends ScalarConstantPtg {
- public final static int SIZE = 2;
- public final static byte sid = 0x1d;
- private final boolean _value;
-
- public BoolPtg(RecordInputStream in) {
- _value = (in.readByte() == 1);
- }
-
- public BoolPtg(String formulaToken) {
- _value = (formulaToken.equalsIgnoreCase("TRUE"));
- }
-
- public boolean getValue() {
- return _value;
- }
-
- public void writeBytes(byte [] array, int offset) {
- array[ offset + 0 ] = sid;
- array[ offset + 1 ] = (byte) (_value ? 1 : 0);
- }
-
- public int getSize() {
- return SIZE;
- }
-
- public String toFormulaString() {
- return _value ? "TRUE" : "FALSE";
- }
+ public final static int SIZE = 2;
+ public final static byte sid = 0x1D;
+ private final boolean _value;
+
+ public BoolPtg(LittleEndianInput in) {
+ _value = (in.readByte() == 1);
+ }
+
+ public BoolPtg(String formulaToken) {
+ _value = (formulaToken.equalsIgnoreCase("TRUE"));
+ }
+
+ public boolean getValue() {
+ return _value;
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeByte(_value ? 1 : 0);
+ }
+
+ public int getSize() {
+ return SIZE;
+ }
+
+ public String toFormulaString() {
+ return _value ? "TRUE" : "FALSE";
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/DeletedArea3DPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/DeletedArea3DPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/DeletedArea3DPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/DeletedArea3DPtg.java Sun Oct 26 00:18:17 2008
@@ -17,11 +17,11 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
-import org.apache.poi.ss.formula.WorkbookDependentFormula;
import org.apache.poi.ss.formula.FormulaRenderingWorkbook;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.ss.formula.WorkbookDependentFormula;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* Title: Deleted Area 3D Ptg - 3D referecnce (Sheet + Area)<P>
@@ -42,7 +42,7 @@
unused2 = 0;
}
- public DeletedArea3DPtg(RecordInputStream in) {
+ public DeletedArea3DPtg(LittleEndianInput in) {
field_1_index_extern_sheet = in.readUShort();
unused1 = in.readInt();
unused2 = in.readInt();
@@ -60,10 +60,10 @@
public int getSize() {
return 11;
}
- public void writeBytes(byte[] data, int offset) {
- LittleEndian.putByte(data, 0 + offset, sid + getPtgClass());
- LittleEndian.putUShort(data, 1 + offset, field_1_index_extern_sheet);
- LittleEndian.putInt(data, 3 + offset, unused1);
- LittleEndian.putInt(data, 7 + offset, unused2);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeShort(field_1_index_extern_sheet);
+ out.writeInt(unused1);
+ out.writeInt(unused2);
}
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/DeletedRef3DPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/DeletedRef3DPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/DeletedRef3DPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/DeletedRef3DPtg.java Sun Oct 26 00:18:17 2008
@@ -18,11 +18,11 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
-import org.apache.poi.ss.formula.WorkbookDependentFormula;
import org.apache.poi.ss.formula.FormulaRenderingWorkbook;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.ss.formula.WorkbookDependentFormula;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* Title: Deleted Reference 3D Ptg <P>
@@ -37,7 +37,7 @@
private final int unused1;
/** Creates new DeletedRef3DPtg */
- public DeletedRef3DPtg(RecordInputStream in) {
+ public DeletedRef3DPtg(LittleEndianInput in) {
field_1_index_extern_sheet = in.readUShort();
unused1 = in.readInt();
}
@@ -60,9 +60,9 @@
public int getSize() {
return 7;
}
- public void writeBytes(byte[] data, int offset) {
- LittleEndian.putByte(data, 0 + offset, sid + getPtgClass());
- LittleEndian.putUShort(data, 1 + offset, field_1_index_extern_sheet);
- LittleEndian.putInt(data, 3 + offset, unused1);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeShort(field_1_index_extern_sheet);
+ out.writeInt(unused1);
}
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ErrPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ErrPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ErrPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ErrPtg.java Sun Oct 26 00:18:17 2008
@@ -17,8 +17,9 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* @author Daniel Noll (daniel at nuix dot com dot au)
@@ -57,14 +58,13 @@
field_1_error_code = errorCode;
}
- public static ErrPtg read(RecordInputStream in) {
+ public static ErrPtg read(LittleEndianInput in) {
return valueOf(in.readByte());
}
- public void writeBytes(byte [] array, int offset)
- {
- array[offset] = (byte) (sid + getPtgClass());
- array[offset + 1] = (byte)field_1_error_code;
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeByte(field_1_error_code);
}
public String toFormulaString() {
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java Sun Oct 26 00:18:17 2008
@@ -18,8 +18,8 @@
package org.apache.poi.hssf.record.formula;
import org.apache.poi.hssf.record.RecordFormatException;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
*
@@ -33,42 +33,41 @@
private final short field_1_first_row;
private final short field_2_first_col;
- public ExpPtg(RecordInputStream in)
+ public ExpPtg(LittleEndianInput in)
{
field_1_first_row = in.readShort();
field_2_first_col = in.readShort();
}
-
- public void writeBytes(byte [] array, int offset)
- {
- array[offset+0]= (byte) (sid);
- LittleEndian.putShort(array,offset+1,field_1_first_row);
- LittleEndian.putShort(array,offset+3,field_2_first_col);
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeShort(field_1_first_row);
+ out.writeShort(field_2_first_col);
}
public int getSize()
{
return SIZE;
}
-
+
public short getRow() {
return field_1_first_row;
}
public short getColumn() {
return field_2_first_col;
- }
+ }
public String toFormulaString()
{
throw new RecordFormatException("Coding Error: Expected ExpPtg to be converted from Shared to Non-Shared Formula by ValueRecordsAggregate, but it wasn't");
}
-
+
public String toString()
{
StringBuffer buffer = new StringBuffer("[Array Formula or Shared Formula]\n");
buffer.append("row = ").append(getRow()).append("\n");
buffer.append("col = ").append(getColumn()).append("\n");
return buffer.toString();
- }
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java Sun Oct 26 00:18:17 2008
@@ -16,10 +16,10 @@
==================================================================== */
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.hssf.record.formula.function.FunctionMetadata;
import org.apache.poi.hssf.record.formula.function.FunctionMetadataRegistry;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* @author aviks
@@ -35,7 +35,7 @@
/**Creates new function pointer from a byte array
* usually called while reading an excel file.
*/
- public FuncPtg(RecordInputStream in) {
+ public FuncPtg(LittleEndianInput in) {
//field_1_num_args = data[ offset + 0 ];
field_2_fnc_index = in.readShort();
@@ -55,9 +55,9 @@
paramClass = fm.getParameterClassCodes();
}
- public void writeBytes(byte[] array, int offset) {
- array[offset+0]= (byte) (sid + getPtgClass());
- LittleEndian.putShort(array,offset+1,field_2_fnc_index);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeShort(field_2_fnc_index);
}
public int getNumberOfOperands() {
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java Sun Oct 26 00:18:17 2008
@@ -16,10 +16,10 @@
==================================================================== */
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.hssf.record.formula.function.FunctionMetadata;
import org.apache.poi.hssf.record.formula.function.FunctionMetadataRegistry;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
*
@@ -33,7 +33,7 @@
/**Creates new function pointer from a byte array
* usually called while reading an excel file.
*/
- public FuncVarPtg(RecordInputStream in) {
+ public FuncVarPtg(LittleEndianInput in) {
field_1_num_args = in.readByte();
field_2_fnc_index = in.readShort();
FunctionMetadata fm = FunctionMetadataRegistry.getFunctionByIndex(field_2_fnc_index);
@@ -64,10 +64,10 @@
}
}
- public void writeBytes(byte[] array, int offset) {
- array[offset+0]=(byte) (sid + getPtgClass());
- array[offset+1]=field_1_num_args;
- LittleEndian.putShort(array,offset+2,field_2_fnc_index);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeByte(field_1_num_args);
+ out.writeShort(field_2_fnc_index);
}
public int getNumberOfOperands() {
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/IntPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/IntPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/IntPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/IntPtg.java Sun Oct 26 00:18:17 2008
@@ -17,58 +17,60 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
- * Integer (unsigned short integer)
- * Stores an unsigned short value (java int) in a formula
- * @author Andrew C. Oliver (acoliver at apache dot org)
+ * Integer (unsigned short integer) Stores an unsigned short value (java int) in
+ * a formula
+ *
+ * @author Andrew C. Oliver (acoliver at apache dot org)
* @author Jason Height (jheight at chariot dot net dot au)
*/
public final class IntPtg extends ScalarConstantPtg {
- // 16 bit unsigned integer
- private static final int MIN_VALUE = 0x0000;
- private static final int MAX_VALUE = 0xFFFF;
-
- /**
- * Excel represents integers 0..65535 with the tInt token.
- * @return <code>true</code> if the specified value is within the range of values
- * <tt>IntPtg</tt> can represent.
- */
- public static boolean isInRange(int i) {
- return i>=MIN_VALUE && i <=MAX_VALUE;
- }
-
- public final static int SIZE = 3;
- public final static byte sid = 0x1e;
- private final int field_1_value;
-
- public IntPtg(RecordInputStream in) {
- this(in.readUShort());
- }
-
- public IntPtg(int value) {
- if(!isInRange(value)) {
- throw new IllegalArgumentException("value is out of range: " + value);
- }
- field_1_value = value;
- }
-
- public int getValue() {
- return field_1_value;
- }
-
- public void writeBytes(byte [] array, int offset) {
- array[ offset + 0 ] = sid;
- LittleEndian.putUShort(array, offset + 1, getValue());
- }
-
- public int getSize() {
- return SIZE;
- }
-
- public String toFormulaString() {
- return String.valueOf(getValue());
- }
+ // 16 bit unsigned integer
+ private static final int MIN_VALUE = 0x0000;
+ private static final int MAX_VALUE = 0xFFFF;
+
+ /**
+ * Excel represents integers 0..65535 with the tInt token.
+ *
+ * @return <code>true</code> if the specified value is within the range of values
+ * <tt>IntPtg</tt> can represent.
+ */
+ public static boolean isInRange(int i) {
+ return i >= MIN_VALUE && i <= MAX_VALUE;
+ }
+
+ public final static int SIZE = 3;
+ public final static byte sid = 0x1e;
+ private final int field_1_value;
+
+ public IntPtg(LittleEndianInput in) {
+ this(in.readUShort());
+ }
+
+ public IntPtg(int value) {
+ if (!isInRange(value)) {
+ throw new IllegalArgumentException("value is out of range: " + value);
+ }
+ field_1_value = value;
+ }
+
+ public int getValue() {
+ return field_1_value;
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeShort(getValue());
+ }
+
+ public int getSize() {
+ return SIZE;
+ }
+
+ public String toFormulaString() {
+ return String.valueOf(getValue());
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/IntersectionPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/IntersectionPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/IntersectionPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/IntersectionPtg.java Sun Oct 26 00:18:17 2008
@@ -17,54 +17,46 @@
package org.apache.poi.hssf.record.formula;
+import org.apache.poi.util.LittleEndianOutput;
/**
* @author Daniel Noll (daniel at nuix dot com dot au)
*/
public final class IntersectionPtg extends OperationPtg {
- public final static byte sid = 0x0f;
+ public final static byte sid = 0x0f;
- public static final OperationPtg instance = new IntersectionPtg();
-
- private IntersectionPtg() {
- // enforce singleton
- }
-
- public final boolean isBaseToken() {
- return true;
- }
-
- public int getSize()
- {
- return 1;
- }
-
- public void writeBytes( byte[] array, int offset )
- {
- array[ offset + 0 ] = sid;
- }
-
- /** Implementation of method from Ptg */
- public String toFormulaString()
- {
- return " ";
- }
-
-
- /** implementation of method from OperationsPtg*/
- public String toFormulaString(String[] operands)
- {
- StringBuffer buffer = new StringBuffer();
-
- buffer.append(operands[ 0 ]);
- buffer.append(" ");
- buffer.append(operands[ 1 ]);
- return buffer.toString();
- }
-
- public int getNumberOfOperands()
- {
- return 2;
- }
+ public static final OperationPtg instance = new IntersectionPtg();
+ private IntersectionPtg() {
+ // enforce singleton
+ }
+
+ public final boolean isBaseToken() {
+ return true;
+ }
+
+ public int getSize() {
+ return 1;
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ }
+
+ public String toFormulaString() {
+ return " ";
+ }
+
+ public String toFormulaString(String[] operands) {
+ StringBuffer buffer = new StringBuffer();
+
+ buffer.append(operands[0]);
+ buffer.append(" ");
+ buffer.append(operands[1]);
+ return buffer.toString();
+ }
+
+ public int getNumberOfOperands() {
+ return 2;
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemAreaPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemAreaPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemAreaPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemAreaPtg.java Sun Oct 26 00:18:17 2008
@@ -17,68 +17,45 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* @author Daniel Noll (daniel at nuix dot com dot au)
*/
public class MemAreaPtg extends OperandPtg {
- public final static short sid = 0x26;
- private final static int SIZE = 7;
- private int field_1_reserved;
- private short field_2_subex_len;
-
- /** Creates new MemAreaPtg */
-
- public MemAreaPtg()
- {
- }
-
- public MemAreaPtg(RecordInputStream in)
- {
- field_1_reserved = in.readInt();
- field_2_subex_len = in.readShort();
- }
-
- public void setReserved(int res)
- {
- field_1_reserved = res;
- }
-
- public int getReserved()
- {
- return field_1_reserved;
- }
-
- public void setSubexpressionLength(short subexlen)
- {
- field_2_subex_len = subexlen;
- }
-
- public short getSubexpressionLength()
- {
- return field_2_subex_len;
- }
-
- public void writeBytes(byte [] array, int offset)
- {
- array[offset] = (byte) (sid + getPtgClass());
- LittleEndian.putInt(array, offset + 1, field_1_reserved);
- LittleEndian.putShort(array, offset + 5, field_2_subex_len);
- }
-
- public int getSize()
- {
- return SIZE;
- }
-
- public String toFormulaString()
- {
- return ""; // TODO: Not sure how to format this. -- DN
- }
-
- public byte getDefaultOperandClass() {
- return Ptg.CLASS_VALUE;
- }
+ public final static short sid = 0x26;
+ private final static int SIZE = 7;
+ private final int field_1_reserved;
+ private final int field_2_subex_len;
+
+ /** Creates new MemAreaPtg */
+
+ public MemAreaPtg(int subexLen) {
+ field_1_reserved = 0;
+ field_2_subex_len = subexLen;
+ }
+
+ public MemAreaPtg(LittleEndianInput in) {
+ field_1_reserved = in.readInt();
+ field_2_subex_len = in.readShort();
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeInt(field_1_reserved);
+ out.writeShort(field_2_subex_len);
+ }
+
+ public int getSize() {
+ return SIZE;
+ }
+
+ public String toFormulaString() {
+ return ""; // TODO: Not sure how to format this. -- DN
+ }
+
+ public byte getDefaultOperandClass() {
+ return Ptg.CLASS_VALUE;
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java Sun Oct 26 00:18:17 2008
@@ -17,36 +17,41 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
- *
- * @author andy
+ *
+ * @author andy
* @author Jason Height (jheight at chariot dot net dot au)
* @author Daniel Noll (daniel at nuix dot com dot au)
*/
-
-public final class MemErrPtg extends MemAreaPtg {
- public final static short sid = 0x27;
-
- /** Creates new MemErrPtg */
-
- public MemErrPtg()
- {
- }
-
- public MemErrPtg(RecordInputStream in) {
- super(in);
- }
-
- public void writeBytes(byte [] array, int offset) {
- super.writeBytes(array, offset);
- array[offset] = (byte) (sid + getPtgClass());
- }
-
- public String toFormulaString()
- {
- return "ERR#";
- }
+public final class MemErrPtg extends OperandPtg {
+ public final static short sid = 0x27;
+ private final static int SIZE = 7;
+ private int field_1_reserved;
+ private short field_2_subex_len;
+
+ public MemErrPtg(LittleEndianInput in) {
+ field_1_reserved = in.readInt();
+ field_2_subex_len = in.readShort();
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeInt(field_1_reserved);
+ out.writeShort(field_2_subex_len);
+ }
+
+ public int getSize() {
+ return SIZE;
+ }
+
+ public String toFormulaString() {
+ return "ERR#";
+ }
+
+ public byte getDefaultOperandClass() {
+ return Ptg.CLASS_VALUE;
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java Sun Oct 26 00:18:17 2008
@@ -17,56 +17,51 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* @author Glen Stampoultzis (glens at apache.org)
*/
public final class MemFuncPtg extends OperandPtg {
- public final static byte sid = 0x29;
- private final int field_1_len_ref_subexpression;
+ public final static byte sid = 0x29;
+ private final int field_1_len_ref_subexpression;
- /**Creates new function pointer from a byte array
- * usually called while reading an excel file.
- */
- public MemFuncPtg(RecordInputStream in) {
- this(in.readUShort());
- }
-
- public MemFuncPtg(int subExprLen) {
- field_1_len_ref_subexpression = subExprLen;
- }
-
- public int getSize()
- {
- return 3;
- }
-
- public void writeBytes( byte[] array, int offset )
- {
- array[offset + 0] = sid ;
- LittleEndian.putUShort( array, offset + 1, field_1_len_ref_subexpression );
- }
-
- public String toFormulaString()
- {
- return "";
- }
-
- public byte getDefaultOperandClass()
- {
- return Ptg.CLASS_REF;
- }
-
- public int getNumberOfOperands()
- {
- return field_1_len_ref_subexpression;
- }
-
- public int getLenRefSubexpression()
- {
- return field_1_len_ref_subexpression;
- }
+ /**
+ * Creates new function pointer from a byte array usually called while
+ * reading an excel file.
+ */
+ public MemFuncPtg(LittleEndianInput in) {
+ this(in.readUShort());
+ }
+
+ public MemFuncPtg(int subExprLen) {
+ field_1_len_ref_subexpression = subExprLen;
+ }
+
+ public int getSize() {
+ return 3;
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeShort(field_1_len_ref_subexpression);
+ }
+
+ public String toFormulaString() {
+ return "";
+ }
+
+ public byte getDefaultOperandClass() {
+ return Ptg.CLASS_REF;
+ }
+
+ public int getNumberOfOperands() {
+ return field_1_len_ref_subexpression;
+ }
+
+ public int getLenRefSubexpression() {
+ return field_1_len_ref_subexpression;
+ }
}
\ No newline at end of file
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java Sun Oct 26 00:18:17 2008
@@ -17,32 +17,35 @@
package org.apache.poi.hssf.record.formula;
+import org.apache.poi.util.LittleEndianOutput;
+
/**
* Missing Function Arguments
- *
+ *
* Avik Sengupta <avik at apache.org>
+ *
* @author Jason Height (jheight at chariot dot net dot au)
*/
public final class MissingArgPtg extends ScalarConstantPtg {
-
- private final static int SIZE = 1;
- public final static byte sid = 0x16;
-
- public static final Ptg instance = new MissingArgPtg();
-
- private MissingArgPtg() {
- // enforce singleton
- }
-
- public void writeBytes(byte [] array, int offset) {
- array[ offset + 0 ] = sid;
- }
-
- public int getSize() {
- return SIZE;
- }
-
- public String toFormulaString() {
- return " ";
- }
+
+ private final static int SIZE = 1;
+ public final static byte sid = 0x16;
+
+ public static final Ptg instance = new MissingArgPtg();
+
+ private MissingArgPtg() {
+ // enforce singleton
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ }
+
+ public int getSize() {
+ return SIZE;
+ }
+
+ public String toFormulaString() {
+ return " ";
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NamePtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NamePtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NamePtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NamePtg.java Sun Oct 26 00:18:17 2008
@@ -17,63 +17,63 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.ss.formula.WorkbookDependentFormula;
import org.apache.poi.ss.formula.FormulaRenderingWorkbook;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.ss.formula.WorkbookDependentFormula;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
- *
- * @author andy
+ *
+ * @author andy
* @author Jason Height (jheight at chariot dot net dot au)
*/
public final class NamePtg extends OperandPtg implements WorkbookDependentFormula {
- public final static short sid = 0x23;
- private final static int SIZE = 5;
- /** one-based index to defined name record */
- private int field_1_label_index;
- private short field_2_zero; // reserved must be 0
-
- /**
- * @param nameIndex zero-based index to name within workbook
- */
- public NamePtg(int nameIndex) {
- field_1_label_index = 1+nameIndex; // convert to 1-based
- }
-
- /** Creates new NamePtg */
-
- public NamePtg(RecordInputStream in) {
- field_1_label_index = in.readShort();
- field_2_zero = in.readShort();
- }
-
- /**
- * @return zero based index to a defined name record in the LinkTable
- */
- public int getIndex() {
- return field_1_label_index-1; // convert to zero based
- }
-
- public void writeBytes(byte [] array, int offset) {
- LittleEndian.putByte(array, offset + 0, sid + getPtgClass());
- LittleEndian.putUShort(array, offset + 1, field_1_label_index);
- LittleEndian.putUShort(array, offset + 3, field_2_zero);
- }
-
- public int getSize() {
- return SIZE;
- }
-
- public String toFormulaString(FormulaRenderingWorkbook book)
- {
- return book.getNameText(this);
- }
+ public final static short sid = 0x23;
+ private final static int SIZE = 5;
+ /** one-based index to defined name record */
+ private int field_1_label_index;
+ private short field_2_zero; // reserved must be 0
+
+ /**
+ * @param nameIndex zero-based index to name within workbook
+ */
+ public NamePtg(int nameIndex) {
+ field_1_label_index = 1 + nameIndex; // convert to 1-based
+ }
+
+ /** Creates new NamePtg */
+
+ public NamePtg(LittleEndianInput in) {
+ field_1_label_index = in.readShort();
+ field_2_zero = in.readShort();
+ }
+
+ /**
+ * @return zero based index to a defined name record in the LinkTable
+ */
+ public int getIndex() {
+ return field_1_label_index - 1; // convert to zero based
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeShort(field_1_label_index);
+ out.writeShort(field_2_zero);
+ }
+
+ public int getSize() {
+ return SIZE;
+ }
+
+ public String toFormulaString(FormulaRenderingWorkbook book) {
+ return book.getNameText(this);
+ }
+
public String toFormulaString() {
throw new RuntimeException("3D references need a workbook to determine formula text");
}
-
- public byte getDefaultOperandClass() {
+
+ public byte getDefaultOperandClass() {
return Ptg.CLASS_REF;
}
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java Sun Oct 26 00:18:17 2008
@@ -17,10 +17,10 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.ss.formula.WorkbookDependentFormula;
import org.apache.poi.ss.formula.FormulaRenderingWorkbook;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.ss.formula.WorkbookDependentFormula;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
*
@@ -51,15 +51,15 @@
this(sheetRefIndex, nameIndex + 1, 0);
}
- public NameXPtg(RecordInputStream in) {
+ public NameXPtg(LittleEndianInput in) {
this(in.readUShort(), in.readUShort(), in.readUShort());
}
- public void writeBytes(byte[] array, int offset) {
- LittleEndian.putByte(array, offset + 0, sid + getPtgClass());
- LittleEndian.putUShort(array, offset + 1, _sheetRefIndex);
- LittleEndian.putUShort(array, offset + 3, _nameNumber);
- LittleEndian.putUShort(array, offset + 5, _reserved);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeShort(_sheetRefIndex);
+ out.writeShort(_nameNumber);
+ out.writeShort(_reserved);
}
public int getSize() {
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java Sun Oct 26 00:18:17 2008
@@ -17,55 +17,55 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
- * Number
- * Stores a floating point value in a formula
- * value stored in a 8 byte field using IEEE notation
- * @author Avik Sengupta
+ * Number Stores a floating point value in a formula value stored in a 8 byte
+ * field using IEEE notation
+ *
+ * @author Avik Sengupta
* @author Jason Height (jheight at chariot dot net dot au)
*/
public final class NumberPtg extends ScalarConstantPtg {
- public final static int SIZE = 9;
- public final static byte sid = 0x1f;
- private final double field_1_value;
-
- /** Create a NumberPtg from a byte array read from disk */
- public NumberPtg(RecordInputStream in) {
- this(in.readDouble());
- }
-
- /** Create a NumberPtg from a string representation of the number
- * Number format is not checked, it is expected to be validated in the parser
- * that calls this method.
- * @param value : String representation of a floating point number
- */
- public NumberPtg(String value) {
- this(Double.parseDouble(value));
- }
-
- public NumberPtg(double value) {
- field_1_value = value;
- }
-
- public double getValue() {
- return field_1_value;
- }
-
- public void writeBytes(byte [] array, int offset) {
- array[ offset + 0 ] = sid;
- LittleEndian.putDouble(array, offset + 1, getValue());
- }
-
- public int getSize() {
- return SIZE;
- }
-
- public String toFormulaString() {
- // TODO - java's rendering of double values is not quite same as excel's
- // Maybe use HSSFDataFormatter?
- return String.valueOf(field_1_value);
- }
+ public final static int SIZE = 9;
+ public final static byte sid = 0x1f;
+ private final double field_1_value;
+
+ public NumberPtg(LittleEndianInput in) {
+ this(in.readDouble());
+ }
+
+ /**
+ * Create a NumberPtg from a string representation of the number Number
+ * format is not checked, it is expected to be validated in the parser that
+ * calls this method.
+ *
+ * @param value String representation of a floating point number
+ */
+ public NumberPtg(String value) {
+ this(Double.parseDouble(value));
+ }
+
+ public NumberPtg(double value) {
+ field_1_value = value;
+ }
+
+ public double getValue() {
+ return field_1_value;
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeDouble(getValue());
+ }
+
+ public int getSize() {
+ return SIZE;
+ }
+
+ public String toFormulaString() {
+ // TODO - java's rendering of double values is not quite same as excel's
+ return String.valueOf(field_1_value);
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java Sun Oct 26 00:18:17 2008
@@ -15,46 +15,44 @@
limitations under the License.
==================================================================== */
-
package org.apache.poi.hssf.record.formula;
+import org.apache.poi.util.LittleEndianOutput;
/**
- * While formula tokens are stored in RPN order and thus do not need parenthesis for
- * precedence reasons, Parenthesis tokens ARE written to ensure that user entered
- * parenthesis are displayed as-is on reading back
- *
- * Avik Sengupta <lists@aviksengupta.com>
- * Andrew C. Oliver (acoliver at apache dot org)
+ * While formula tokens are stored in RPN order and thus do not need parenthesis
+ * for precedence reasons, Parenthesis tokens ARE written to ensure that user
+ * entered parenthesis are displayed as-is on reading back
+ *
+ * Avik Sengupta <lists@aviksengupta.com> Andrew C. Oliver (acoliver at
+ * apache dot org)
+ *
* @author Jason Height (jheight at chariot dot net dot au)
*/
public final class ParenthesisPtg extends ControlPtg {
-
- private final static int SIZE = 1;
- public final static byte sid = 0x15;
-
- public static final ControlPtg instance = new ParenthesisPtg();
- private ParenthesisPtg() {
- // enforce singleton
- }
-
- public void writeBytes(byte [] array, int offset)
- {
- array[ offset + 0 ] = sid;
- }
-
- public int getSize()
- {
- return SIZE;
- }
-
- public String toFormulaString()
- {
- return "()";
- }
-
-
- public String toFormulaString(String[] operands) {
- return "("+operands[0]+")";
- }
+
+ private final static int SIZE = 1;
+ public final static byte sid = 0x15;
+
+ public static final ControlPtg instance = new ParenthesisPtg();
+
+ private ParenthesisPtg() {
+ // enforce singleton
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ }
+
+ public int getSize() {
+ return SIZE;
+ }
+
+ public String toFormulaString() {
+ return "()";
+ }
+
+ public String toFormulaString(String[] operands) {
+ return "(" + operands[0] + ")";
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ptg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ptg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ptg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ptg.java Sun Oct 26 00:18:17 2008
@@ -20,8 +20,8 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndianByteArrayOutputStream;
+import org.apache.poi.util.LittleEndianInput;
import org.apache.poi.util.LittleEndianOutput;
/**
@@ -48,12 +48,12 @@
* Reads <tt>size</tt> bytes of the input stream, to create an array of <tt>Ptg</tt>s.
* Extra data (beyond <tt>size</tt>) may be read if and <tt>ArrayPtg</tt>s are present.
*/
- public static Ptg[] readTokens(int size, RecordInputStream in) {
+ public static Ptg[] readTokens(int size, LittleEndianInput in) {
List temp = new ArrayList(4 + size / 2);
int pos = 0;
List arrayPtgs = null;
while (pos < size) {
- Ptg ptg = Ptg.createPtg( in );
+ Ptg ptg = Ptg.createPtg(in);
if (ptg instanceof ArrayPtg) {
if (arrayPtgs == null) {
arrayPtgs = new ArrayList(5);
@@ -77,7 +77,7 @@
return toPtgArray(temp);
}
- public static Ptg createPtg(RecordInputStream in) {
+ public static Ptg createPtg(LittleEndianInput in) {
byte id = in.readByte();
if (id < 0x20) {
@@ -97,7 +97,7 @@
return retval;
}
- private static Ptg createClassifiedPtg(byte id, RecordInputStream in) {
+ private static Ptg createClassifiedPtg(byte id, LittleEndianInput in) {
int baseId = id & 0x1F | 0x20;
@@ -126,9 +126,9 @@
Integer.toHexString(id) + " (" + ( int ) id + ")");
}
- private static Ptg createBasePtg(byte id, RecordInputStream in) {
+ private static Ptg createBasePtg(byte id, LittleEndianInput in) {
switch(id) {
- case 0x00: return new UnknownPtg(); // TODO - not a real Ptg
+ case 0x00: return new UnknownPtg(id); // TODO - not a real Ptg
case ExpPtg.sid: return new ExpPtg(in); // 0x01
case TblPtg.sid: return new TblPtg(in); // 0x02
case AddPtg.sid: return AddPtg.instance; // 0x03
@@ -228,32 +228,30 @@
* @return number of bytes written
*/
public static int serializePtgs(Ptg[] ptgs, byte[] array, int offset) {
- int pos = 0;
- int size = ptgs.length;
+ int nTokens = ptgs.length;
+
+ LittleEndianByteArrayOutputStream out = new LittleEndianByteArrayOutputStream(array, offset);
List arrayPtgs = null;
- for (int k = 0; k < size; k++) {
+ for (int k = 0; k < nTokens; k++) {
Ptg ptg = ptgs[k];
- ptg.writeBytes(array, pos + offset);
+ ptg.write(out);
if (ptg instanceof ArrayPtg) {
if (arrayPtgs == null) {
arrayPtgs = new ArrayList(5);
}
arrayPtgs.add(ptg);
- pos += ArrayPtg.PLAIN_TOKEN_SIZE;
- } else {
- pos += ptg.getSize();
}
}
if (arrayPtgs != null) {
for (int i=0;i<arrayPtgs.size();i++) {
ArrayPtg p = (ArrayPtg)arrayPtgs.get(i);
- pos += p.writeTokenValueBytes(array, pos + offset);
+ p.writeTokenValueBytes(out);
}
}
- return pos;
+ return out.getWriteIndex() - offset;
}
/**
@@ -266,38 +264,12 @@
*/
// public abstract int getDataSize();
- public final byte[] getBytes()
- {
- int size = getSize();
- byte[] bytes = new byte[ size ];
-
- writeBytes(bytes, 0);
- return bytes;
- }
- /** write this Ptg to a byte array*/
- public abstract void writeBytes(byte [] array, int offset);
-
- public void write(LittleEndianOutput out) {
- out.write(getBytes()); // TODO - optimise - just a hack for the moment
- }
+ public abstract void write(LittleEndianOutput out);
/**
* return a string representation of this token alone
*/
public abstract String toFormulaString();
- /**
- * dump a debug representation (hexdump) to a string
- */
- public final String toDebugString() {
- byte[] ba = new byte[getSize()];
- writeBytes(ba,0);
- try {
- return HexDump.dump(ba,0,0);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
/** Overridden toString method to ensure object hash is not printed.
* This helps get rid of gratuitous diffs when comparing two dumps
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RangePtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RangePtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RangePtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RangePtg.java Sun Oct 26 00:18:17 2008
@@ -17,6 +17,8 @@
package org.apache.poi.hssf.record.formula;
+import org.apache.poi.util.LittleEndianOutput;
+
/**
* @author Daniel Noll (daniel at nuix dot com dot au)
@@ -40,9 +42,8 @@
return SIZE;
}
- public void writeBytes( byte[] array, int offset )
- {
- array[ offset + 0 ] = sid;
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
}
public String toFormulaString()
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ref2DPtgBase.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ref2DPtgBase.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ref2DPtgBase.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ref2DPtgBase.java Sun Oct 26 00:18:17 2008
@@ -17,51 +17,55 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* @author Josh Micich
*/
abstract class Ref2DPtgBase extends RefPtgBase {
- private final static int SIZE = 5;
+ private final static int SIZE = 5;
- /**
- * Takes in a String representation of a cell reference and fills out the
- * numeric fields.
- */
- protected Ref2DPtgBase(String cellref) {
- super(cellref);
- }
-
- protected Ref2DPtgBase(int row, int column, boolean isRowRelative, boolean isColumnRelative) {
- setRow(row);
- setColumn(column);
- setRowRelative(isRowRelative);
- setColRelative(isColumnRelative);
- }
-
- protected Ref2DPtgBase(RecordInputStream in) {
- readCoordinates(in);
- }
- public final void writeBytes(byte [] array, int offset) {
- LittleEndian.putByte(array, offset+0, getSid() + getPtgClass());
- writeCoordinates(array, offset+1);
- }
- public final String toFormulaString() {
- return formatReferenceAsString();
- }
+ /**
+ * Takes in a String representation of a cell reference and fills out the
+ * numeric fields.
+ */
+ protected Ref2DPtgBase(String cellref) {
+ super(cellref);
+ }
+
+ protected Ref2DPtgBase(int row, int column, boolean isRowRelative, boolean isColumnRelative) {
+ setRow(row);
+ setColumn(column);
+ setRowRelative(isRowRelative);
+ setColRelative(isColumnRelative);
+ }
+
+ protected Ref2DPtgBase(LittleEndianInput in) {
+ readCoordinates(in);
+ }
+
+ public void write(LittleEndianOutput out) {
+ out.writeByte(getSid() + getPtgClass());
+ writeCoordinates(out);
+ }
+
+ public final String toFormulaString() {
+ return formatReferenceAsString();
+ }
protected abstract byte getSid();
- public final int getSize() {
- return SIZE;
- }
- public final String toString() {
- StringBuffer sb = new StringBuffer();
- sb.append(getClass().getName());
- sb.append(" [");
- sb.append(formatReferenceAsString());
- sb.append("]");
- return sb.toString();
- }
+
+ public final int getSize() {
+ return SIZE;
+ }
+
+ public final String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(getClass().getName());
+ sb.append(" [");
+ sb.append(formatReferenceAsString());
+ sb.append("]");
+ return sb.toString();
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java Sun Oct 26 00:18:17 2008
@@ -17,12 +17,12 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.ss.formula.ExternSheetReferenceToken;
import org.apache.poi.ss.formula.FormulaRenderingWorkbook;
import org.apache.poi.ss.formula.WorkbookDependentFormula;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* Title: Reference 3D Ptg <P>
@@ -41,7 +41,7 @@
/** Creates new AreaPtg */
public Ref3DPtg() {}
- public Ref3DPtg(RecordInputStream in) {
+ public Ref3DPtg(LittleEndianInput in) {
field_1_index_extern_sheet = in.readShort();
readCoordinates(in);
}
@@ -66,10 +66,10 @@
return sb.toString();
}
- public void writeBytes(byte [] array, int offset) {
- LittleEndian.putByte(array, 0 + offset, sid + getPtgClass());
- LittleEndian.putUShort(array, 1 + offset, getExternSheetIndex());
- writeCoordinates(array, offset + 3);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeShort(getExternSheetIndex());
+ writeCoordinates(out);
}
public int getSize() {
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefErrorPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefErrorPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefErrorPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefErrorPtg.java Sun Oct 26 00:18:17 2008
@@ -17,10 +17,9 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* RefError - handles deleted cell reference
@@ -35,7 +34,7 @@
public RefErrorPtg() {
field_1_reserved = 0;
}
- public RefErrorPtg(RecordInputStream in) {
+ public RefErrorPtg(LittleEndianInput in) {
field_1_reserved = in.readInt();
}
@@ -43,9 +42,9 @@
return getClass().getName();
}
- public void writeBytes(byte [] array, int offset) {
- LittleEndian.putByte(array, offset+0, sid + getPtgClass());
- LittleEndian.putInt(array,offset+1,field_1_reserved);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeInt(field_1_reserved);
}
public int getSize()
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java Sun Oct 26 00:18:17 2008
@@ -17,7 +17,7 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.util.LittleEndianInput;
/**
* RefNPtg
@@ -26,7 +26,7 @@
public final class RefNPtg extends Ref2DPtgBase {
public final static byte sid = 0x2C;
- public RefNPtg(RecordInputStream in) {
+ public RefNPtg(LittleEndianInput in) {
super(in);
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefPtg.java Sun Oct 26 00:18:17 2008
@@ -17,7 +17,7 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.util.LittleEndianInput;
/**
* ReferencePtg - handles references (such as A1, A2, IA4)
@@ -39,7 +39,7 @@
super(row, column, isRowRelative, isColumnRelative);
}
- public RefPtg(RecordInputStream in) {
+ public RefPtg(LittleEndianInput in) {
super(in);
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefPtgBase.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefPtgBase.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefPtgBase.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/RefPtgBase.java Sun Oct 26 00:18:17 2008
@@ -17,112 +17,114 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* ReferencePtgBase - handles references (such as A1, A2, IA4)
- * @author Andrew C. Oliver (acoliver@apache.org)
+ *
+ * @author Andrew C. Oliver (acoliver@apache.org)
* @author Jason Height (jheight at chariot dot net dot au)
*/
public abstract class RefPtgBase extends OperandPtg {
- private final static int MAX_ROW_NUMBER = 65536;
+ private final static int MAX_ROW_NUMBER = 65536;
- /** The row index - zero based unsigned 16 bit value */
- private int field_1_row;
- /** Field 2
- * - lower 8 bits is the zero based unsigned byte column index
- * - bit 16 - isRowRelative
- * - bit 15 - isColumnRelative
- */
- private int field_2_col;
- private static final BitField rowRelative = BitFieldFactory.getInstance(0x8000);
- private static final BitField colRelative = BitFieldFactory.getInstance(0x4000);
- private static final BitField column = BitFieldFactory.getInstance(0x00FF);
-
- protected RefPtgBase() {
- //Required for clone methods
- }
-
- /**
- * Takes in a String representation of a cell reference and fills out the
- * numeric fields.
- */
- protected RefPtgBase(String cellref) {
- CellReference c= new CellReference(cellref);
- setRow(c.getRow());
- setColumn(c.getCol());
- setColRelative(!c.isColAbsolute());
- setRowRelative(!c.isRowAbsolute());
- }
-
- protected RefPtgBase(int row, int column, boolean isRowRelative, boolean isColumnRelative) {
- setRow(row);
- setColumn(column);
- setRowRelative(isRowRelative);
- setColRelative(isColumnRelative);
- }
-
- protected final void readCoordinates(RecordInputStream in) {
- field_1_row = in.readUShort();
- field_2_col = in.readUShort();
- }
- protected final void writeCoordinates(byte[] array, int offset) {
- LittleEndian.putUShort(array, offset + 0, field_1_row);
- LittleEndian.putUShort(array, offset + 2, field_2_col);
- }
-
- public final void setRow(int row) {
- if(row < 0 || row >= MAX_ROW_NUMBER) {
- throw new IllegalArgumentException("The row number, when specified as an integer, must be between 0 and " + MAX_ROW_NUMBER);
- }
- field_1_row = row;
- }
-
- /**
- * @return the row number as an int, between 0 and 65535
- */
- public final int getRow(){
- return field_1_row;
- }
-
- public final boolean isRowRelative() {
- return rowRelative.isSet(field_2_col);
- }
-
- public final void setRowRelative(boolean rel) {
- field_2_col=rowRelative.setBoolean(field_2_col,rel);
- }
-
- public final boolean isColRelative() {
- return colRelative.isSet(field_2_col);
- }
-
- public final void setColRelative(boolean rel) {
- field_2_col=colRelative.setBoolean(field_2_col,rel);
- }
-
- public final void setColumn(int col) {
- if(col < 0 || col >= 0x100) {
- throw new IllegalArgumentException("Specified colIx (" + col + ") is out of range");
- }
- field_2_col = column.setValue(field_2_col, col);
- }
-
- public final int getColumn() {
- return column.getValue(field_2_col);
- }
- protected final String formatReferenceAsString() {
- // Only make cell references as needed. Memory is an issue
- CellReference cr = new CellReference(getRow(), getColumn(), !isRowRelative(), !isColRelative());
- return cr.formatAsString();
- }
-
- public final byte getDefaultOperandClass() {
- return Ptg.CLASS_REF;
- }
+ /** The row index - zero based unsigned 16 bit value */
+ private int field_1_row;
+ /**
+ * Field 2 - lower 8 bits is the zero based unsigned byte column index - bit
+ * 16 - isRowRelative - bit 15 - isColumnRelative
+ */
+ private int field_2_col;
+ private static final BitField rowRelative = BitFieldFactory.getInstance(0x8000);
+ private static final BitField colRelative = BitFieldFactory.getInstance(0x4000);
+ private static final BitField column = BitFieldFactory.getInstance(0x00FF);
+
+ protected RefPtgBase() {
+ // Required for clone methods
+ }
+
+ /**
+ * Takes in a String representation of a cell reference and fills out the
+ * numeric fields.
+ */
+ protected RefPtgBase(String cellref) {
+ CellReference c = new CellReference(cellref);
+ setRow(c.getRow());
+ setColumn(c.getCol());
+ setColRelative(!c.isColAbsolute());
+ setRowRelative(!c.isRowAbsolute());
+ }
+
+ protected RefPtgBase(int row, int column, boolean isRowRelative, boolean isColumnRelative) {
+ setRow(row);
+ setColumn(column);
+ setRowRelative(isRowRelative);
+ setColRelative(isColumnRelative);
+ }
+
+ protected final void readCoordinates(LittleEndianInput in) {
+ field_1_row = in.readUShort();
+ field_2_col = in.readUShort();
+ }
+
+ protected final void writeCoordinates(LittleEndianOutput out) {
+ out.writeShort(field_1_row);
+ out.writeShort(field_2_col);
+ }
+
+ public final void setRow(int rowIndex) {
+ if (rowIndex < 0 || rowIndex >= MAX_ROW_NUMBER) {
+ throw new IllegalArgumentException("rowIndex must be between 0 and " + MAX_ROW_NUMBER);
+ }
+ field_1_row = rowIndex;
+ }
+
+ /**
+ * @return the row number as an int, between 0 and 65535
+ */
+ public final int getRow() {
+ return field_1_row;
+ }
+
+ public final boolean isRowRelative() {
+ return rowRelative.isSet(field_2_col);
+ }
+
+ public final void setRowRelative(boolean rel) {
+ field_2_col = rowRelative.setBoolean(field_2_col, rel);
+ }
+
+ public final boolean isColRelative() {
+ return colRelative.isSet(field_2_col);
+ }
+
+ public final void setColRelative(boolean rel) {
+ field_2_col = colRelative.setBoolean(field_2_col, rel);
+ }
+
+ public final void setColumn(int col) {
+ if (col < 0 || col >= 0x100) {
+ throw new IllegalArgumentException("Specified colIx (" + col + ") is out of range");
+ }
+ field_2_col = column.setValue(field_2_col, col);
+ }
+
+ public final int getColumn() {
+ return column.getValue(field_2_col);
+ }
+
+ protected final String formatReferenceAsString() {
+ // Only make cell references as needed. Memory is an issue
+ CellReference cr = new CellReference(getRow(), getColumn(), !isRowRelative(), !isColRelative());
+ return cr.formatAsString();
+ }
+
+ public final byte getDefaultOperandClass() {
+ return Ptg.CLASS_REF;
+ }
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/StringPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/StringPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/StringPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/StringPtg.java Sun Oct 26 00:18:17 2008
@@ -17,9 +17,8 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.BitField;
-import org.apache.poi.util.BitFieldFactory;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
import org.apache.poi.util.StringUtil;
/**
@@ -31,29 +30,26 @@
* @author Bernard Chesnoy
*/
public final class StringPtg extends ScalarConstantPtg {
- public final static int SIZE = 9;
- public final static byte sid = 0x17;
- private static final BitField fHighByte = BitFieldFactory.getInstance(0x01);
- /** the character (")used in formulas to delimit string literals */
+ public final static byte sid = 0x17;
+ /** the character (") used in formulas to delimit string literals */
private static final char FORMULA_DELIMITER = '"';
+ private final boolean _is16bitUnicode;
/**
* NOTE: OO doc says 16bit length, but BiffViewer says 8 Book says something
* totally different, so don't look there!
*/
- private final int field_1_length;
- private final byte field_2_options;
private final String field_3_string;
/** Create a StringPtg from a stream */
- public StringPtg(RecordInputStream in) {
- field_1_length = in.readUByte();
- field_2_options = in.readByte();
- if (fHighByte.isSet(field_2_options)) {
- field_3_string = in.readUnicodeLEString(field_1_length);
- } else {
- field_3_string = in.readCompressedUnicode(field_1_length);
- }
+ public StringPtg(LittleEndianInput in) {
+ int nChars = in.readUByte(); // Note - nChars is 8-bit
+ _is16bitUnicode = (in.readByte() & 0x01) != 0;
+ if (_is16bitUnicode) {
+ field_3_string = StringUtil.readUnicodeLE(in, nChars);
+ } else {
+ field_3_string = StringUtil.readCompressedUnicode(in, nChars);
+ }
}
/**
@@ -69,32 +65,27 @@
throw new IllegalArgumentException(
"String literals in formulas can't be bigger than 255 characters ASCII");
}
- field_2_options = (byte) fHighByte.setBoolean(0, StringUtil.hasMultibyte(value));
+ _is16bitUnicode = StringUtil.hasMultibyte(value);
field_3_string = value;
- field_1_length = value.length(); // for the moment, we support only ASCII strings in formulas we create
}
public String getValue() {
return field_3_string;
}
- public void writeBytes(byte[] array, int offset) {
- array[offset + 0] = sid;
- array[offset + 1] = (byte) field_1_length;
- array[offset + 2] = field_2_options;
- if (fHighByte.isSet(field_2_options)) {
- StringUtil.putUnicodeLE(getValue(), array, offset + 3);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeByte(field_3_string.length()); // Note - nChars is 8-bit
+ out.writeByte(_is16bitUnicode ? 0x01 : 0x00);
+ if (_is16bitUnicode) {
+ StringUtil.putUnicodeLE(field_3_string, out);
} else {
- StringUtil.putCompressedUnicode(getValue(), array, offset + 3);
+ StringUtil.putCompressedUnicode(field_3_string, out);
}
}
public int getSize() {
- if (fHighByte.isSet(field_2_options)) {
- return 2 * field_1_length + 3;
- } else {
- return field_1_length + 3;
- }
+ return 3 + field_3_string.length() * (_is16bitUnicode ? 2 : 1);
}
public String toFormulaString() {
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/TblPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/TblPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/TblPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/TblPtg.java Sun Oct 26 00:18:17 2008
@@ -18,8 +18,8 @@
package org.apache.poi.hssf.record.formula;
import org.apache.poi.hssf.record.RecordFormatException;
-import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianInput;
+import org.apache.poi.util.LittleEndianOutput;
/**
* This ptg indicates a data table.
@@ -43,15 +43,15 @@
/** The column number of the upper left corner */
private final int field_2_first_col;
- public TblPtg(RecordInputStream in) {
+ public TblPtg(LittleEndianInput in) {
field_1_first_row = in.readUShort();
field_2_first_col = in.readUShort();
}
- public void writeBytes(byte [] array, int offset) {
- LittleEndian.putByte(array, offset+0, sid);
- LittleEndian.putUShort(array, offset+1, field_1_first_row);
- LittleEndian.putUShort(array, offset+3, field_2_first_col);
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
+ out.writeShort(field_1_first_row);
+ out.writeShort(field_2_first_col);
}
public int getSize() {
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java Sun Oct 26 00:18:17 2008
@@ -17,6 +17,8 @@
package org.apache.poi.hssf.record.formula;
+import org.apache.poi.util.LittleEndianOutput;
+
/**
* @author Glen Stampoultzis (glens at apache.org)
@@ -39,9 +41,8 @@
return 1;
}
- public void writeBytes( byte[] array, int offset )
- {
- array[ offset + 0 ] = sid;
+ public void write(LittleEndianOutput out) {
+ out.writeByte(sid + getPtgClass());
}
public String toFormulaString()
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java Sun Oct 26 00:18:17 2008
@@ -16,7 +16,7 @@
==================================================================== */
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.util.LittleEndianOutput;
/**
*
@@ -25,22 +25,17 @@
*/
public class UnknownPtg extends Ptg {
private short size = 1;
+ private final int _sid;
- /** Creates new UnknownPtg */
-
- public UnknownPtg()
- {
- }
-
- public UnknownPtg(RecordInputStream in) {
- // doesn't need anything
+ public UnknownPtg(int sid) {
+ _sid = sid;
}
public boolean isBaseToken() {
- return true;
+ return true;
}
- public void writeBytes(byte [] array, int offset)
- {
+ public void write(LittleEndianOutput out) {
+ out.writeByte(_sid);
}
public int getSize()
@@ -55,8 +50,6 @@
public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
public Object clone() {
- return new UnknownPtg();
+ return this;
}
-
-
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ValueOperatorPtg.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ValueOperatorPtg.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ValueOperatorPtg.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/record/formula/ValueOperatorPtg.java Sun Oct 26 00:18:17 2008
@@ -17,18 +17,19 @@
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.util.LittleEndianOutput;
/**
- * Common superclass of all value operators.
- * Subclasses include all unary and binary operators except for the reference operators (IntersectionPtg, RangePtg, UnionPtg)
+ * Common superclass of all value operators. Subclasses include all unary and
+ * binary operators except for the reference operators (IntersectionPtg,
+ * RangePtg, UnionPtg)
*
* @author Josh Micich
*/
public abstract class ValueOperatorPtg extends OperationPtg {
/**
- * All Operator <tt>Ptg</tt>s are base tokens (i.e. are not RVA classified)
+ * All Operator <tt>Ptg</tt>s are base tokens (i.e. are not RVA classified)
*/
public final boolean isBaseToken() {
return true;
@@ -38,8 +39,8 @@
return Ptg.CLASS_VALUE;
}
- public final void writeBytes(byte[] array, int offset) {
- array[offset + 0] = getSid();
+ public void write(LittleEndianOutput out) {
+ out.writeByte(getSid());
}
protected abstract byte getSid();
@@ -47,8 +48,9 @@
public final int getSize() {
return 1;
}
- public final String toFormulaString() {
- // TODO - prune this method out of the hierarchy
- throw new RuntimeException("toFormulaString(String[] operands) should be used for subclasses of OperationPtgs");
+
+ public final String toFormulaString() {
+ // TODO - prune this method out of the hierarchy
+ throw new RuntimeException("toFormulaString(String[] operands) should be used for subclasses of OperationPtgs");
}
}
Modified: poi/branches/ooxml/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java
URL: http://svn.apache.org/viewvc/poi/branches/ooxml/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java?rev=707945&r1=707944&r2=707945&view=diff
==============================================================================
--- poi/branches/ooxml/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java (original)
+++ poi/branches/ooxml/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java Sun Oct 26 00:18:17 2008
@@ -975,7 +975,7 @@
if(sr == null) {
return null;
}
- if(sr.getType() == StyleRecord.STYLE_BUILT_IN) {
+ if(sr.isBuiltin()) {
return null;
}
return sr.getName();
@@ -990,7 +990,7 @@
if(sr == null) {
sr = workbook.createStyleRecord(index);
}
- if(sr.getType() == StyleRecord.STYLE_BUILT_IN) {
+ if(sr.isBuiltin()) {
throw new IllegalArgumentException("Unable to set user specified style names for built in styles!");
}
sr.setName(styleName);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org