


POI source patch:
Diff command:   cvs -q diff -uw
Files affected: src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java src/java/org/apache/poi/hssf/usermodel/HSSFName.java src/java/org/apache/poi/hssf/usermodel/HSSFCell.java src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java src/java/org/apache/poi/hssf/record/formula/UnionPtg.java src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java src/java/org/apache/poi/hssf/record/formula/StringPtg.java src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java src/java/org/apache/poi/hssf/record/formula/Ptg.java src/java/org/apache/poi/hssf/record/formula/PowerPtg.java src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java src/java/org/apache/poi/hssf/record/formula/NumberPtg.java src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java src/java/org/apache/poi/hssf/record/formula/NameXPtg.java src/java/org/apache/poi/hssf/record/formula/NamePtg.java src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java src/java/org/apache/poi/hssf/record/formula/IntPtg.java src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java src/java/org/apache/poi/hssf/record/formula/ExpPtg.java src/java/org/apache/poi/hssf/record/formula/EqualPtg.java src/java/org/apache/poi/hssf/record/formula/DividePtg.java src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java src/java/org/apache/poi/hssf/record/formula/BoolPtg.java src/java/org/apache/poi/hssf/record/formula/AttrPtg.java src/java/org/apache/poi/hssf/record/formula/AreaPtg.java src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java src/java/org/apache/poi/hssf/record/formula/AddPtg.java src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java src/java/org/apache/poi/hssf/record/NameRecord.java src/java/org/apache/poi/hssf/model/FormulaParser.java src/java/org/apache/poi/hssf/dev/FormulaViewer.java

Index: src/java/org/apache/poi/hssf/dev/FormulaViewer.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/dev/FormulaViewer.java,v
retrieving revision 1.7
diff -b -u -u -w -r1.7 FormulaViewer.java
--- src/java/org/apache/poi/hssf/dev/FormulaViewer.java	30 Apr 2003 04:39:11 -0000	1.7
+++ src/java/org/apache/poi/hssf/dev/FormulaViewer.java	16 Jul 2003 19:43:14 -0000
@@ -144,1 +144,1 @@
             StringBuffer buf = new StringBuffer();

             if (token instanceof ExpPtg) return;
