https://issues.apache.org/bugzilla/show_bug.cgi?id=48292

--- Comment #3 from Petr.Udalau <[email protected]> 2009-12-02 
05:53:11 UTC ---
Thanks for reworked patch.
We have made final patch of array formula support and we will waiting for your
review.

Notes:

1) About "if (isPartOfArrayFormulaGroup() && f == null)" in XSSFCell:
I saved Excel document with array formula and when I had opened the xml of
sheet I saw that formula was set only for the first cell of array formula range
and other cells contained only calculated result.

2) About parsing of array formulas:
I changed OperandClassTransformer. But may be It is not solution for this
problem.

3) About CellRangeAddress.valueOf():
This is the case when the array formula is set into one cell. Then the Excel
save the "ref" param of formula like a "A1"(It is only for one-cell array
formula, when we set array formula into several cells "ref" param will contain
range like "A1:B1").

4) About evaluation of array formulas:
There are two types of array formulas:
  1.Some formulas (for example "SQRT({1,2;3,4})") can take array arguments and
have to be evaluated in loop with different args like a simple function.
  2.Functions that have to be evaluated in special mode when it is in array
formula.

5) About optimized CHOOSE and IF:
Optimization IF/ Choose  was made by analyze of  first argument and evaluated
only expression, represented by second argument in true case or by third
argument in false case.
In Array Formula Context first argument may be Boolean array which contains:
-only true values
-only false values
-mixed true and false values.
Method checkBooleanContent() provides analyze, which case we have.
Fist two cases can be optimized in the same manner as usual IF/Choose function.
Third case does not allow such optimization and requires evaluating both
expression and only then  choosing right value from evaluated arrays according 
Boolean array value. It means that we need to restore “non optimized” way to
evaluate such IF/Choose function. Restore of “non optimized” way lead to
ignoring of AttrPtg elements, which provide skipping no needed evaluation
during optimized way.

Due to  that IF/Choose function may be nested,   decision of optimized/non
optimized  is concern only for current IF/Choose function, need to keep in such
function stack and be restored after  finishing of  evaluating current
IF/Choose.

6) There will suitable to have common interface for Function and
FreeRefFunction.

Do you have any ideas and proposals?

P.S. "test/resources" must be a source folder to run tests. TestArrays - main
test.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to