Пример #1
0
 /**
  * Dereferences a single value from any AreaEval or RefEval evaluation result. If the supplied
  * evaluationResult is just a plain value, it is returned as-is.
  *
  * @return a <tt>NumberEval</tt>, <tt>StringEval</tt>, <tt>BoolEval</tt>, <tt>BlankEval</tt> or
  *     <tt>ErrorEval</tt>. Never <code>null</code>.
  */
 private static ValueEval dereferenceValue(
     ValueEval evaluationResult, int srcRowNum, int srcColNum) {
   if (evaluationResult instanceof RefEval) {
     RefEval rv = (RefEval) evaluationResult;
     return rv.getInnerValueEval();
   }
   if (evaluationResult instanceof AreaEval) {
     AreaEval ae = (AreaEval) evaluationResult;
     if (ae.isRow()) {
       if (ae.isColumn()) {
         return ae.getRelativeValue(0, 0);
       }
       return ae.getValueAt(ae.getFirstRow(), srcColNum);
     }
     if (ae.isColumn()) {
       return ae.getValueAt(srcRowNum, ae.getFirstColumn());
     }
     return ErrorEval.VALUE_INVALID;
   }
   return evaluationResult;
 }