-            buf.append(name=((OperationPtg) token).toFormulaString((SheetReferences)null));
+            buf.append(name=((OperationPtg) token).toFormulaString((Workbook)null));
             buf.append(sep);
             switch (token.getPtgClass()) {
                 case Ptg.CLASS_REF :
@@ -213,7 +213,7 @@
         StringBuffer buf = new StringBuffer();
            for (int i=0;i<numptgs;i++) {
            token = (Ptg) tokens.get(i);
-            buf.append( token.toFormulaString((SheetReferences)null));
+            buf.append( token.toFormulaString((Workbook)null));
             switch (token.getPtgClass()) {
                 case Ptg.CLASS_REF :
                     buf.append("(R)");
@@ -233,0 +233,0 @@

     private String composeFormula(FormulaRecord record)
     {
-       return  org.apache.poi.hssf.model.FormulaParser.toFormulaString((SheetReferences)null,record.getParsedExpression());
+       return  org.apache.poi.hssf.model.FormulaParser.toFormulaString((Workbook)null,record.getParsedExpression());
     }

     /**

Index: src/java/org/apache/poi/hssf/model/FormulaParser.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/model/FormulaParser.java,v
retrieving revision 1.13
diff -b -u -u -w -r1.13 FormulaParser.java
--- src/java/org/apache/poi/hssf/model/FormulaParser.java	7 May 2003 03:40:52 -0000	1.13
+++ src/java/org/apache/poi/hssf/model/FormulaParser.java	16 Jul 2003 19:43:15 -0000
@@ -64,2 +64,2 @@
 //import PTG's .. since we need everything, import *
 import org.apache.poi.hssf.record.formula.*;

-import org.apache.poi.hssf.util.SheetReferences;


 /**
@@ -795,13 +794,15 @@
     /**
      * Convience method which takes in a list then passes it to the other toFormulaString
      * signature.
-     * @param lptgs - list of ptgs, can be null
+     * @param book   workbook for 3D and named references
+     * @param lptgs  list of Ptg, can be null or empty
+     * @return a human readable String
      */
-    public static String toFormulaString(SheetReferences refs, List lptgs) {
+    public static String toFormulaString(Workbook book, List lptgs) {
         String retval = null;
         if (lptgs == null || lptgs.size() == 0) return "#NAME";
         Ptg[] ptgs = new Ptg[lptgs.size()];
         ptgs = (Ptg[])lptgs.toArray(ptgs);
-        retval = toFormulaString(refs, ptgs);
+        retval = toFormulaString(book, ptgs);
         return retval;
     }

-    /** Static method to convert an array of Ptgs in RPN order
-     *  to a human readable string format in infix mode
-     *  @param ptgs - array of ptgs, can be null or empty
+    /**
+     * Static method to convert an array of Ptgs in RPN order
+     * to a human readable string format in infix mode.
+     * @param book  workbook for named and 3D references
+     * @param ptgs  array of Ptg, can be null or empty
+     * @return a human readable String
      */
-    public static String toFormulaString(SheetReferences refs, Ptg[] ptgs) {
+    public static String toFormulaString(Workbook book, Ptg[] ptgs) {
         if (ptgs == null || ptgs.length == 0) return "#NAME";
         java.util.Stack stack = new java.util.Stack();
-        int numPtgs = ptgs.length;
-        OperationPtg o;
-        int numOperands;
-        String result=null;
-        String[] operands;
         AttrPtg ifptg = null;
-        for (int i=0;i<numPtgs;i++) {
+
            // Excel allows to have AttrPtg at position 0 (such as Blanks) which
            // do not have any operands. Skip them.
-            if (ptgs[i] instanceof OperationPtg && i>0) {
-                  o = (OperationPtg) ptgs[i];
+        stack.push(ptgs[0].toFormulaString(book));

-                  if (o instanceof AttrPtg && ((AttrPtg)o).isOptimizedIf()) {
-                        ifptg=(AttrPtg)o;
-                  } else {
+        for (int i = 1; i < ptgs.length; i++) {
+            if (! (ptgs[i] instanceof OperationPtg)) {
+                stack.push(ptgs[i].toFormulaString(book));
+                continue;
+            }

-                      numOperands = o.getNumberOfOperands();
-                      operands = new String[numOperands];
+            if (ptgs[i] instanceof AttrPtg && ((AttrPtg) ptgs[i]).isOptimizedIf()) {
+                ifptg = (AttrPtg) ptgs[i];
+                continue;
+            }

-                      for (int j=0;j<numOperands;j++) {
-                          operands[numOperands-j-1] = (String) stack.pop(); //TODO: catch stack underflow and throw parse exception.
+            final OperationPtg o = (OperationPtg) ptgs[i];
+            final String[] operands = new String[o.getNumberOfOperands()];
+
+            for (int j = operands.length; j > 0; j--) {
+                //TODO: catch stack underflow and throw parse exception.
+                operands[j - 1] = (String) stack.pop();
                       }

-                      if ( (o instanceof AbstractFunctionPtg) &&
-                            ((AbstractFunctionPtg)o).getName().equals("specialflag") &&
-                            ifptg != null
-                            ) {
+            stack.push(o.toFormulaString(operands));
+            if (!(o instanceof AbstractFunctionPtg)) continue;
+
+            final AbstractFunctionPtg f = (AbstractFunctionPtg) o;
+            final String fname = f.getName();
+            if (fname == null) continue;
+
+            if ((ifptg != null) && (fname.equals("specialflag"))) {
                              // this special case will be way different.
-                             result = ifptg.toFormulaString(
-                                  new String[] {(o.toFormulaString(operands))}
-                                                           );
+                stack.push(ifptg.toFormulaString(new String[]{(String) stack.pop()}));
                              ifptg = null;
-                      } else {
-                        result = o.toFormulaString(operands);
-                      }
-                      stack.push(result);
+                continue;
                   }

-
-            } else {
-                stack.push(ptgs[i].toFormulaString(refs));
+            if (fname.equals("externalflag")) {
+                final String tos = (String) stack.pop();
+                final String curry = tos.substring(13).replace(',','(');
+                return curry;
             }
         }
-        return (String) stack.pop(); //TODO: catch stack underflow and throw parse exception.
+        // TODO: catch stack underflow and throw parse exception.
+        return (String) stack.pop();
     }
+
+
     /** Create a tree representation of the RPN token array
      *used to run the class(RVA) change algo
      */
@@ -890,11 +899,9 @@
      *   Useful for testing
      */
     public String toString() {
-        SheetReferences refs = null;
-        if (book!=null)  book.getSheetReferences();
         StringBuffer buf = new StringBuffer();
            for (int i=0;i<tokens.size();i++) {
-            buf.append( ( (Ptg)tokens.get(i)).toFormulaString(refs));
+            buf.append( ( (Ptg)tokens.get(i)).toFormulaString(book));
             buf.append(' ');
         }
         return buf.toString();
Index: src/java/org/apache/poi/hssf/record/NameRecord.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/NameRecord.java,v
retrieving revision 1.12
diff -b -u -u -w -r1.12 NameRecord.java
--- src/java/org/apache/poi/hssf/record/NameRecord.java	17 May 2003 18:32:41 -0000	1.12
+++ src/java/org/apache/poi/hssf/record/NameRecord.java	16 Jul 2003 19:43:28 -0000
@@ -55,0 +55,0 @@

 package org.apache.poi.hssf.record;

+
 import java.util.List;
 import java.util.Stack;
-
+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.hssf.record.formula.Area3DPtg;
 import org.apache.poi.hssf.record.formula.Ptg;
 import org.apache.poi.hssf.record.formula.Ref3DPtg;
 import org.apache.poi.hssf.util.RangeAddress;
-import org.apache.poi.hssf.util.SheetReferences;
 import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.StringUtil;

 /**
- * Title:        Name Record (aka Named Range) <P>
- * Description:  Defines a named range within a workbook. <P>
- * REFERENCE:  <P>
+ * @Title        Name Record (aka Named Range)
+ * @Description  Defines a named range within a workbook.
+ * @REFERENCE
  * @author Libin Roman (Vista Portal LDT. Developer)
  * @author  Sergei Kozello (sergeikozello at mail.ru)
  * @author Glen Stampoultzis (glens at apache.org)
@@ -127,2 +127,2 @@
 	 */
 	public final static byte  BUILTIN_SHEET_TITLE           = (byte)12;

+    public static final short OPT_HIDDEN_NAME =   (short) 0x0001;
+    public static final short OPT_FUNCTION_NAME = (short) 0x0002;
+    public static final short OPT_COMMAND_NAME =  (short) 0x0004;
+    public static final short OPT_MACRO =         (short) 0x0008;
+    public static final short OPT_COMPLEX =       (short) 0x0010;
+    public static final short OPT_BUILTIN =       (short) 0x0020;
+    public static final short OPT_BINDATA =       (short) 0x1000;
+

     private short             field_1_option_flag;
     private byte              field_2_keyboard_shortcut;
@@ -192,6 +200,6 @@
 	{
 	    this();
 	    this.field_12_builtIn_name = builtin;
-	    this.setOptionFlag((short)(this.getOptionFlag() | (short)0x20));
+        this.setOptionFlag((short)(this.getOptionFlag() | OPT_BUILTIN));
 	    this.setNameTextLength((byte)1);
 	    this.setEqualsToIndexToSheet(index); //the extern sheets are set through references

@@ -252,0 +260,0 @@

 	/**
 	 * Convenience method to retrieve the index the name refers to.
-	 * @see getEqualsToIndexToSheet()
+     * @see #getEqualsToIndexToSheet()
 	 * @return short
 	 */
 	public short getIndexToSheet() {
@@ -346,2 +354,2 @@
         return field_1_option_flag;
     }

+    /**
+     * @return function group
+     * @see FnGroupCountRecord
+     */
+    public byte getFnGroup() {
+        int masked = field_1_option_flag & 0x0fc0;
+        return (byte) (masked >> 4);
+    }
+
     /** returns the keyboard shortcut
      * @return keyboard shortcut
      */
@@ -409,2 +426,2 @@
         return field_11_compressed_unicode_flag;
     }

+    /**
+     * @return true if name is hidden
+     */
+    public boolean isHiddenName() {
+        return (field_1_option_flag & OPT_HIDDEN_NAME) != 0;
+    }
+
+    /**
+     * @return true if name is a function
+     */
+    public boolean isFunctionName() {
+        return (field_1_option_flag & OPT_FUNCTION_NAME) != 0;
+    }
+
+    /**
+     * @return true if name is a command
+     */
+    public boolean isCommandName() {
+        return (field_1_option_flag & OPT_COMMAND_NAME) != 0;
+    }
+
+    /**
+     * @return true if function macro or command macro
+     */
+    public boolean isMacro() {
+        return (field_1_option_flag & OPT_MACRO) != 0;
+    }
+
+    /**
+     * @return true if array formula or user defined
+     */
+    public boolean isComplexFunction() {
+        return (field_1_option_flag & OPT_COMPLEX) != 0;
+    }
+
+
 	/**Convenience Function to determine if the name is a built-in name
 	 */
 	public boolean isBuiltInName()
 	{
-	    return ((this.getOptionFlag() & (short)0x20) != 0);
+        return ((this.getOptionFlag() & OPT_BUILTIN) != 0);
 	}


+
 	/** gets the name
 	 * @return name
 	 */
@@ -511,1 +565,1 @@
         data[18 + offset] = getCompressedUnicodeFlag();

         /* temp: gjs
-        if ( ( field_1_option_flag & (short) 0x20 ) != 0 )
+           if (isBuiltInName())
         {
             LittleEndian.putShort( data, 2 + offset, (short) ( 16 + field_13_raw_name_definition.length ) );

@@ -647,7 +701,7 @@
     /** gets the reference , the area only (range)
      * @return area reference
      */
-    public String getAreaReference(SheetReferences refs){
+    public String getAreaReference(Workbook book){
         if (field_13_name_definition == null) return "#REF!";
         Ptg ptg = (Ptg) field_13_name_definition.peek();
         String result = "";

         if (ptg.getClass() == Area3DPtg.class){
-            result = ptg.toFormulaString(refs);
+            result = ptg.toFormulaString(book);

         } else if (ptg.getClass() == Ref3DPtg.class){
-            result = ptg.toFormulaString(refs);
+            result = ptg.toFormulaString(book);
         }

         return result;
@@ -727,0 +781,0 @@

         /*
         temp: gjs
-        if ( ( field_1_option_flag & (short)0x20 ) != 0 ) {
+          if (isBuiltInName()) {
             // DEBUG
             // System.out.println( "Built-in name" );

Index: src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java,v
retrieving revision 1.10
diff -b -u -u -w -r1.10 AbstractFunctionPtg.java
--- src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java	6 May 2003 15:30:52 -0000	1.10
+++ src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java	16 Jul 2003 19:43:38 -0000
@@ -53,2 +53,2 @@
  */
 package org.apache.poi.hssf.record.formula;

+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.util.BinaryTree;
-import org.apache.poi.hssf.util.SheetReferences;

-import java.util.Stack;

 /**
  * This class provides the base functionality for Excel sheet functions
@@ -104,2 +103,2 @@
         return lookupName(field_2_fnc_index);
     }

-    public String toFormulaString(SheetReferences refs) {
+    public String toFormulaString(Workbook book) {
         return getName();
     }

@@ -389,6 +388,7 @@
         dmap.put(new Integer(252),"FREQUENCY");
         dmap.put(new Integer(253),"ADDTOOLBAR");
         dmap.put(new Integer(254),"DELETETOOLBAR");
+        dmap.put(new Integer(255),"externalflag");
         dmap.put(new Integer(256),"RESETTOOLBAR");
         dmap.put(new Integer(257),"EVALUATE");
         dmap.put(new Integer(258),"GETTOOLBAR");
Index: src/java/org/apache/poi/hssf/record/formula/AddPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AddPtg.java,v
retrieving revision 1.13
diff -b -u -u -w -r1.13 AddPtg.java
--- src/java/org/apache/poi/hssf/record/formula/AddPtg.java	30 Apr 2003 04:39:02 -0000	1.13
+++ src/java/org/apache/poi/hssf/record/formula/AddPtg.java	16 Jul 2003 19:43:39 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

-import java.util.List;

-import org.apache.poi.hssf.util.SheetReferences;
+import java.util.List;
+import org.apache.poi.hssf.model.Workbook;

 /**
  * Addition operator PTG the "+" binomial operator.  If you need more
@@ -113,1 +113,1 @@
     }

     /** Implementation of method from Ptg */
-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "+";
     }
Index: src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java,v
retrieving revision 1.13
diff -b -u -u -w -r1.13 Area3DPtg.java
--- src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java	30 Apr 2003 04:39:02 -0000	1.13
+++ src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java	16 Jul 2003 19:43:39 -0000
@@ -64,1 +64,1 @@
 import org.apache.poi.util.BitField;

 /**
- * Title:        Area 3D Ptg - 3D referecnce (Sheet + Area)<P>
- * Description:  Defined a area in Extern Sheet. <P>
- * REFERENCE:  <P>
+ * @Title        Area 3D Ptg - 3D referecnce (Sheet + Area)
+ * @Description  Defined a area in Extern Sheet.
+ * @REFERENCE
  * @author Libin Roman (Vista Portal LDT. Developer)
  * @author avik
  * @author Jason Height (jheight at chariot dot net dot au)
@@ -236,0 +236,0 @@

 	/**
 	 * sets the first row to relative or not
-	 * @param isRelative or not.
+	 * @param rel isRelative or not.
 	 */
 	public void setFirstRowRelative( boolean rel )
 	{
@@ -253,0 +253,0 @@

 	/**
 	 * set whether the last row is relative or not
-	 * @param last row relative
+	 * @param rel last row relative
 	 */
 	public void setLastRowRelative( boolean rel )
 	{
@@ -291,0 +291,0 @@

 	}

-	public String toFormulaString( SheetReferences refs )
+	public String toFormulaString( Workbook book )
 	{
 		StringBuffer retval = new StringBuffer();
+                SheetReferences refs = book.getSheetReferences();
 		if ( refs != null )
 		{
 			retval.append( refs.getSheetName( this.field_1_index_extern_sheet ) );
@@ -351,0 +352,0 @@


 }
-
Index: src/java/org/apache/poi/hssf/record/formula/AreaPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java,v
retrieving revision 1.14
diff -b -u -u -w -r1.14 AreaPtg.java
--- src/java/org/apache/poi/hssf/record/formula/AreaPtg.java	30 Apr 2003 04:39:02 -0000	1.14
+++ src/java/org/apache/poi/hssf/record/formula/AreaPtg.java	16 Jul 2003 19:43:39 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.util.BitField;
-
+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.hssf.util.AreaReference;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.util.BitField;
+import org.apache.poi.util.LittleEndian;

 /**
  * Specifies a rectangular area of cells A1:A4 for instance.
@@ -171,1 +170,1 @@
     }

     /**
-     * @param last row number in the area
+     * @param row last row number in the area
      */
     public void setLastRow(short row)
     {
@@ -267,0 +266,0 @@

     /**
      * set whether the last row is relative or not
-     * @param last row relative
+     * @param rel last row relative
      */
     public void setLastRowRelative(boolean rel) {
         field_4_last_column=rowRelative.setShortBoolean(field_4_last_column,rel);
@@ -305,2 +304,2 @@
         field_4_last_column = column;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
          return (new CellReference(getFirstRow(),getFirstColumn(),!isFirstRowRelative(),!isFirstColRelative())).toString() + ":" +
                 (new CellReference(getLastRow(),getLastColumn(),!isLastRowRelative(),!isLastColRelative())).toString();
Index: src/java/org/apache/poi/hssf/record/formula/AttrPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AttrPtg.java,v
retrieving revision 1.16
diff -b -u -u -w -r1.16 AttrPtg.java
--- src/java/org/apache/poi/hssf/record/formula/AttrPtg.java	30 Apr 2003 04:39:02 -0000	1.16
+++ src/java/org/apache/poi/hssf/record/formula/AttrPtg.java	16 Jul 2003 19:43:39 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

-import org.apache.poi.hssf.util.SheetReferences;
-
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.util.BitField;
+import org.apache.poi.util.LittleEndian;

 import java.util.List;

@@ -207,10 +206,10 @@
         if(space.isSet(field_1_options)) {
             return operands[ 0 ];
         } else if (optiIf.isSet(field_1_options)) {
-            return toFormulaString((SheetReferences)null) + "(" + operands[ 0 ]             +")";
+            return toFormulaString((Workbook)null) + "(" + operands[ 0 ]             +")";
         } else if (optGoto.isSet(field_1_options)) {
-            return toFormulaString((SheetReferences)null) + operands[0];   //goto isn't a real formula element should not show up
+            return toFormulaString((Workbook)null) + operands[0];   //goto isn't a real formula element should not show up
         } else {
-            return toFormulaString((SheetReferences)null) + "(" + operands[ 0 ] + ")";
+            return toFormulaString((Workbook)null) + "(" + operands[ 0 ] + ")";
         }
     }

@@ -226,2 +225,2 @@
         return -1;
     }

-   public String toFormulaString(SheetReferences refs) {
+   public String toFormulaString(Workbook book) {
       if(semiVolatile.isSet(field_1_options)) {
         return "ATTR(semiVolatile)";
       }
Index: src/java/org/apache/poi/hssf/record/formula/BoolPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/BoolPtg.java,v
retrieving revision 1.3
diff -b -u -u -w -r1.3 BoolPtg.java
--- src/java/org/apache/poi/hssf/record/formula/BoolPtg.java	1 May 2003 12:43:37 -0000	1.3
+++ src/java/org/apache/poi/hssf/record/formula/BoolPtg.java	16 Jul 2003 19:43:39 -0000
@@ -59,2 +59,2 @@
  */
 package org.apache.poi.hssf.record.formula;

+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.util.SheetReferences;

 /**
  * Boolean (boolean)
@@ -114,2 +114,2 @@
         return SIZE;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return field_1_value ? "TRUE" : "FALSE";
     }
Index: src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java,v
retrieving revision 1.5
diff -b -u -u -w -r1.5 ConcatPtg.java
--- src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java	30 Apr 2003 04:39:02 -0000	1.5
+++ src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java	16 Jul 2003 19:43:39 -0000
@@ -62,0 +62,0 @@

 import java.util.List;

-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
  *
@@ -108,2 +108,2 @@
         return 2;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return CONCAT;
     }
Index: src/java/org/apache/poi/hssf/record/formula/DividePtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/DividePtg.java,v
retrieving revision 1.9
diff -b -u -u -w -r1.9 DividePtg.java
--- src/java/org/apache/poi/hssf/record/formula/DividePtg.java	30 Apr 2003 04:39:02 -0000	1.9
+++ src/java/org/apache/poi/hssf/record/formula/DividePtg.java	16 Jul 2003 19:43:39 -0000
@@ -62,0 +62,0 @@

 import java.util.List;

-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
  * This PTG implements the standard binomial divide "/"
@@ -108,2 +108,2 @@
         return 2;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "/";
     }
@@ -117,1 +117,1 @@
         StringBuffer buffer = new StringBuffer();

         buffer.append(operands[ 0 ]);
-        buffer.append(toFormulaString((SheetReferences)null));
+        buffer.append(toFormulaString((Workbook)null));
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }
Index: src/java/org/apache/poi/hssf/record/formula/EqualPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/EqualPtg.java,v
retrieving revision 1.3
diff -b -u -u -w -r1.3 EqualPtg.java
--- src/java/org/apache/poi/hssf/record/formula/EqualPtg.java	30 Apr 2003 04:39:02 -0000	1.3
+++ src/java/org/apache/poi/hssf/record/formula/EqualPtg.java	16 Jul 2003 19:43:39 -0000
@@ -62,0 +62,0 @@

 import java.util.List;

-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
  *
@@ -107,2 +107,2 @@
         return 2;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "=";
     }
@@ -117,0 +117,0 @@


         buffer.append(operands[ 0 ]);
-        buffer.append(toFormulaString((SheetReferences)null));
+        buffer.append(toFormulaString((Workbook)null));
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }
Index: src/java/org/apache/poi/hssf/record/formula/ExpPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ExpPtg.java,v
retrieving revision 1.8
diff -b -u -u -w -r1.8 ExpPtg.java
--- src/java/org/apache/poi/hssf/record/formula/ExpPtg.java	2 Jun 2003 02:47:44 -0000	1.8
+++ src/java/org/apache/poi/hssf/record/formula/ExpPtg.java	16 Jul 2003 19:43:39 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
  *
@@ -102,2 +102,2 @@
         return SIZE;
     }

-    public String toFormulaString(SheetReferences refs)
+
+    public String toFormulaString(Workbook book)
     {
         return "NO IDEA SHARED FORMULA EXP PTG";
     }
Index: src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java,v
retrieving revision 1.1
diff -b -u -u -w -r1.1 GreaterEqualPtg.java
--- src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java	7 May 2003 03:40:52 -0000	1.1
+++ src/java/org/apache/poi/hssf/record/formula/GreaterEqualPtg.java	16 Jul 2003 19:43:39 -0000
@@ -53,2 +53,2 @@
  */
 package org.apache.poi.hssf.record.formula;

-
-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
  * PTG class to implement greater or equal to
@@ -98,2 +97,2 @@
         return 2;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return ">=";
     }
@@ -108,0 +107,0 @@


         buffer.append(operands[ 0 ]);
-        buffer.append(toFormulaString((SheetReferences)null));
+        buffer.append(toFormulaString((Workbook)null));
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }
Index: src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java,v
retrieving revision 1.1
diff -b -u -u -w -r1.1 GreaterThanPtg.java
--- src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java	4 May 2003 18:22:08 -0000	1.1
+++ src/java/org/apache/poi/hssf/record/formula/GreaterThanPtg.java	16 Jul 2003 19:43:39 -0000
@@ -61,0 +61,0 @@

 import java.util.List;

-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
  * Greater than operator PTG ">"
@@ -131,0 +131,0 @@

     /**
      * Implementation of method from Ptg
-     * @param refs the Sheet References
+     * @param book the Workbook
      */
-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return this.GREATERTHAN;
     }
@@ -171,5 +171,3 @@
         return new GreaterThanPtg();
     }
 }
-
-
Index: src/java/org/apache/poi/hssf/record/formula/IntPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/IntPtg.java,v
retrieving revision 1.10
diff -b -u -u -w -r1.10 IntPtg.java
--- src/java/org/apache/poi/hssf/record/formula/IntPtg.java	30 Apr 2003 04:39:02 -0000	1.10
+++ src/java/org/apache/poi/hssf/record/formula/IntPtg.java	16 Jul 2003 19:43:39 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.util.SheetReferences;

 /**
- * Integer (short intger)
- * Stores a (java) short value in a formula
+ * Integer (short integer).
+ * Stores a (java) short value in a formula.
  * @author  Andrew C. Oliver (acoliver at apache dot org)
  * @author Jason Height (jheight at chariot dot net dot au)
  */
@@ -116,2 +116,2 @@
         return SIZE;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "" + getValue();
     }
Index: src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java,v
retrieving revision 1.1
diff -b -u -u -w -r1.1 LessEqualPtg.java
--- src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java	7 May 2003 03:40:52 -0000	1.1
+++ src/java/org/apache/poi/hssf/record/formula/LessEqualPtg.java	16 Jul 2003 19:43:39 -0000
@@ -53,2 +53,2 @@
  */
 package org.apache.poi.hssf.record.formula;

-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;


 /**
@@ -99,2 +99,2 @@
 		  return 2;
 	 }

-	 public String toFormulaString(SheetReferences refs)
+	 public String toFormulaString(Workbook book)
 	 {
 		  return "<=";
 	 }
@@ -109,0 +109,0 @@


 		  buffer.append(operands[ 0 ]);
-		  buffer.append(toFormulaString((SheetReferences)null));
+		  buffer.append(toFormulaString((Workbook)null));
 		  buffer.append(operands[ 1 ]);
 		  return buffer.toString();
 	 }
Index: src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java,v
retrieving revision 1.1
diff -b -u -u -w -r1.1 LessThanPtg.java
--- src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java	4 May 2003 18:22:08 -0000	1.1
+++ src/java/org/apache/poi/hssf/record/formula/LessThanPtg.java	16 Jul 2003 19:43:39 -0000
@@ -63,1 +63,1 @@
 import java.util.List;

 //POI
-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
  * Less than operator PTG "<". The SID is taken from the
@@ -140,0 +140,0 @@

     /**
      * Implementation of method from Ptg
-     * @param refs the Sheet References
+     * @param book the Workbook
      */
-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return this.LESSTHAN;
     }
@@ -180,1 +180,1 @@
     }

 }
-
-
-
Index: src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java,v
retrieving revision 1.5
diff -b -u -u -w -r1.5 MemErrPtg.java
--- src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java	30 Apr 2003 04:39:02 -0000	1.5
+++ src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java	16 Jul 2003 19:43:40 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.util.SheetReferences;

 /**
  *
@@ -118,2 +118,2 @@
         return SIZE;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "ERR#";
     }
Index: src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java,v
retrieving revision 1.2
diff -b -u -u -w -r1.2 MemFuncPtg.java
--- src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java	30 Apr 2003 04:39:02 -0000	1.2
+++ src/java/org/apache/poi/hssf/record/formula/MemFuncPtg.java	16 Jul 2003 19:43:40 -0000
@@ -59,2 +59,2 @@
  */
 package org.apache.poi.hssf.record.formula;

+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.util.SheetReferences;

 /**
  * @author Glen Stampoultzis (glens at apache.org)
@@ -96,2 +96,2 @@
         LittleEndian.putShort( array, offset + 1, (short)field_1_len_ref_subexpression );
     }

-    public String toFormulaString( SheetReferences refs )
+    public String toFormulaString( Workbook book )
     {
         return "";
     }
Index: src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java,v
retrieving revision 1.4
diff -b -u -u -w -r1.4 MissingArgPtg.java
--- src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java	30 Apr 2003 04:39:02 -0000	1.4
+++ src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java	16 Jul 2003 19:43:40 -0000
@@ -54,0 +54,0 @@

 package org.apache.poi.hssf.record.formula;

-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
  * Missing Function Arguments
@@ -91,1 +91,1 @@
     }


-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return " ";
     }
@@ -103,1 +103,1 @@
     }

 }
-
-
Index: src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java,v
retrieving revision 1.10
diff -b -u -u -w -r1.10 MultiplyPtg.java
--- src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java	30 Apr 2003 04:39:02 -0000	1.10
+++ src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java	16 Jul 2003 19:43:40 -0000
@@ -61,1 +61,1 @@
 package org.apache.poi.hssf.record.formula;

 import java.util.List;
-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
- * Implements the standard mathmatical multiplication - *
+ * Implements the standard mathmatical multiplication operator "*".
  * @author  Andrew C. Oliver (acoliver at apache dot org)
  * @author Jason Height (jheight at chariot dot net dot au)
  */
@@ -114,1 +114,1 @@
     }


-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "*";
     }
@@ -123,2 +123,2 @@
     {
         StringBuffer buffer = new StringBuffer();

-        buffer.append(operands[ 0 ].toFormulaString((SheetReferences)null));
+        buffer.append(operands[ 0 ].toFormulaString((Workbook)null));
         buffer.append("*");
-        buffer.append(operands[ 1 ].toFormulaString((SheetReferences)null));
+        buffer.append(operands[ 1 ].toFormulaString((Workbook)null));
         return buffer.toString();
     }

@@ -133,1 +133,1 @@
         StringBuffer buffer = new StringBuffer();

         buffer.append(operands[ 0 ]);
-        buffer.append(toFormulaString((SheetReferences)null));
+        buffer.append(toFormulaString((Workbook)null));
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }
Index: src/java/org/apache/poi/hssf/record/formula/NamePtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NamePtg.java,v
retrieving revision 1.6
diff -b -u -u -w -r1.6 NamePtg.java
--- src/java/org/apache/poi/hssf/record/formula/NamePtg.java	30 Apr 2003 04:39:02 -0000	1.6
+++ src/java/org/apache/poi/hssf/record/formula/NamePtg.java	16 Jul 2003 19:43:40 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

+import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.record.NameRecord;
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.util.SheetReferences;

 /**
  *
@@ -106,0 +107,0 @@

     public int getSize()
     {
-        return SIZE;
+        return (field_3_zero == 0) ? SIZE : SIZE - 2;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
-        return "NO IDEA - NAME";
+        NameRecord rec = book.getNameRecord(field_1_ixti - 1);
+        return rec.getNameText();
     }

     public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
Index: src/java/org/apache/poi/hssf/record/formula/NameXPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NameXPtg.java,v
retrieving revision 1.1
diff -b -u -u -w -r1.1 NameXPtg.java
--- src/java/org/apache/poi/hssf/record/formula/NameXPtg.java	5 May 2003 15:33:14 -0000	1.1
+++ src/java/org/apache/poi/hssf/record/formula/NameXPtg.java	16 Jul 2003 19:43:40 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.util.SheetReferences;

 /**
  *
@@ -113,2 +113,2 @@
         return SIZE;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "NO IDEA - NAME";
     }
Index: src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java,v
retrieving revision 1.1
diff -b -u -u -w -r1.1 NotEqualPtg.java
--- src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java	7 May 2003 03:40:52 -0000	1.1
+++ src/java/org/apache/poi/hssf/record/formula/NotEqualPtg.java	16 Jul 2003 19:43:40 -0000
@@ -54,0 +54,0 @@

 package org.apache.poi.hssf.record.formula;

-import java.util.List;

-import org.apache.poi.hssf.util.SheetReferences;
+import java.util.List;
+import org.apache.poi.hssf.model.Workbook;

 /**
  * Ptg class to implement not equal
@@ -101,2 +101,2 @@
 		  return 2;
 	 }

-	 public String toFormulaString(SheetReferences refs)
+	 public String toFormulaString(Workbook book)
 	 {
 		  return "<>";
 	 }
@@ -111,0 +111,0 @@


 		  buffer.append(operands[ 0 ]);
-		  buffer.append(toFormulaString((SheetReferences)null));
+		  buffer.append(toFormulaString((Workbook)null));
 		  buffer.append(operands[ 1 ]);
 		  return buffer.toString();
 	 }
Index: src/java/org/apache/poi/hssf/record/formula/NumberPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/NumberPtg.java,v
retrieving revision 1.6
diff -b -u -u -w -r1.6 NumberPtg.java
--- src/java/org/apache/poi/hssf/record/formula/NumberPtg.java	30 Apr 2003 04:39:02 -0000	1.6
+++ src/java/org/apache/poi/hssf/record/formula/NumberPtg.java	16 Jul 2003 19:43:40 -0000
@@ -54,0 +54,0 @@

 package org.apache.poi.hssf.record.formula;

+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.util.LittleEndian;
-import org.apache.poi.hssf.util.SheetReferences;
 /**
  * Number
  * Stores a floating point value in a formula
@@ -113,2 +113,2 @@
         return SIZE;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "" + getValue();
     }
@@ -125,4 +125,3 @@
       return ptg;
     }
 }
-
Index: src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java,v
retrieving revision 1.10
diff -b -u -u -w -r1.10 ParenthesisPtg.java
--- src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java	30 Apr 2003 04:39:02 -0000	1.10
+++ src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java	16 Jul 2003 19:43:40 -0000
@@ -55,0 +55,0 @@

 package org.apache.poi.hssf.record.formula;

-import java.util.List;

-import org.apache.poi.hssf.util.SheetReferences;
+import java.util.List;
+import org.apache.poi.hssf.model.Workbook;

 /**
  * 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
+ * parenthesis are displayed as-is on reading back.
  *
- * Avik Sengupta <lists@aviksengupta.com>
- * Andrew C. Oliver (acoliver at apache dot org)
+ * @author Avik Sengupta <lists@aviksengupta.com>
+ * @author Andrew C. Oliver (acoliver at apache dot org)
  * @author Jason Height (jheight at chariot dot net dot au)
  */
 public class ParenthesisPtg
@@ -107,2 +107,2 @@
         return 1;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "()";
     }
@@ -124,1 +124,1 @@
     }

 }
