KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jxl > biff > formula > RangeSeparator


1 /*********************************************************************
2 *
3 * Copyright (C) 2002 Andrew Khan
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 ***************************************************************************/

19
20 package jxl.biff.formula;
21
22 import java.util.Stack JavaDoc;
23
24 import jxl.biff.IntegerHelper;
25
26 /**
27  * A "holding" token for a range separator. This token gets instantiated
28  * when the lexical analyzer can't distinguish a range cleanly, eg in the
29  * case where where one of the identifiers of the range is a formula
30  */

31 class RangeSeparator extends BinaryOperator implements ParsedThing
32 {
33   /**
34    * Constructor
35    */

36   public RangeSeparator()
37   {
38   }
39
40   public String JavaDoc getSymbol()
41   {
42     return ":";
43   }
44
45   /**
46    * Abstract method which gets the token for this operator
47    *
48    * @return the string symbol for this token
49    */

50   Token getToken()
51   {
52     return Token.RANGE;
53   }
54
55   /**
56    * Gets the precedence for this operator. Operator precedents run from
57    * 1 to 5, one being the highest, 5 being the lowest
58    *
59    * @return the operator precedence
60    */

61   int getPrecedence()
62   {
63     return 1;
64   }
65
66   /**
67    * Overrides the getBytes() method in the base class and prepends the
68    * memFunc token
69    *
70    * @return the bytes
71    */

72   byte[] getBytes()
73   {
74     setVolatile();
75     setOperandAlternateCode();
76
77     byte[] funcBytes = super.getBytes();
78
79     byte[] bytes = new byte[funcBytes.length+3];
80     System.arraycopy(funcBytes, 0, bytes, 3, funcBytes.length);
81     
82     // Indicate the mem func
83
bytes[0] = Token.MEM_FUNC.getCode();
84     IntegerHelper.getTwoBytes(funcBytes.length, bytes, 1);
85
86     return bytes;
87   }
88   
89 }
90
Popular Tags