1    package org.apache.poi.hssf.record.formula;
2    import org.apache.poi.util.LittleEndian;
3    public class FuncVarPtg extends AbstractFunctionPtg{
4        
5        public final static byte sid  = 0x22;
6        
7     /**Creates new function pointer from a byte array 
8         * usually called while reading an excel file. 
9         */
10       public FuncVarPtg(byte[] data, int offset) {
11           offset++;
12           field_1_num_args = data[ offset + 0 ];
13           field_2_fnc_index  = LittleEndian.getShort(data,offset + 1 );
14       }
15       
16       /**
17        * Create a function ptg from a string tokenised by the parser
18        */
19       protected FuncVarPtg(String pName, byte pNumOperands) {
20           field_1_num_args = pNumOperands;
21           field_2_fnc_index = lookupIndex(pName);
22           try{
23               returnClass = ( (Byte) functionData[field_2_fnc_index][0]).byteValue();
24               paramClass = (byte[]) functionData[field_2_fnc_index][1];
25           } catch (NullPointerException npe ) {
26               returnClass = Ptg.CLASS_VALUE;
27               paramClass = new byte[] {Ptg.CLASS_VALUE};
28           }
29       }
30       
31        public void writeBytes(byte[] array, int offset) {
32           array[offset+0]=(byte) (sid + ptgClass);
33           array[offset+1]=field_1_num_args;
34           LittleEndian.putShort(array,offset+2,field_2_fnc_index);
35       }
36       
37        public int getNumberOfOperands() {
38           return field_1_num_args;
39       }
40       
41       
42   }
43