-
Index: src/java/org/apache/poi/hssf/record/formula/PowerPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/PowerPtg.java,v
retrieving revision 1.11
diff -b -u -u -w -r1.11 PowerPtg.java
--- src/java/org/apache/poi/hssf/record/formula/PowerPtg.java	30 Apr 2003 04:39:02 -0000	1.11
+++ src/java/org/apache/poi/hssf/record/formula/PowerPtg.java	16 Jul 2003 19:43:40 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

-import java.util.List;

-import org.apache.poi.hssf.util.SheetReferences;
+import java.util.List;
+import org.apache.poi.hssf.model.Workbook;

 /**
  *
@@ -108,2 +108,2 @@
         return 2;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "^";
     }
@@ -118,0 +118,0 @@


         buffer.append(operands[ 0 ]);
-        buffer.append(toFormulaString((SheetReferences)null));
+        buffer.append(toFormulaString((Workbook)null));
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }
Index: src/java/org/apache/poi/hssf/record/formula/Ptg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ptg.java,v
retrieving revision 1.29
diff -b -u -u -w -r1.29 Ptg.java
--- src/java/org/apache/poi/hssf/record/formula/Ptg.java	7 May 2003 03:40:52 -0000	1.29
+++ src/java/org/apache/poi/hssf/record/formula/Ptg.java	16 Jul 2003 19:43:41 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

-import java.util.List;
-import java.util.ArrayList;

-import org.apache.poi.hssf.util.SheetReferences;
+import java.util.List;
+import org.apache.poi.hssf.model.Workbook;

 /**
- *
+ * Parse ThinG.
  * @author  andy
  * @author avik
  * @author Jason Height (jheight at chariot dot net dot au)
@@ -76,1 +75,1 @@
 {


-    /** convert infix order ptg list to rpn order ptg list
+    /* convert infix order ptg list to rpn order ptg list
      * @return List ptgs in RPN order
      * @param infixPtgs List of ptgs in infix order
      */
