You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by av...@apache.org on 2003/05/06 17:30:52 UTC
cvs commit: jakarta-poi/src/java/org/apache/poi/hssf/record/formula AbstractFunctionPtg.java FuncPtg.java FuncVarPtg.java
avik 2003/05/06 08:30:52
Modified: src/java/org/apache/poi/hssf/model FormulaParser.java
src/java/org/apache/poi/hssf/record/formula
AbstractFunctionPtg.java FuncPtg.java
FuncVarPtg.java
Log:
PR 13292, size of FuncPtg
Revision Changes Path
1.12 +5 -2 jakarta-poi/src/java/org/apache/poi/hssf/model/FormulaParser.java
Index: FormulaParser.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/model/FormulaParser.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- FormulaParser.java 4 May 2003 18:22:08 -0000 1.11
+++ FormulaParser.java 6 May 2003 15:30:52 -0000 1.12
@@ -797,7 +797,9 @@
}
return (String) stack.pop(); //TODO: catch stack underflow and throw parse exception.
}
-
+ /** Create a tree representation of the RPN token array
+ *used to run the class(RVA) change algo
+ */
private Node createTree() {
java.util.Stack stack = new java.util.Stack();
int numPtgs = tokens.size();
@@ -837,7 +839,8 @@
return buf.toString();
}
-}
+}
+ /** Private helper class, used to create a tree representation of the formula*/
class Node {
private Ptg value=null;
private Node[] children=new Node[0];
1.10 +4 -5 jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java
Index: AbstractFunctionPtg.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- AbstractFunctionPtg.java 30 Apr 2003 04:39:02 -0000 1.9
+++ AbstractFunctionPtg.java 6 May 2003 15:30:52 -0000 1.10
@@ -69,7 +69,7 @@
//constant used allow a ptgAttr to be mapped properly for its functionPtg
public static final String ATTR_NAME = "specialflag";
- private final static int SIZE = 4;
+
private static BinaryTree map = produceHash();
protected static Object[][] functionData = produceFunctionData();
@@ -129,14 +129,13 @@
}
public abstract void writeBytes(byte[] array, int offset);
+ public abstract int getSize();
- public int getSize() {
- return SIZE;
- }
+
- private String lookupName(short index) {
+ protected String lookupName(short index) {
return ((String)map.get(new Integer(index)));
}
1.5 +24 -8 jakarta-poi/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java
Index: FuncPtg.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FuncPtg.java 8 Apr 2003 04:34:42 -0000 1.4
+++ FuncPtg.java 6 May 2003 15:30:52 -0000 1.5
@@ -2,13 +2,14 @@
import org.apache.poi.util.LittleEndian;
/**
- *
+ * @author aviks
* @author Jason Height (jheight at chariot dot net dot au)
* @author Danny Mui (dmui at apache dot org) (Leftover handling)
*/
public class FuncPtg extends AbstractFunctionPtg{
public final static byte sid = 0x21;
+ public final static int SIZE = 3;
private int numParams=0;
/**
@@ -17,8 +18,8 @@
* <p>
* If the leftovers are removed, a prompt "Warning: Data may have been lost occurs in Excel"
*/
- protected byte[] leftOvers = null;
-
+ //protected byte[] leftOvers = null;
+
private FuncPtg() {
//Required for clone methods
}
@@ -31,12 +32,12 @@
//field_1_num_args = data[ offset + 0 ];
field_2_fnc_index = LittleEndian.getShort(data,offset + 0 );
-
+ /*
if (data.length - offset > 2) { //save left overs if there are any
leftOvers = new byte[2];
System.arraycopy(data, offset+1, leftOvers, 0, leftOvers.length);
}
-
+ */
try {
numParams = ( (Integer)functionData[field_2_fnc_index][2]).intValue();
} catch (NullPointerException npe) {
@@ -49,9 +50,9 @@
array[offset+0]= (byte) (sid + ptgClass);
//array[offset+1]=field_1_num_args;
LittleEndian.putShort(array,offset+1,field_2_fnc_index);
- if (leftOvers != null) {
+ /**if (leftOvers != null) {
System.arraycopy(leftOvers, 0, array, offset+2, leftOvers.length);
- }
+ }**/
}
public int getNumberOfOperands() {
@@ -60,8 +61,23 @@
public Object clone() {
FuncPtg ptg = new FuncPtg();
- ptg.field_1_num_args = field_1_num_args;
+ //ptg.field_1_num_args = field_1_num_args;
ptg.field_2_fnc_index = field_2_fnc_index;
return ptg;
+ }
+
+ public int getSize() {
+ return SIZE;
+ }
+
+ public String toString() {
+ StringBuffer buffer = new StringBuffer();
+ buffer
+ .append("<FunctionPtg>").append("\n")
+ .append(" numArgs(internal)=").append(this.numParams).append("\n")
+ .append(" name =").append(lookupName(field_2_fnc_index)).append("\n")
+ .append(" field_2_fnc_index=").append(field_2_fnc_index).append("\n")
+ .append("</FunctionPtg>");
+ return buffer.toString();
}
}
1.5 +16 -0 jakarta-poi/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java
Index: FuncVarPtg.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FuncVarPtg.java 5 Sep 2002 00:26:26 -0000 1.4
+++ FuncVarPtg.java 6 May 2003 15:30:52 -0000 1.5
@@ -8,6 +8,7 @@
public class FuncVarPtg extends AbstractFunctionPtg{
public final static byte sid = 0x22;
+ private final static int SIZE = 4;
private FuncVarPtg() {
//Required for clone methods
@@ -52,6 +53,21 @@
ptg.field_1_num_args = field_1_num_args;
ptg.field_2_fnc_index = field_2_fnc_index;
return ptg;
+ }
+
+ public int getSize() {
+ return SIZE;
+ }
+
+ public String toString() {
+ StringBuffer buffer = new StringBuffer();
+ buffer
+ .append("<FunctionVarPtg>").append("\n")
+ .append(" field_1_num_args=").append(field_1_num_args).append("\n")
+ .append(" name =").append(lookupName(field_2_fnc_index)).append("\n")
+ .append(" field_2_fnc_index=").append(field_2_fnc_index).append("\n")
+ .append("</FunctionPtg>");
+ return buffer.toString();
}