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();
       }