@@ -140,5 +139,7 @@
         final byte arrayFunc = FuncPtg.sid + 0x40;
         final byte valueFuncVar = FuncVarPtg.sid +0x20;
         final byte arrayFuncVar = FuncVarPtg.sid+0x40;
+        final byte valueFuncCE = FuncCEPtg.sid + 0x20;
+        final byte arrayFuncCE = FuncCEPtg.sid + 0x40;
         final byte valueArea = AreaPtg.sid + 0x20;
         final byte arrayArea = AreaPtg.sid + 0x40;

@@ -264,2 +265,2 @@
                 retval = new FuncVarPtg(data, offset);
                 break;

+            case FuncCEPtg.sid :
+                retval = new FuncCEPtg(data, offset);
+                break;
+
+            case valueFuncCE :
+                retval = new FuncCEPtg(data, offset);
+                break;
+            case arrayFuncCE :
+                retval = new FuncCEPtg(data, offset);
+                break;
+
             case NumberPtg.sid :
                retval = new NumberPtg(data, offset);
                break;
@@ -341,7 +353,7 @@
     /**
      * return a string representation of this token alone
      */
-    public abstract String toFormulaString(SheetReferences refs);
+    public abstract String toFormulaString(Workbook book);
     /**
      * dump a debug representation (hexdump) to a string
      */
Index: src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java,v
retrieving revision 1.10
diff -b -u -u -w -r1.10 Ref3DPtg.java
--- src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java	30 Apr 2003 04:39:02 -0000	1.10
+++ src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java	16 Jul 2003 19:43:41 -0000
@@ -56,0 +56,0 @@

 package org.apache.poi.hssf.record.formula;

-import org.apache.poi.util.LittleEndian;

-import org.apache.poi.hssf.util.RangeAddress;
+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.hssf.util.CellReference;
+import org.apache.poi.hssf.util.RangeAddress;
 import org.apache.poi.hssf.util.SheetReferences;
 import org.apache.poi.util.BitField;
-import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.util.LittleEndian;

 /**
- * Title:        Reference 3D Ptg <P>
- * Description:  Defined a cell in extern sheet. <P>
- * REFERENCE:  <P>
+ * @Title        Reference 3D Ptg
+ * @Description  Defined a cell in extern sheet.
+ * @REFERENCE
  * @author Libin Roman (Vista Portal LDT. Developer)
  * @author Jason Height (jheight at chariot dot net dot au)
  * @version 1.0-pre
@@ -193,0 +193,0 @@

     }

-    public String toFormulaString(SheetReferences refs) {
+    public String toFormulaString(Workbook book) {
+        SheetReferences refs = book.getSheetReferences();
         StringBuffer retval = new StringBuffer();
         if (refs != null) {
             retval.append(refs.getSheetName((int)this.field_1_index_extern_sheet));
Index: src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java,v
retrieving revision 1.8
diff -b -u -u -w -r1.8 ReferencePtg.java
--- src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java	30 Apr 2003 04:39:02 -0000	1.8
+++ src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java	16 Jul 2003 19:43:41 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.util.BitField;

+import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.hssf.util.CellReference;
-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.util.BitField;
+import org.apache.poi.util.LittleEndian;

 /**
  * ReferencePtg - handles references (such as A1, A2, IA4)
@@ -179,2 +179,2 @@
         return SIZE;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         //TODO -- should we store a cellreference instance in this ptg?? but .. memory is an issue, i believe!
         return (new CellReference(getRow(),getColumn(),!isRowRelative(),!isColRelative())).toString();
Index: src/java/org/apache/poi/hssf/record/formula/StringPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/StringPtg.java,v
retrieving revision 1.6
diff -b -u -u -w -r1.6 StringPtg.java
--- src/java/org/apache/poi/hssf/record/formula/StringPtg.java	30 Apr 2003 04:39:02 -0000	1.6
+++ src/java/org/apache/poi/hssf/record/formula/StringPtg.java	16 Jul 2003 19:43:41 -0000
@@ -54,0 +54,0 @@

 package org.apache.poi.hssf.record.formula;

-import org.apache.poi.util.LittleEndian;

-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.util.LittleEndian;

 /**
- * Number
- * Stores a String value in a formula value stored in the format <length 2 bytes>char[]
+ * Stores a String value in a formula value.
+ *
+ * Stored in the format <tt>&lt;length 2 bytes&gt;char[]</tt>.
+ *
  * @author  Werner Froidevaux
  * @author Jason Height (jheight at chariot dot net dot au)
  */
@@ -116,2 +118,2 @@
         return field_1_value.length() + 3;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "\""+getValue()+"\"";
     }
@@ -131,1 +133,1 @@
    }

 }
-
Index: src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java,v
retrieving revision 1.9
diff -b -u -u -w -r1.9 SubtractPtg.java
--- src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java	30 Apr 2003 04:39:02 -0000	1.9
+++ src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java	16 Jul 2003 19:43:41 -0000
@@ -61,1 +61,1 @@
 package org.apache.poi.hssf.record.formula;

 import java.util.List;
-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
  *
@@ -105,2 +105,2 @@
         return 2;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "-";
     }
Index: src/java/org/apache/poi/hssf/record/formula/UnionPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnionPtg.java,v
retrieving revision 1.2
diff -b -u -u -w -r1.2 UnionPtg.java
--- src/java/org/apache/poi/hssf/record/formula/UnionPtg.java	30 Apr 2003 04:39:02 -0000	1.2
+++ src/java/org/apache/poi/hssf/record/formula/UnionPtg.java	16 Jul 2003 19:43:41 -0000
@@ -54,0 +54,0 @@

 package org.apache.poi.hssf.record.formula;

-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;

 /**
  * @author Glen Stampoultzis (glens at apache.org)
@@ -95,1 +95,1 @@
     }

     /** Implementation of method from Ptg */
-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return ",";
     }
Index: src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java,v
retrieving revision 1.5
diff -b -u -u -w -r1.5 UnknownPtg.java
--- src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java	30 Apr 2003 04:39:02 -0000	1.5
+++ src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java	16 Jul 2003 19:43:42 -0000
@@ -60,2 +60,2 @@
  */
 package org.apache.poi.hssf.record.formula;

-import org.apache.poi.hssf.util.SheetReferences;
+import org.apache.poi.hssf.model.Workbook;
+
+
+

 /**
  *
@@ -94,2 +97,2 @@
         return size;
     }

-    public String toFormulaString(SheetReferences refs)
+    public String toFormulaString(Workbook book)
     {
         return "UNKNOWN";
     }
Index: src/java/org/apache/poi/hssf/usermodel/HSSFCell.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java,v
retrieving revision 1.22
diff -b -u -u -w -r1.22 HSSFCell.java
--- src/java/org/apache/poi/hssf/usermodel/HSSFCell.java	30 Apr 2003 04:39:00 -0000	1.22
+++ src/java/org/apache/poi/hssf/usermodel/HSSFCell.java	16 Jul 2003 19:43:43 -0000
@@ -725,1 +725,1 @@
     }

     public String getCellFormula() {
-        //Workbook.currentBook=book;
-        SheetReferences refs = book.getSheetReferences();
-        String retval = FormulaParser.toFormulaString(refs, ((FormulaRecordAggregate)record).getFormulaRecord().getParsedExpression());
-        //Workbook.currentBook=null;
+        String retval = FormulaParser.toFormulaString(book, ((FormulaRecordAggregate)record).getFormulaRecord().getParsedExpression());
         return retval;
     }

Index: src/java/org/apache/poi/hssf/usermodel/HSSFName.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFName.java,v
retrieving revision 1.8
diff -b -u -u -w -r1.8 HSSFName.java
--- src/java/org/apache/poi/hssf/usermodel/HSSFName.java	30 Apr 2003 04:39:00 -0000	1.8
+++ src/java/org/apache/poi/hssf/usermodel/HSSFName.java	16 Jul 2003 19:43:45 -0000
@@ -60,1 +60,1 @@
 import org.apache.poi.hssf.util.SheetReferences;

 /**
- * Title:        High Level Represantion of Named Range <P>
- * REFERENCE:  <P>
+ * @Title        High Level Represantion of Named Range
+ * @REFERENCE
  * @author Libin Roman (Vista Portal LDT. Developer)
  */

@@ -74,5 +74,5 @@
      *
      * @see org.apache.poi.hssf.usermodel.HSSFWorkbook#createName()
      * @param name the Name Record
-     * @param book - lowlevel Workbook object associated with the sheet.
-     * @param book the Workbook */
+     * @param book lowlevel Workbook object associated with the sheet
+     */

     protected HSSFName(Workbook book, NameRecord name) {
         this.book = book;
@@ -123,0 +123,0 @@

     public String getReference() {
         String result;
-        SheetReferences refs = book.getSheetReferences();
-        result = name.getAreaReference(refs);
+        result = name.getAreaReference(book);

         return result;
     }
@@ -167,1 +166,1 @@
     }

 }
-
Index: src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java,v
retrieving revision 1.24
diff -b -u -u -w -r1.24 HSSFWorkbook.java
--- src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java	30 Apr 2003 04:39:00 -0000	1.24
+++ src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java	16 Jul 2003 19:43:47 -0000
@@ -274,0 +274,0 @@

     /**
      * set the sheet name.
-     * @param sheet number (0 based)
-     * @param sheet name
+     * @param sheet sheet number (0 based)
+     * @param name sheet name
      */

     public void setSheetName(int sheet, String name)
@@ -834,1 +834,1 @@
     }

 	/**
-	 * Sets the printarea for the sheet provided
+	 * Sets the printarea for the sheet provided.
 	 * <p>
 	 * i.e. Reference = $A$1:$B$2
 	 * @param sheetIndex Zero-based sheet index (0 Represents the first sheet to keep consistent with java)
@@ -858,0 +858,0 @@

 	/**
 	 * For the Convenience of Java Programmers maintaining pointers.
-	 * @see setPrintArea(int, String)
+	 * @see #setPrintArea(int, String)
 	 * @param sheetIndex Zero-based sheet index (0 = First Sheet)
 	 * @param startColumn Column to begin printarea
 	 * @param endColumn Column to end the printarea
@@ -890,2 +890,2 @@
 		if (name == null) return null;
 		//adding one here because 0 indicates a global named region; doesnt make sense for print areas

-		return name.getAreaReference(workbook.getSheetReferences());
+		return name.getAreaReference(workbook);
 	}

     /**

Index: src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java
===================================================================
RCS file: /home/cvspublic/jakarta-poi/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java,v
retrieving revision 1.7
diff -b -u -u -w -r1.7 TestFormulaParser.java
--- src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java	7 May 2003 03:40:52 -0000	1.7
+++ src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java	16 Jul 2003 19:43:53 -0000
@@ -56,1 +56,1 @@
 import junit.framework.TestCase;

 import org.apache.poi.hssf.record.formula.*;
-import org.apache.poi.hssf.util.SheetReferences;

 /**
  * Test the low level formula parser functionality. High level tests are to
@@ -145,6 +144,6 @@
         assertEquals(true, flag.getValue());
         assertEquals("Y", y.getValue());
         assertEquals("N", n.getValue());
-        assertEquals("IF", funif.toFormulaString(new SheetReferences()));
+        assertEquals("IF", funif.toFormulaString((Workbook) null));
         assertTrue("Goto ptg exists", goto1.isGoto());
     }
