1    package org.apache.poi.hssf.record.formula;
2    
3    import org.apache.poi.util.BinaryTree;
4    import org.apache.poi.hssf.util.SheetReferences;
5    
6    import java.util.Stack;
7    
8    /**
9     * This class provides the base functionality for Excel sheet functions 
10    * There are two kinds of function Ptgs - tFunc and tFuncVar
11    * Therefore, this class will have ONLY two subclasses
12    * @author  Avik Sengupta
13    * @author Andrew C. Oliver (acoliver at apache dot org)
14    */
15   public abstract class AbstractFunctionPtg extends OperationPtg {
16       
17       private final static int  SIZE = 4;    
18       
19       private static BinaryTree map = produceHash(); 
20       protected static Object[][] functionData = produceFunctionData();
21       protected byte returnClass;
22       protected byte[] paramClass;
23       
24       protected byte field_1_num_args;
25       protected short field_2_fnc_index;
26    
27       public String toString() {
28           StringBuffer buffer = new StringBuffer();
29           buffer
30           .append("<FunctionPtg>").append("\n")
31           .append("   field_1_num_args=").append(field_1_num_args).append("\n")
32           .append("      name         =").append(lookupName(field_2_fnc_index)).append("\n")
33           .append("   field_2_fnc_index=").append(field_2_fnc_index).append("\n")
34           .append("</FunctionPtg>");
35           return buffer.toString();
36       }
37      
38       public int getType() {
39           return -1;
40       }   
41       
42      
43       
44       public short getFunctionIndex() {
45           return field_2_fnc_index;
46       }
47       
48       public String getName() {
49           return lookupName(field_2_fnc_index);
50       }
51       
52       public String toFormulaString(SheetReferences refs) {
53           return getName();
54       }
55       
56       public String toFormulaString(String[] operands) {
57           StringBuffer buf = new StringBuffer();        
58             
59             if (field_2_fnc_index != 1) {
60                 buf.append(getName());
61                 buf.append('(');
62             }
63             if (operands.length >0) {
64                 for (int i=0;i<operands.length;i++) {
65                     buf.append(operands[i]);
66                     buf.append(',');
67                 }
68                 buf.deleteCharAt(buf.length()-1);
69             }
70             if (field_2_fnc_index != 1) {
71               buf.append(")");
72             }
73           return buf.toString();
74       }
75       
76       public abstract void writeBytes(byte[] array, int offset);
77       
78      
79       
80       public int getSize() {
81           return SIZE;
82       }
83       
84       private String lookupName(short index) {
85           return ((String)map.get(new Integer(index))); 
86       }
87       
88       protected short lookupIndex(String name) {
89           return (short)((Integer)map.getKeyForValue(name)).intValue();
90       }
91       
92       /**
93        * Produces the function table hashmap
94        */
95       private static BinaryTree produceHash() {
96           BinaryTree dmap = new BinaryTree();
97   
98           dmap.put(new Integer(0),"COUNT");
99           dmap.put(new Integer(1),"specialflag");
100          dmap.put(new Integer(2),"ISNA");
101          dmap.put(new Integer(3),"ISERROR");
102          dmap.put(new Integer(4),"SUM");
103          dmap.put(new Integer(5),"AVERAGE");
104          dmap.put(new Integer(6),"MIN");
105          dmap.put(new Integer(7),"MAX");
106          dmap.put(new Integer(8),"ROW");
107          dmap.put(new Integer(9),"COLUMN");
108          dmap.put(new Integer(10),"NA");
109          dmap.put(new Integer(11),"NPV");
110          dmap.put(new Integer(12),"STDEV");
111          dmap.put(new Integer(13),"DOLLAR");
112          dmap.put(new Integer(14),"FIXED");
113          dmap.put(new Integer(15),"SIN");
114          dmap.put(new Integer(16),"COS");
115          dmap.put(new Integer(17),"TAN");
116          dmap.put(new Integer(18),"ATAN");
117          dmap.put(new Integer(19),"PI");
118          dmap.put(new Integer(20),"SQRT");
119          dmap.put(new Integer(21),"EXP");
120          dmap.put(new Integer(22),"LN");
121          dmap.put(new Integer(23),"LOG10");
122          dmap.put(new Integer(24),"ABS");
123          dmap.put(new Integer(25),"INT");
124          dmap.put(new Integer(26),"SIGN");
125          dmap.put(new Integer(27),"ROUND");
126          dmap.put(new Integer(28),"LOOKUP");
127          dmap.put(new Integer(29),"INDEX");
128          dmap.put(new Integer(30),"REPT");
129          dmap.put(new Integer(31),"MID");
130          dmap.put(new Integer(32),"LEN");
131          dmap.put(new Integer(33),"VALUE");
132          dmap.put(new Integer(34),"TRUE");
133          dmap.put(new Integer(35),"FALSE");
134          dmap.put(new Integer(36),"AND");
135          dmap.put(new Integer(37),"OR");
136          dmap.put(new Integer(38),"NOT");
137          dmap.put(new Integer(39),"MOD");
138          dmap.put(new Integer(40),"DCOUNT");
139          dmap.put(new Integer(41),"DSUM");
140          dmap.put(new Integer(42),"DAVERAGE");
141          dmap.put(new Integer(43),"DMIN");
142          dmap.put(new Integer(44),"DMAX");
143          dmap.put(new Integer(45),"DSTDEV");
144          dmap.put(new Integer(46),"VAR");
145          dmap.put(new Integer(47),"DVAR");
146          dmap.put(new Integer(48),"TEXT");
147          dmap.put(new Integer(49),"LINEST");
148          dmap.put(new Integer(50),"TREND");
149          dmap.put(new Integer(51),"LOGEST");
150          dmap.put(new Integer(52),"GROWTH");
151          dmap.put(new Integer(53),"GOTO");
152          dmap.put(new Integer(54),"HALT");
153          dmap.put(new Integer(56),"PV");
154          dmap.put(new Integer(57),"FV");
155          dmap.put(new Integer(58),"NPER");
156          dmap.put(new Integer(59),"PMT");
157          dmap.put(new Integer(60),"RATE");
158          dmap.put(new Integer(61),"MIRR");
159          dmap.put(new Integer(62),"IRR");
160          dmap.put(new Integer(63),"RAND");
161          dmap.put(new Integer(64),"MATCH");
162          dmap.put(new Integer(65),"DATE");
163          dmap.put(new Integer(66),"TIME");
164          dmap.put(new Integer(67),"DAY");
165          dmap.put(new Integer(68),"MONTH");
166          dmap.put(new Integer(69),"YEAR");
167          dmap.put(new Integer(70),"WEEKDAY");
168          dmap.put(new Integer(71),"HOUR");
169          dmap.put(new Integer(72),"MINUTE");
170          dmap.put(new Integer(73),"SECOND");
171          dmap.put(new Integer(74),"NOW");
172          dmap.put(new Integer(75),"AREAS");
173          dmap.put(new Integer(76),"ROWS");
174          dmap.put(new Integer(77),"COLUMNS");
175          dmap.put(new Integer(78),"OFFSET");
176          dmap.put(new Integer(79),"ABSREF");
177          dmap.put(new Integer(80),"RELREF");
178          dmap.put(new Integer(81),"ARGUMENT");
179          dmap.put(new Integer(82),"SEARCH");
180          dmap.put(new Integer(83),"TRANSPOSE");
181          dmap.put(new Integer(84),"ERROR");
182          dmap.put(new Integer(85),"STEP");
183          dmap.put(new Integer(86),"TYPE");
184          dmap.put(new Integer(87),"ECHO");
185          dmap.put(new Integer(88),"SETNAME");
186          dmap.put(new Integer(89),"CALLER");
187          dmap.put(new Integer(90),"DEREF");
188          dmap.put(new Integer(91),"WINDOWS");
189          dmap.put(new Integer(92),"SERIES");
190          dmap.put(new Integer(93),"DOCUMENTS");
191          dmap.put(new Integer(94),"ACTIVECELL");
192          dmap.put(new Integer(95),"SELECTION");
193          dmap.put(new Integer(96),"RESULT");
194          dmap.put(new Integer(97),"ATAN2");
195          dmap.put(new Integer(98),"ASIN");
196          dmap.put(new Integer(99),"ACOS");
197          dmap.put(new Integer(100),"CHOOSE");
198          dmap.put(new Integer(101),"HLOOKUP");
199          dmap.put(new Integer(102),"VLOOKUP");
200          dmap.put(new Integer(103),"LINKS");
201          dmap.put(new Integer(104),"INPUT");
202          dmap.put(new Integer(105),"ISREF");
203          dmap.put(new Integer(106),"GETFORMULA");
204          dmap.put(new Integer(107),"GETNAME");
205          dmap.put(new Integer(108),"SETVALUE");
206          dmap.put(new Integer(109),"LOG");
207          dmap.put(new Integer(110),"EXEC");
208          dmap.put(new Integer(111),"CHAR");
209          dmap.put(new Integer(112),"LOWER");
210          dmap.put(new Integer(113),"UPPER");
211          dmap.put(new Integer(114),"PROPER");
212          dmap.put(new Integer(115),"LEFT");
213          dmap.put(new Integer(116),"RIGHT");
214          dmap.put(new Integer(117),"EXACT");
215          dmap.put(new Integer(118),"TRIM");
216          dmap.put(new Integer(119),"REPLACE");
217          dmap.put(new Integer(120),"SUBSTITUTE");
218          dmap.put(new Integer(121),"CODE");
219          dmap.put(new Integer(122),"NAMES");
220          dmap.put(new Integer(123),"DIRECTORY");
221          dmap.put(new Integer(124),"FIND");
222          dmap.put(new Integer(125),"CELL");
223          dmap.put(new Integer(126),"ISERR");
224          dmap.put(new Integer(127),"ISTEXT");
225          dmap.put(new Integer(128),"ISNUMBER");
226          dmap.put(new Integer(129),"ISBLANK");
227          dmap.put(new Integer(130),"T");
228          dmap.put(new Integer(131),"N");
229          dmap.put(new Integer(132),"FOPEN");
230          dmap.put(new Integer(133),"FCLOSE");
231          dmap.put(new Integer(134),"FSIZE");
232          dmap.put(new Integer(135),"FREADLN");
233          dmap.put(new Integer(136),"FREAD");
234          dmap.put(new Integer(137),"FWRITELN");
235          dmap.put(new Integer(138),"FWRITE");
236          dmap.put(new Integer(139),"FPOS");
237          dmap.put(new Integer(140),"DATEVALUE");
238          dmap.put(new Integer(141),"TIMEVALUE");
239          dmap.put(new Integer(142),"SLN");
240          dmap.put(new Integer(143),"SYD");
241          dmap.put(new Integer(144),"DDB");
242          dmap.put(new Integer(145),"GETDEF");
243          dmap.put(new Integer(146),"REFTEXT");
244          dmap.put(new Integer(147),"TEXTREF");
245          dmap.put(new Integer(148),"INDIRECT");
246          dmap.put(new Integer(149),"REGISTER");
247          dmap.put(new Integer(150),"CALL");
248          dmap.put(new Integer(151),"ADDBAR");
249          dmap.put(new Integer(152),"ADDMENU");
250          dmap.put(new Integer(153),"ADDCOMMAND");
251          dmap.put(new Integer(154),"ENABLECOMMAND");
252          dmap.put(new Integer(155),"CHECKCOMMAND");
253          dmap.put(new Integer(156),"RENAMECOMMAND");
254          dmap.put(new Integer(157),"SHOWBAR");
255          dmap.put(new Integer(158),"DELETEMENU");
256          dmap.put(new Integer(159),"DELETECOMMAND");
257          dmap.put(new Integer(160),"GETCHARTITEM");
258          dmap.put(new Integer(161),"DIALOGBOX");
259          dmap.put(new Integer(162),"CLEAN");
260          dmap.put(new Integer(163),"MDETERM");
261          dmap.put(new Integer(164),"MINVERSE");
262          dmap.put(new Integer(165),"MMULT");
263          dmap.put(new Integer(166),"FILES");
264          dmap.put(new Integer(167),"IPMT");
265          dmap.put(new Integer(168),"PPMT");
266          dmap.put(new Integer(169),"COUNTA");
267          dmap.put(new Integer(170),"CANCELKEY");
268          dmap.put(new Integer(175),"INITIATE");
269          dmap.put(new Integer(176),"REQUEST");
270          dmap.put(new Integer(177),"POKE");
271          dmap.put(new Integer(178),"EXECUTE");
272          dmap.put(new Integer(179),"TERMINATE");
273          dmap.put(new Integer(180),"RESTART");
274          dmap.put(new Integer(181),"HELP");
275          dmap.put(new Integer(182),"GETBAR");
276          dmap.put(new Integer(183),"PRODUCT");
277          dmap.put(new Integer(184),"FACT");
278          dmap.put(new Integer(185),"GETCELL");
279          dmap.put(new Integer(186),"GETWORKSPACE");
280          dmap.put(new Integer(187),"GETWINDOW");
281          dmap.put(new Integer(188),"GETDOCUMENT");
282          dmap.put(new Integer(189),"DPRODUCT");
283          dmap.put(new Integer(190),"ISNONTEXT");
284          dmap.put(new Integer(191),"GETNOTE");
285          dmap.put(new Integer(192),"NOTE");
286          dmap.put(new Integer(193),"STDEVP");
287          dmap.put(new Integer(194),"VARP");
288          dmap.put(new Integer(195),"DSTDEVP");
289          dmap.put(new Integer(196),"DVARP");
290          dmap.put(new Integer(197),"TRUNC");
291          dmap.put(new Integer(198),"ISLOGICAL");
292          dmap.put(new Integer(199),"DCOUNTA");
293          dmap.put(new Integer(200),"DELETEBAR");
294          dmap.put(new Integer(201),"UNREGISTER");
295          dmap.put(new Integer(204),"USDOLLAR");
296          dmap.put(new Integer(205),"FINDB");
297          dmap.put(new Integer(206),"SEARCHB");
298          dmap.put(new Integer(207),"REPLACEB");
299          dmap.put(new Integer(208),"LEFTB");
300          dmap.put(new Integer(209),"RIGHTB");
301          dmap.put(new Integer(210),"MIDB");
302          dmap.put(new Integer(211),"LENB");
303          dmap.put(new Integer(212),"ROUNDUP");
304          dmap.put(new Integer(213),"ROUNDDOWN");
305          dmap.put(new Integer(214),"ASC");
306          dmap.put(new Integer(215),"DBCS");
307          dmap.put(new Integer(216),"RANK");
308          dmap.put(new Integer(219),"ADDRESS");
309          dmap.put(new Integer(220),"DAYS360");
310          dmap.put(new Integer(221),"TODAY");
311          dmap.put(new Integer(222),"VDB");
312          dmap.put(new Integer(227),"MEDIAN");
313          dmap.put(new Integer(228),"SUMPRODUCT");
314          dmap.put(new Integer(229),"SINH");
315          dmap.put(new Integer(230),"COSH");
316          dmap.put(new Integer(231),"TANH");
317          dmap.put(new Integer(232),"ASINH");
318          dmap.put(new Integer(233),"ACOSH");
319          dmap.put(new Integer(234),"ATANH");
320          dmap.put(new Integer(235),"DGET");
321          dmap.put(new Integer(236),"CREATEOBJECT");
322          dmap.put(new Integer(237),"VOLATILE");
323          dmap.put(new Integer(238),"LASTERROR");
324          dmap.put(new Integer(239),"CUSTOMUNDO");
325          dmap.put(new Integer(240),"CUSTOMREPEAT");
326          dmap.put(new Integer(241),"FORMULACONVERT");
327          dmap.put(new Integer(242),"GETLINKINFO");
328          dmap.put(new Integer(243),"TEXTBOX");
329          dmap.put(new Integer(244),"INFO");
330          dmap.put(new Integer(245),"GROUP");
331          dmap.put(new Integer(246),"GETOBJECT");
332          dmap.put(new Integer(247),"DB");
333          dmap.put(new Integer(248),"PAUSE");
334          dmap.put(new Integer(250),"RESUME");
335          dmap.put(new Integer(252),"FREQUENCY");
336          dmap.put(new Integer(253),"ADDTOOLBAR");
337          dmap.put(new Integer(254),"DELETETOOLBAR");
338          dmap.put(new Integer(256),"RESETTOOLBAR");
339          dmap.put(new Integer(257),"EVALUATE");
340          dmap.put(new Integer(258),"GETTOOLBAR");
341          dmap.put(new Integer(259),"GETTOOL");
342          dmap.put(new Integer(260),"SPELLINGCHECK");
343          dmap.put(new Integer(261),"ERRORTYPE");
344          dmap.put(new Integer(262),"APPTITLE");
345          dmap.put(new Integer(263),"WINDOWTITLE");
346          dmap.put(new Integer(264),"SAVETOOLBAR");
347          dmap.put(new Integer(265),"ENABLETOOL");
348          dmap.put(new Integer(266),"PRESSTOOL");
349          dmap.put(new Integer(267),"REGISTERID");
350          dmap.put(new Integer(268),"GETWORKBOOK");
351          dmap.put(new Integer(269),"AVEDEV");
352          dmap.put(new Integer(270),"BETADIST");
353          dmap.put(new Integer(271),"GAMMALN");
354          dmap.put(new Integer(272),"BETAINV");
355          dmap.put(new Integer(273),"BINOMDIST");
356          dmap.put(new Integer(274),"CHIDIST");
357          dmap.put(new Integer(275),"CHIINV");
358          dmap.put(new Integer(276),"COMBIN");
359          dmap.put(new Integer(277),"CONFIDENCE");
360          dmap.put(new Integer(278),"CRITBINOM");
361          dmap.put(new Integer(279),"EVEN");
362          dmap.put(new Integer(280),"EXPONDIST");
363          dmap.put(new Integer(281),"FDIST");
364          dmap.put(new Integer(282),"FINV");
365          dmap.put(new Integer(283),"FISHER");
366          dmap.put(new Integer(284),"FISHERINV");
367          dmap.put(new Integer(285),"FLOOR");
368          dmap.put(new Integer(286),"GAMMADIST");
369          dmap.put(new Integer(287),"GAMMAINV");
370          dmap.put(new Integer(288),"CEILING");
371          dmap.put(new Integer(289),"HYPGEOMDIST");
372          dmap.put(new Integer(290),"LOGNORMDIST");
373          dmap.put(new Integer(291),"LOGINV");
374          dmap.put(new Integer(292),"NEGBINOMDIST");
375          dmap.put(new Integer(293),"NORMDIST");
376          dmap.put(new Integer(294),"NORMSDIST");
377          dmap.put(new Integer(295),"NORMINV");
378          dmap.put(new Integer(296),"NORMSINV");
379          dmap.put(new Integer(297),"STANDARDIZE");
380          dmap.put(new Integer(298),"ODD");
381          dmap.put(new Integer(299),"PERMUT");
382          dmap.put(new Integer(300),"POISSON");
383          dmap.put(new Integer(301),"TDIST");
384          dmap.put(new Integer(302),"WEIBULL");
385          dmap.put(new Integer(303),"SUMXMY2");
386          dmap.put(new Integer(304),"SUMX2MY2");
387          dmap.put(new Integer(305),"SUMX2PY2");
388          dmap.put(new Integer(306),"CHITEST");
389          dmap.put(new Integer(307),"CORREL");
390          dmap.put(new Integer(308),"COVAR");
391          dmap.put(new Integer(309),"FORECAST");
392          dmap.put(new Integer(310),"FTEST");
393          dmap.put(new Integer(311),"INTERCEPT");
394          dmap.put(new Integer(312),"PEARSON");
395          dmap.put(new Integer(313),"RSQ");
396          dmap.put(new Integer(314),"STEYX");
397          dmap.put(new Integer(315),"SLOPE");
398          dmap.put(new Integer(316),"TTEST");
399          dmap.put(new Integer(317),"PROB");
400          dmap.put(new Integer(318),"DEVSQ");
401          dmap.put(new Integer(319),"GEOMEAN");
402          dmap.put(new Integer(320),"HARMEAN");
403          dmap.put(new Integer(321),"SUMSQ");
404          dmap.put(new Integer(322),"KURT");
405          dmap.put(new Integer(323),"SKEW");
406          dmap.put(new Integer(324),"ZTEST");
407          dmap.put(new Integer(325),"LARGE");
408          dmap.put(new Integer(326),"SMALL");
409          dmap.put(new Integer(327),"QUARTILE");
410          dmap.put(new Integer(328),"PERCENTILE");
411          dmap.put(new Integer(329),"PERCENTRANK");
412          dmap.put(new Integer(330),"MODE");
413          dmap.put(new Integer(331),"TRIMMEAN");
414          dmap.put(new Integer(332),"TINV");
415          dmap.put(new Integer(334),"MOVIECOMMAND");
416          dmap.put(new Integer(335),"GETMOVIE");
417          dmap.put(new Integer(336),"CONCATENATE");
418          dmap.put(new Integer(337),"POWER");
419          dmap.put(new Integer(338),"PIVOTADDDATA");
420          dmap.put(new Integer(339),"GETPIVOTTABLE");
421          dmap.put(new Integer(340),"GETPIVOTFIELD");
422          dmap.put(new Integer(341),"GETPIVOTITEM");
423          dmap.put(new Integer(342),"RADIANS");
424          dmap.put(new Integer(343),"DEGREES");
425          dmap.put(new Integer(344),"SUBTOTAL");
426          dmap.put(new Integer(345),"SUMIF");
427          dmap.put(new Integer(346),"COUNTIF");
428          dmap.put(new Integer(347),"COUNTBLANK");
429          dmap.put(new Integer(348),"SCENARIOGET");
430          dmap.put(new Integer(349),"OPTIONSLISTSGET");
431          dmap.put(new Integer(350),"ISPMT");
432          dmap.put(new Integer(351),"DATEDIF");
433          dmap.put(new Integer(352),"DATESTRING");
434          dmap.put(new Integer(353),"NUMBERSTRING");
435          dmap.put(new Integer(354),"ROMAN");
436          dmap.put(new Integer(355),"OPENDIALOG");
437          dmap.put(new Integer(356),"SAVEDIALOG");
438          dmap.put(new Integer(357),"VIEWGET");
439          dmap.put(new Integer(358),"GETPIVOTDATA");
440          dmap.put(new Integer(359),"HYPERLINK");
441          dmap.put(new Integer(360),"PHONETIC");
442          dmap.put(new Integer(361),"AVERAGEA");
443          dmap.put(new Integer(362),"MAXA");
444          dmap.put(new Integer(363),"MINA");
445          dmap.put(new Integer(364),"STDEVPA");
446          dmap.put(new Integer(365),"VARPA");
447          dmap.put(new Integer(366),"STDEVA");
448          dmap.put(new Integer(367),"VARA");
449  
450          return dmap;
451      }
452      
453      private static Object[][]  produceFunctionData() {
454          Object [][] functionData = new Object[368][3];
455                                   //return Class                       // Param Class                               //Num Params 
456          functionData[0][0]=new Byte(Ptg.CLASS_VALUE);functionData[0][1]=new byte[] {Ptg.CLASS_REF};functionData[0][2]=new Integer(-1);
457          functionData[2][0]=new Byte(Ptg.CLASS_VALUE);functionData[2][1]=new byte[] {Ptg.CLASS_VALUE};functionData[2][2]=new Integer(1);
458          functionData[3][0]=new Byte(Ptg.CLASS_VALUE);functionData[3][1]=new byte[] {Ptg.CLASS_VALUE};functionData[3][2]=new Integer(1);
459          functionData[4][0]=new Byte(Ptg.CLASS_VALUE);functionData[4][1]=new byte[] {Ptg.CLASS_REF};functionData[4][2]=new Integer(-1);
460          functionData[5][0]=new Byte(Ptg.CLASS_VALUE);functionData[5][1]=new byte[] {Ptg.CLASS_REF};functionData[5][2]=new Integer(-1);
461          functionData[6][0]=new Byte(Ptg.CLASS_VALUE);functionData[6][1]=new byte[] {Ptg.CLASS_REF};functionData[6][2]=new Integer(-1);
462          functionData[7][0]=new Byte(Ptg.CLASS_VALUE);functionData[7][1]=new byte[] {Ptg.CLASS_REF};functionData[7][2]=new Integer(-1);
463          functionData[8][0]=new Byte(Ptg.CLASS_VALUE);functionData[8][1]=new byte[] {Ptg.CLASS_REF};functionData[8][2]=new Integer(-1);
464          functionData[9][0]=new Byte(Ptg.CLASS_VALUE);functionData[9][1]=new byte[] {Ptg.CLASS_REF};functionData[9][2]=new Integer(-1);
465          functionData[10][0]=new Byte(Ptg.CLASS_VALUE);functionData[10][1]=new byte[] {Ptg.CLASS_VALUE};functionData[10][2]=new Integer(0);
466          functionData[11][0]=new Byte(Ptg.CLASS_VALUE);functionData[11][1]=new byte[] {Ptg.CLASS_REF};functionData[11][2]=new Integer(-1);
467          functionData[12][0]=new Byte(Ptg.CLASS_VALUE);functionData[12][1]=new byte[] {Ptg.CLASS_REF};functionData[12][2]=new Integer(-1);
468          functionData[13][0]=new Byte(Ptg.CLASS_VALUE);functionData[13][1]=new byte[] {Ptg.CLASS_VALUE};functionData[13][2]=new Integer(-1);
469          functionData[14][0]=new Byte(Ptg.CLASS_VALUE);functionData[14][1]=new byte[] {Ptg.CLASS_VALUE};functionData[14][2]=new Integer(-1);
470          functionData[15][0]=new Byte(Ptg.CLASS_VALUE);functionData[15][1]=new byte[] {Ptg.CLASS_VALUE};functionData[15][2]=new Integer(1);
471          functionData[16][0]=new Byte(Ptg.CLASS_VALUE);functionData[16][1]=new byte[] {Ptg.CLASS_VALUE};functionData[16][2]=new Integer(1);
472          functionData[17][0]=new Byte(Ptg.CLASS_VALUE);functionData[17][1]=new byte[] {Ptg.CLASS_VALUE};functionData[17][2]=new Integer(1);
473          functionData[18][0]=new Byte(Ptg.CLASS_VALUE);functionData[18][1]=new byte[] {Ptg.CLASS_VALUE};functionData[18][2]=new Integer(1);
474          functionData[19][0]=new Byte(Ptg.CLASS_VALUE);functionData[19][1]=new byte[] {Ptg.CLASS_VALUE};functionData[19][2]=new Integer(0);
475          functionData[20][0]=new Byte(Ptg.CLASS_VALUE);functionData[20][1]=new byte[] {Ptg.CLASS_VALUE};functionData[20][2]=new Integer(1);
476          functionData[21][0]=new Byte(Ptg.CLASS_VALUE);functionData[21][1]=new byte[] {Ptg.CLASS_VALUE};functionData[21][2]=new Integer(1);
477          functionData[22][0]=new Byte(Ptg.CLASS_VALUE);functionData[22][1]=new byte[] {Ptg.CLASS_VALUE};functionData[22][2]=new Integer(1);
478          functionData[23][0]=new Byte(Ptg.CLASS_VALUE);functionData[23][1]=new byte[] {Ptg.CLASS_VALUE};functionData[23][2]=new Integer(1);
479          functionData[24][0]=new Byte(Ptg.CLASS_VALUE);functionData[24][1]=new byte[] {Ptg.CLASS_VALUE};functionData[24][2]=new Integer(1);
480          functionData[25][0]=new Byte(Ptg.CLASS_VALUE);functionData[25][1]=new byte[] {Ptg.CLASS_VALUE};functionData[25][2]=new Integer(1);
481          functionData[26][0]=new Byte(Ptg.CLASS_VALUE);functionData[26][1]=new byte[] {Ptg.CLASS_VALUE};functionData[26][2]=new Integer(1);
482          functionData[27][0]=new Byte(Ptg.CLASS_VALUE);functionData[27][1]=new byte[] {Ptg.CLASS_VALUE};functionData[27][2]=new Integer(2);
483          functionData[28][0]=new Byte(Ptg.CLASS_VALUE);functionData[28][1]=new byte[] {Ptg.CLASS_REF};functionData[28][2]=new Integer(-1);
484          functionData[29][0]=new Byte(Ptg.CLASS_VALUE);functionData[29][1]=new byte[] {Ptg.CLASS_REF};functionData[29][2]=new Integer(-1);
485          functionData[30][0]=new Byte(Ptg.CLASS_VALUE);functionData[30][1]=new byte[] {Ptg.CLASS_VALUE};functionData[30][2]=new Integer(2);
486          functionData[31][0]=new Byte(Ptg.CLASS_VALUE);functionData[31][1]=new byte[] {Ptg.CLASS_VALUE};functionData[31][2]=new Integer(3);
487          functionData[32][0]=new Byte(Ptg.CLASS_VALUE);functionData[32][1]=new byte[] {Ptg.CLASS_VALUE};functionData[32][2]=new Integer(1);
488          functionData[33][0]=new Byte(Ptg.CLASS_VALUE);functionData[33][1]=new byte[] {Ptg.CLASS_VALUE};functionData[33][2]=new Integer(1);
489          functionData[34][0]=new Byte(Ptg.CLASS_VALUE);functionData[34][1]=new byte[] {Ptg.CLASS_VALUE};functionData[34][2]=new Integer(1);
490          functionData[35][0]=new Byte(Ptg.CLASS_VALUE);functionData[35][1]=new byte[] {Ptg.CLASS_VALUE};functionData[35][2]=new Integer(1);
491          functionData[36][0]=new Byte(Ptg.CLASS_VALUE);functionData[36][1]=new byte[] {Ptg.CLASS_REF};functionData[36][2]=new Integer(-1);
492          functionData[37][0]=new Byte(Ptg.CLASS_VALUE);functionData[37][1]=new byte[] {Ptg.CLASS_REF};functionData[37][2]=new Integer(-1);
493          functionData[38][0]=new Byte(Ptg.CLASS_VALUE);functionData[38][1]=new byte[] {Ptg.CLASS_VALUE};functionData[38][2]=new Integer(1);
494          functionData[39][0]=new Byte(Ptg.CLASS_VALUE);functionData[39][1]=new byte[] {Ptg.CLASS_VALUE};functionData[39][2]=new Integer(2);
495          functionData[40][0]=new Byte(Ptg.CLASS_VALUE);functionData[40][1]=new byte[] {Ptg.CLASS_REF};functionData[40][2]=new Integer(3);
496          functionData[41][0]=new Byte(Ptg.CLASS_VALUE);functionData[41][1]=new byte[] {Ptg.CLASS_REF};functionData[41][2]=new Integer(3);
497          functionData[42][0]=new Byte(Ptg.CLASS_VALUE);functionData[42][1]=new byte[] {Ptg.CLASS_REF};functionData[42][2]=new Integer(3);
498          functionData[43][0]=new Byte(Ptg.CLASS_VALUE);functionData[43][1]=new byte[] {Ptg.CLASS_REF};functionData[43][2]=new Integer(3);
499          functionData[44][0]=new Byte(Ptg.CLASS_VALUE);functionData[44][1]=new byte[] {Ptg.CLASS_REF};functionData[44][2]=new Integer(3);
500          functionData[45][0]=new Byte(Ptg.CLASS_VALUE);functionData[45][1]=new byte[] {Ptg.CLASS_REF};functionData[45][2]=new Integer(3);
501          functionData[46][0]=new Byte(Ptg.CLASS_VALUE);functionData[46][1]=new byte[] {Ptg.CLASS_REF};functionData[46][2]=new Integer(-1);
502          functionData[47][0]=new Byte(Ptg.CLASS_VALUE);functionData[47][1]=new byte[] {Ptg.CLASS_REF};functionData[47][2]=new Integer(3);
503          functionData[48][0]=new Byte(Ptg.CLASS_VALUE);functionData[48][1]=new byte[] {Ptg.CLASS_VALUE};functionData[48][2]=new Integer(2);
504          functionData[49][0]=new Byte(Ptg.CLASS_VALUE);functionData[49][1]=new byte[] {Ptg.CLASS_REF};functionData[49][2]=new Integer(-1);
505          functionData[50][0]=new Byte(Ptg.CLASS_VALUE);functionData[50][1]=new byte[] {Ptg.CLASS_REF};functionData[50][2]=new Integer(-1);
506          functionData[51][0]=new Byte(Ptg.CLASS_VALUE);functionData[51][1]=new byte[] {Ptg.CLASS_REF};functionData[51][2]=new Integer(-1);
507          functionData[52][0]=new Byte(Ptg.CLASS_VALUE);functionData[52][1]=new byte[] {Ptg.CLASS_REF};functionData[52][2]=new Integer(-1);
508          
509          
510          functionData[56][0]=new Byte(Ptg.CLASS_VALUE);functionData[56][1]=new byte[] {Ptg.CLASS_VALUE};functionData[56][2]=new Integer(-1);
511          functionData[57][0]=new Byte(Ptg.CLASS_VALUE);functionData[57][1]=new byte[] {Ptg.CLASS_VALUE};functionData[57][2]=new Integer(-1);
512          functionData[58][0]=new Byte(Ptg.CLASS_VALUE);functionData[58][1]=new byte[] {Ptg.CLASS_VALUE};functionData[58][2]=new Integer(-1);
513          functionData[59][0]=new Byte(Ptg.CLASS_VALUE);functionData[59][1]=new byte[] {Ptg.CLASS_VALUE};functionData[59][2]=new Integer(-1);
514          functionData[60][0]=new Byte(Ptg.CLASS_VALUE);functionData[60][1]=new byte[] {Ptg.CLASS_VALUE};functionData[60][2]=new Integer(-1);
515          functionData[61][0]=new Byte(Ptg.CLASS_VALUE);functionData[61][1]=new byte[] {Ptg.CLASS_VALUE};functionData[61][2]=new Integer(3);
516          functionData[62][0]=new Byte(Ptg.CLASS_VALUE);functionData[62][1]=new byte[] {Ptg.CLASS_REF};functionData[62][2]=new Integer(-1);
517          functionData[63][0]=new Byte(Ptg.CLASS_VALUE);functionData[63][1]=new byte[] {Ptg.CLASS_REF};functionData[63][2]=new Integer(1);
518          functionData[64][0]=new Byte(Ptg.CLASS_VALUE);functionData[64][1]=new byte[] {Ptg.CLASS_REF};functionData[64][2]=new Integer(-1);
519          functionData[65][0]=new Byte(Ptg.CLASS_VALUE);functionData[65][1]=new byte[] {Ptg.CLASS_VALUE};functionData[65][2]=new Integer(3);
520          functionData[66][0]=new Byte(Ptg.CLASS_VALUE);functionData[66][1]=new byte[] {Ptg.CLASS_VALUE};functionData[66][2]=new Integer(3);
521          functionData[67][0]=new Byte(Ptg.CLASS_VALUE);functionData[67][1]=new byte[] {Ptg.CLASS_VALUE};functionData[67][2]=new Integer(1);
522          functionData[68][0]=new Byte(Ptg.CLASS_VALUE);functionData[68][1]=new byte[] {Ptg.CLASS_VALUE};functionData[68][2]=new Integer(1);
523          functionData[69][0]=new Byte(Ptg.CLASS_VALUE);functionData[69][1]=new byte[] {Ptg.CLASS_VALUE};functionData[69][2]=new Integer(1);
524          functionData[70][0]=new Byte(Ptg.CLASS_VALUE);functionData[70][1]=new byte[] {Ptg.CLASS_VALUE};functionData[70][2]=new Integer(-1);
525          functionData[71][0]=new Byte(Ptg.CLASS_VALUE);functionData[71][1]=new byte[] {Ptg.CLASS_VALUE};functionData[71][2]=new Integer(1);
526          functionData[72][0]=new Byte(Ptg.CLASS_VALUE);functionData[72][1]=new byte[] {Ptg.CLASS_VALUE};functionData[72][2]=new Integer(1);
527          functionData[73][0]=new Byte(Ptg.CLASS_VALUE);functionData[73][1]=new byte[] {Ptg.CLASS_VALUE};functionData[73][2]=new Integer(1);
528          functionData[74][0]=new Byte(Ptg.CLASS_VALUE);functionData[74][1]=new byte[] {Ptg.CLASS_REF};functionData[74][2]=new Integer(1);
529          functionData[75][0]=new Byte(Ptg.CLASS_VALUE);functionData[75][1]=new byte[] {Ptg.CLASS_REF};functionData[75][2]=new Integer(1);
530          functionData[76][0]=new Byte(Ptg.CLASS_VALUE);functionData[76][1]=new byte[] {Ptg.CLASS_REF};functionData[76][2]=new Integer(1);
531          functionData[77][0]=new Byte(Ptg.CLASS_VALUE);functionData[77][1]=new byte[] {Ptg.CLASS_REF};functionData[77][2]=new Integer(1);
532          functionData[78][0]=new Byte(Ptg.CLASS_VALUE);functionData[78][1]=new byte[] {Ptg.CLASS_VALUE};functionData[78][2]=new Integer(-1);
533          
534          
535          
536          functionData[82][0]=new Byte(Ptg.CLASS_VALUE);functionData[82][1]=new byte[] {Ptg.CLASS_VALUE};functionData[82][2]=new Integer(-1);
537          functionData[83][0]=new Byte(Ptg.CLASS_VALUE);functionData[83][1]=new byte[] {Ptg.CLASS_VALUE};functionData[83][2]=new Integer(1);
538          
539          
540          functionData[86][0]=new Byte(Ptg.CLASS_VALUE);functionData[86][1]=new byte[] {Ptg.CLASS_VALUE};functionData[86][2]=new Integer(1);
541          
542          
543          
544          
545          
546          
547          
548          
549          
550          
551          functionData[97][0]=new Byte(Ptg.CLASS_VALUE);functionData[97][1]=new byte[] {Ptg.CLASS_VALUE};functionData[97][2]=new Integer(2);
552          functionData[98][0]=new Byte(Ptg.CLASS_VALUE);functionData[98][1]=new byte[] {Ptg.CLASS_VALUE};functionData[98][2]=new Integer(1);
553          functionData[99][0]=new Byte(Ptg.CLASS_VALUE);functionData[99][1]=new byte[] {Ptg.CLASS_VALUE};functionData[99][2]=new Integer(1);
554          
555          functionData[101][0]=new Byte(Ptg.CLASS_VALUE);functionData[101][1]=new byte[] {Ptg.CLASS_REF};functionData[101][2]=new Integer(-1);
556          functionData[102][0]=new Byte(Ptg.CLASS_VALUE);functionData[102][1]=new byte[] {Ptg.CLASS_REF};functionData[102][2]=new Integer(-1);
557          
558          
559          functionData[105][0]=new Byte(Ptg.CLASS_VALUE);functionData[105][1]=new byte[] {Ptg.CLASS_REF};functionData[105][2]=new Integer(1);
560          
561          
562          
563          functionData[109][0]=new Byte(Ptg.CLASS_VALUE);functionData[109][1]=new byte[] {Ptg.CLASS_VALUE};functionData[109][2]=new Integer(-1);
564          
565          functionData[111][0]=new Byte(Ptg.CLASS_VALUE);functionData[111][1]=new byte[] {Ptg.CLASS_VALUE};functionData[111][2]=new Integer(1);
566          functionData[112][0]=new Byte(Ptg.CLASS_VALUE);functionData[112][1]=new byte[] {Ptg.CLASS_VALUE};functionData[112][2]=new Integer(1);
567          functionData[113][0]=new Byte(Ptg.CLASS_VALUE);functionData[113][1]=new byte[] {Ptg.CLASS_VALUE};functionData[113][2]=new Integer(1);
568          functionData[114][0]=new Byte(Ptg.CLASS_VALUE);functionData[114][1]=new byte[] {Ptg.CLASS_VALUE};functionData[114][2]=new Integer(1);
569          functionData[115][0]=new Byte(Ptg.CLASS_VALUE);functionData[115][1]=new byte[] {Ptg.CLASS_VALUE};functionData[115][2]=new Integer(-1);
570          functionData[116][0]=new Byte(Ptg.CLASS_VALUE);functionData[116][1]=new byte[] {Ptg.CLASS_VALUE};functionData[116][2]=new Integer(-1);
571          functionData[117][0]=new Byte(Ptg.CLASS_VALUE);functionData[117][1]=new byte[] {Ptg.CLASS_VALUE};functionData[117][2]=new Integer(2);
572          functionData[118][0]=new Byte(Ptg.CLASS_VALUE);functionData[118][1]=new byte[] {Ptg.CLASS_VALUE};functionData[118][2]=new Integer(1);
573          functionData[119][0]=new Byte(Ptg.CLASS_VALUE);functionData[119][1]=new byte[] {Ptg.CLASS_VALUE};functionData[119][2]=new Integer(4);
574          functionData[120][0]=new Byte(Ptg.CLASS_VALUE);functionData[120][1]=new byte[] {Ptg.CLASS_VALUE};functionData[120][2]=new Integer(-1);
575          functionData[121][0]=new Byte(Ptg.CLASS_VALUE);functionData[121][1]=new byte[] {Ptg.CLASS_VALUE};functionData[121][2]=new Integer(1);
576          
577          
578          functionData[124][0]=new Byte(Ptg.CLASS_VALUE);functionData[124][1]=new byte[] {Ptg.CLASS_VALUE};functionData[124][2]=new Integer(-1);
579          functionData[125][0]=new Byte(Ptg.CLASS_VALUE);functionData[125][1]=new byte[] {Ptg.CLASS_VALUE};functionData[125][2]=new Integer(-1);
580          functionData[126][0]=new Byte(Ptg.CLASS_VALUE);functionData[126][1]=new byte[] {Ptg.CLASS_VALUE};functionData[126][2]=new Integer(1);
581          functionData[127][0]=new Byte(Ptg.CLASS_VALUE);functionData[127][1]=new byte[] {Ptg.CLASS_VALUE};functionData[127][2]=new Integer(1);
582          functionData[128][0]=new Byte(Ptg.CLASS_VALUE);functionData[128][1]=new byte[] {Ptg.CLASS_VALUE};functionData[128][2]=new Integer(1);
583          functionData[129][0]=new Byte(Ptg.CLASS_VALUE);functionData[129][1]=new byte[] {Ptg.CLASS_VALUE};functionData[129][2]=new Integer(1);
584          functionData[130][0]=new Byte(Ptg.CLASS_VALUE);functionData[130][1]=new byte[] {Ptg.CLASS_REF};functionData[130][2]=new Integer(1);
585          functionData[131][0]=new Byte(Ptg.CLASS_VALUE);functionData[131][1]=new byte[] {Ptg.CLASS_REF};functionData[131][2]=new Integer(1);
586          
587          
588          
589          
590          
591          
592          
593          
594          functionData[140][0]=new Byte(Ptg.CLASS_VALUE);functionData[140][1]=new byte[] {Ptg.CLASS_VALUE};functionData[140][2]=new Integer(1);
595          functionData[141][0]=new Byte(Ptg.CLASS_VALUE);functionData[141][1]=new byte[] {Ptg.CLASS_VALUE};functionData[141][2]=new Integer(1);
596          functionData[142][0]=new Byte(Ptg.CLASS_VALUE);functionData[142][1]=new byte[] {Ptg.CLASS_VALUE};functionData[142][2]=new Integer(3);
597          
598          
599          
600          
601          
602          functionData[148][0]=new Byte(Ptg.CLASS_VALUE);functionData[148][1]=new byte[] {Ptg.CLASS_VALUE};functionData[148][2]=new Integer(-1);
603          
604          functionData[150][0]=new Byte(Ptg.CLASS_VALUE);functionData[150][1]=new byte[] {Ptg.CLASS_VALUE};functionData[150][2]=new Integer(-1);
605          
606          
607          
608          
609          
610          
611          
612          
613          
614          
615          
616          functionData[162][0]=new Byte(Ptg.CLASS_VALUE);functionData[162][1]=new byte[] {Ptg.CLASS_VALUE};functionData[162][2]=new Integer(1);
617          functionData[163][0]=new Byte(Ptg.CLASS_VALUE);functionData[163][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[163][2]=new Integer(1);
618          functionData[164][0]=new Byte(Ptg.CLASS_VALUE);functionData[164][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[164][2]=new Integer(1);
619          functionData[165][0]=new Byte(Ptg.CLASS_VALUE);functionData[165][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[165][2]=new Integer(2);
620          functionData[166][0]=new Byte(Ptg.CLASS_VALUE);functionData[166][1]=new byte[] {Ptg.CLASS_VALUE};functionData[166][2]=new Integer(-1);
621          functionData[167][0]=new Byte(Ptg.CLASS_VALUE);functionData[167][1]=new byte[] {Ptg.CLASS_VALUE};functionData[167][2]=new Integer(-1);
622          functionData[168][0]=new Byte(Ptg.CLASS_VALUE);functionData[168][1]=new byte[] {Ptg.CLASS_REF};functionData[168][2]=new Integer(-1);
623          
624          
625          
626          
627          
628          
629          
630          
631          
632          
633          functionData[183][0]=new Byte(Ptg.CLASS_VALUE);functionData[183][1]=new byte[] {Ptg.CLASS_REF};functionData[183][2]=new Integer(-1);
634          functionData[184][0]=new Byte(Ptg.CLASS_VALUE);functionData[184][1]=new byte[] {Ptg.CLASS_VALUE};functionData[184][2]=new Integer(1);
635          
636          
637          
638          
639          functionData[189][0]=new Byte(Ptg.CLASS_VALUE);functionData[189][1]=new byte[] {Ptg.CLASS_REF};functionData[189][2]=new Integer(3);
640          functionData[190][0]=new Byte(Ptg.CLASS_VALUE);functionData[190][1]=new byte[] {Ptg.CLASS_VALUE};functionData[190][2]=new Integer(1);
641          
642          
643          functionData[193][0]=new Byte(Ptg.CLASS_VALUE);functionData[193][1]=new byte[] {Ptg.CLASS_REF};functionData[193][2]=new Integer(-1);
644          functionData[194][0]=new Byte(Ptg.CLASS_VALUE);functionData[194][1]=new byte[] {Ptg.CLASS_REF};functionData[194][2]=new Integer(-1);
645          functionData[195][0]=new Byte(Ptg.CLASS_VALUE);functionData[195][1]=new byte[] {Ptg.CLASS_REF};functionData[195][2]=new Integer(3);
646          functionData[196][0]=new Byte(Ptg.CLASS_VALUE);functionData[196][1]=new byte[] {Ptg.CLASS_REF};functionData[196][2]=new Integer(3);
647          functionData[197][0]=new Byte(Ptg.CLASS_VALUE);functionData[197][1]=new byte[] {Ptg.CLASS_VALUE};functionData[197][2]=new Integer(-1);
648          functionData[198][0]=new Byte(Ptg.CLASS_VALUE);functionData[198][1]=new byte[] {Ptg.CLASS_VALUE};functionData[198][2]=new Integer(1);
649          functionData[199][0]=new Byte(Ptg.CLASS_VALUE);functionData[199][1]=new byte[] {Ptg.CLASS_REF};functionData[199][2]=new Integer(3);
650          
651          
652          functionData[204][0]=new Byte(Ptg.CLASS_VALUE);functionData[204][1]=new byte[] {Ptg.CLASS_VALUE};functionData[204][2]=new Integer(-1);
653          functionData[205][0]=new Byte(Ptg.CLASS_VALUE);functionData[205][1]=new byte[] {Ptg.CLASS_VALUE};functionData[205][2]=new Integer(-1);
654          functionData[206][0]=new Byte(Ptg.CLASS_VALUE);functionData[206][1]=new byte[] {Ptg.CLASS_VALUE};functionData[206][2]=new Integer(-1);
655          functionData[207][0]=new Byte(Ptg.CLASS_VALUE);functionData[207][1]=new byte[] {Ptg.CLASS_VALUE};functionData[207][2]=new Integer(3);
656          functionData[208][0]=new Byte(Ptg.CLASS_VALUE);functionData[208][1]=new byte[] {Ptg.CLASS_VALUE};functionData[208][2]=new Integer(1);
657          functionData[209][0]=new Byte(Ptg.CLASS_VALUE);functionData[209][1]=new byte[] {Ptg.CLASS_VALUE};functionData[209][2]=new Integer(2);
658          functionData[210][0]=new Byte(Ptg.CLASS_VALUE);functionData[210][1]=new byte[] {Ptg.CLASS_VALUE};functionData[210][2]=new Integer(2);
659          functionData[211][0]=new Byte(Ptg.CLASS_VALUE);functionData[211][1]=new byte[] {Ptg.CLASS_VALUE};functionData[211][2]=new Integer(1);
660          functionData[212][0]=new Byte(Ptg.CLASS_VALUE);functionData[212][1]=new byte[] {Ptg.CLASS_VALUE};functionData[212][2]=new Integer(1);
661          functionData[213][0]=new Byte(Ptg.CLASS_VALUE);functionData[213][1]=new byte[] {Ptg.CLASS_REF};functionData[213][2]=new Integer(-1);
662          functionData[214][0]=new Byte(Ptg.CLASS_VALUE);functionData[214][1]=new byte[] {Ptg.CLASS_VALUE};functionData[214][2]=new Integer(-1);
663          
664          
665          
666          
667          functionData[221][0]=new Byte(Ptg.CLASS_VALUE);functionData[221][1]=new byte[] {Ptg.CLASS_REF};functionData[221][2]=new Integer(1);
668          functionData[222][0]=new Byte(Ptg.CLASS_VALUE);functionData[222][1]=new byte[] {Ptg.CLASS_VALUE};functionData[222][2]=new Integer(-1);
669          functionData[227][0]=new Byte(Ptg.CLASS_VALUE);functionData[227][1]=new byte[] {Ptg.CLASS_REF};functionData[227][2]=new Integer(-1);
670          functionData[228][0]=new Byte(Ptg.CLASS_VALUE);functionData[228][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[228][2]=new Integer(-1);
671          functionData[229][0]=new Byte(Ptg.CLASS_VALUE);functionData[229][1]=new byte[] {Ptg.CLASS_VALUE};functionData[229][2]=new Integer(1);
672          functionData[230][0]=new Byte(Ptg.CLASS_VALUE);functionData[230][1]=new byte[] {Ptg.CLASS_VALUE};functionData[230][2]=new Integer(1);
673          functionData[231][0]=new Byte(Ptg.CLASS_VALUE);functionData[231][1]=new byte[] {Ptg.CLASS_VALUE};functionData[231][2]=new Integer(1);
674          functionData[232][0]=new Byte(Ptg.CLASS_VALUE);functionData[232][1]=new byte[] {Ptg.CLASS_VALUE};functionData[232][2]=new Integer(1);
675          functionData[233][0]=new Byte(Ptg.CLASS_VALUE);functionData[233][1]=new byte[] {Ptg.CLASS_VALUE};functionData[233][2]=new Integer(1);
676          functionData[234][0]=new Byte(Ptg.CLASS_VALUE);functionData[234][1]=new byte[] {Ptg.CLASS_VALUE};functionData[234][2]=new Integer(1);
677          functionData[235][0]=new Byte(Ptg.CLASS_VALUE);functionData[235][1]=new byte[] {Ptg.CLASS_REF};functionData[235][2]=new Integer(3);
678          
679          
680          
681          
682          
683          
684          
685          
686          functionData[244][0]=new Byte(Ptg.CLASS_VALUE);functionData[244][1]=new byte[] {Ptg.CLASS_VALUE};functionData[244][2]=new Integer(2);
687          
688          
689          
690          
691          
692          functionData[252][0]=new Byte(Ptg.CLASS_VALUE);functionData[252][1]=new byte[] {Ptg.CLASS_REF};functionData[252][2]=new Integer(2);
693          
694          
695          
696          
697          
698          
699          
700          
701          
702          
703          
704          
705          
706          
707          
708          functionData[269][0]=new Byte(Ptg.CLASS_VALUE);functionData[269][1]=new byte[] {Ptg.CLASS_REF};functionData[269][2]=new Integer(-1);
709          functionData[270][0]=new Byte(Ptg.CLASS_VALUE);functionData[270][1]=new byte[] {Ptg.CLASS_VALUE};functionData[270][2]=new Integer(-1);
710          functionData[271][0]=new Byte(Ptg.CLASS_VALUE);functionData[271][1]=new byte[] {Ptg.CLASS_VALUE};functionData[271][2]=new Integer(1);
711          functionData[272][0]=new Byte(Ptg.CLASS_VALUE);functionData[272][1]=new byte[] {Ptg.CLASS_VALUE};functionData[272][2]=new Integer(-1);
712          functionData[273][0]=new Byte(Ptg.CLASS_VALUE);functionData[273][1]=new byte[] {Ptg.CLASS_VALUE};functionData[273][2]=new Integer(4);
713          functionData[274][0]=new Byte(Ptg.CLASS_VALUE);functionData[274][1]=new byte[] {Ptg.CLASS_VALUE};functionData[274][2]=new Integer(2);
714          functionData[275][0]=new Byte(Ptg.CLASS_VALUE);functionData[275][1]=new byte[] {Ptg.CLASS_VALUE};functionData[275][2]=new Integer(2);
715          functionData[276][0]=new Byte(Ptg.CLASS_VALUE);functionData[276][1]=new byte[] {Ptg.CLASS_VALUE};functionData[276][2]=new Integer(2);
716          functionData[277][0]=new Byte(Ptg.CLASS_VALUE);functionData[277][1]=new byte[] {Ptg.CLASS_VALUE};functionData[277][2]=new Integer(3);
717          functionData[278][0]=new Byte(Ptg.CLASS_VALUE);functionData[278][1]=new byte[] {Ptg.CLASS_VALUE};functionData[278][2]=new Integer(3);
718          functionData[279][0]=new Byte(Ptg.CLASS_VALUE);functionData[279][1]=new byte[] {Ptg.CLASS_VALUE};functionData[279][2]=new Integer(1);
719          functionData[280][0]=new Byte(Ptg.CLASS_VALUE);functionData[280][1]=new byte[] {Ptg.CLASS_VALUE};functionData[280][2]=new Integer(3);
720          functionData[281][0]=new Byte(Ptg.CLASS_VALUE);functionData[281][1]=new byte[] {Ptg.CLASS_VALUE};functionData[281][2]=new Integer(3);
721          functionData[282][0]=new Byte(Ptg.CLASS_VALUE);functionData[282][1]=new byte[] {Ptg.CLASS_VALUE};functionData[282][2]=new Integer(3);
722          functionData[283][0]=new Byte(Ptg.CLASS_VALUE);functionData[283][1]=new byte[] {Ptg.CLASS_VALUE};functionData[283][2]=new Integer(1);
723          functionData[284][0]=new Byte(Ptg.CLASS_VALUE);functionData[284][1]=new byte[] {Ptg.CLASS_VALUE};functionData[284][2]=new Integer(1);
724          functionData[285][0]=new Byte(Ptg.CLASS_VALUE);functionData[285][1]=new byte[] {Ptg.CLASS_VALUE};functionData[285][2]=new Integer(2);
725          functionData[286][0]=new Byte(Ptg.CLASS_VALUE);functionData[286][1]=new byte[] {Ptg.CLASS_VALUE};functionData[286][2]=new Integer(4);
726          functionData[287][0]=new Byte(Ptg.CLASS_VALUE);functionData[287][1]=new byte[] {Ptg.CLASS_VALUE};functionData[287][2]=new Integer(3);
727          functionData[288][0]=new Byte(Ptg.CLASS_VALUE);functionData[288][1]=new byte[] {Ptg.CLASS_VALUE};functionData[288][2]=new Integer(2);
728          functionData[289][0]=new Byte(Ptg.CLASS_VALUE);functionData[289][1]=new byte[] {Ptg.CLASS_VALUE};functionData[289][2]=new Integer(4);
729          functionData[290][0]=new Byte(Ptg.CLASS_VALUE);functionData[290][1]=new byte[] {Ptg.CLASS_VALUE};functionData[290][2]=new Integer(3);
730          functionData[291][0]=new Byte(Ptg.CLASS_VALUE);functionData[291][1]=new byte[] {Ptg.CLASS_VALUE};functionData[291][2]=new Integer(3);
731          functionData[292][0]=new Byte(Ptg.CLASS_VALUE);functionData[292][1]=new byte[] {Ptg.CLASS_VALUE};functionData[292][2]=new Integer(3);
732          functionData[293][0]=new Byte(Ptg.CLASS_VALUE);functionData[293][1]=new byte[] {Ptg.CLASS_VALUE};functionData[293][2]=new Integer(4);
733          functionData[294][0]=new Byte(Ptg.CLASS_VALUE);functionData[294][1]=new byte[] {Ptg.CLASS_VALUE};functionData[294][2]=new Integer(1);
734          functionData[295][0]=new Byte(Ptg.CLASS_VALUE);functionData[295][1]=new byte[] {Ptg.CLASS_VALUE};functionData[295][2]=new Integer(3);
735          functionData[296][0]=new Byte(Ptg.CLASS_VALUE);functionData[296][1]=new byte[] {Ptg.CLASS_VALUE};functionData[296][2]=new Integer(1);
736          functionData[297][0]=new Byte(Ptg.CLASS_VALUE);functionData[297][1]=new byte[] {Ptg.CLASS_VALUE};functionData[297][2]=new Integer(3);
737          functionData[298][0]=new Byte(Ptg.CLASS_VALUE);functionData[298][1]=new byte[] {Ptg.CLASS_VALUE};functionData[298][2]=new Integer(1);
738          functionData[299][0]=new Byte(Ptg.CLASS_VALUE);functionData[299][1]=new byte[] {Ptg.CLASS_VALUE};functionData[299][2]=new Integer(2);
739          functionData[300][0]=new Byte(Ptg.CLASS_VALUE);functionData[300][1]=new byte[] {Ptg.CLASS_VALUE};functionData[300][2]=new Integer(3);
740          functionData[301][0]=new Byte(Ptg.CLASS_VALUE);functionData[301][1]=new byte[] {Ptg.CLASS_VALUE};functionData[301][2]=new Integer(3);
741          functionData[302][0]=new Byte(Ptg.CLASS_VALUE);functionData[302][1]=new byte[] {Ptg.CLASS_VALUE};functionData[302][2]=new Integer(4);
742          functionData[303][0]=new Byte(Ptg.CLASS_VALUE);functionData[303][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[303][2]=new Integer(2);
743          functionData[304][0]=new Byte(Ptg.CLASS_VALUE);functionData[304][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[304][2]=new Integer(2);
744          functionData[305][0]=new Byte(Ptg.CLASS_VALUE);functionData[305][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[305][2]=new Integer(2);
745          functionData[306][0]=new Byte(Ptg.CLASS_VALUE);functionData[306][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[306][2]=new Integer(2);
746          functionData[307][0]=new Byte(Ptg.CLASS_VALUE);functionData[307][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[307][2]=new Integer(2);
747          functionData[308][0]=new Byte(Ptg.CLASS_VALUE);functionData[308][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[308][2]=new Integer(2);
748          functionData[309][0]=new Byte(Ptg.CLASS_VALUE);functionData[309][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[309][2]=new Integer(3);
749          functionData[310][0]=new Byte(Ptg.CLASS_VALUE);functionData[310][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[310][2]=new Integer(2);
750          functionData[311][0]=new Byte(Ptg.CLASS_VALUE);functionData[311][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[311][2]=new Integer(2);
751          functionData[312][0]=new Byte(Ptg.CLASS_VALUE);functionData[312][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[312][2]=new Integer(2);
752          functionData[313][0]=new Byte(Ptg.CLASS_VALUE);functionData[313][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[313][2]=new Integer(2);
753          functionData[314][0]=new Byte(Ptg.CLASS_VALUE);functionData[314][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[314][2]=new Integer(2);
754          functionData[315][0]=new Byte(Ptg.CLASS_VALUE);functionData[315][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[315][2]=new Integer(2);
755          functionData[316][0]=new Byte(Ptg.CLASS_VALUE);functionData[316][1]=new byte[] {Ptg.CLASS_VALUE};functionData[316][2]=new Integer(4);
756          functionData[317][0]=new Byte(Ptg.CLASS_VALUE);functionData[317][1]=new byte[] {Ptg.CLASS_VALUE};functionData[317][2]=new Integer(-1);
757          functionData[318][0]=new Byte(Ptg.CLASS_VALUE);functionData[318][1]=new byte[] {Ptg.CLASS_REF};functionData[318][2]=new Integer(-1);
758          functionData[319][0]=new Byte(Ptg.CLASS_VALUE);functionData[319][1]=new byte[] {Ptg.CLASS_REF};functionData[319][2]=new Integer(-1);
759          functionData[320][0]=new Byte(Ptg.CLASS_VALUE);functionData[320][1]=new byte[] {Ptg.CLASS_REF};functionData[320][2]=new Integer(-1);
760          functionData[321][0]=new Byte(Ptg.CLASS_VALUE);functionData[321][1]=new byte[] {Ptg.CLASS_REF};functionData[321][2]=new Integer(-1);
761          functionData[322][0]=new Byte(Ptg.CLASS_VALUE);functionData[322][1]=new byte[] {Ptg.CLASS_REF};functionData[322][2]=new Integer(-1);
762          functionData[323][0]=new Byte(Ptg.CLASS_VALUE);functionData[323][1]=new byte[] {Ptg.CLASS_REF};functionData[323][2]=new Integer(-1);
763          functionData[324][0]=new Byte(Ptg.CLASS_VALUE);functionData[324][1]=new byte[] {Ptg.CLASS_VALUE};functionData[324][2]=new Integer(-1);
764          functionData[325][0]=new Byte(Ptg.CLASS_VALUE);functionData[325][1]=new byte[] {Ptg.CLASS_VALUE};functionData[325][2]=new Integer(2);
765          functionData[326][0]=new Byte(Ptg.CLASS_VALUE);functionData[326][1]=new byte[] {Ptg.CLASS_VALUE};functionData[326][2]=new Integer(2);
766          functionData[327][0]=new Byte(Ptg.CLASS_VALUE);functionData[327][1]=new byte[] {Ptg.CLASS_VALUE};functionData[327][2]=new Integer(2);
767          functionData[328][0]=new Byte(Ptg.CLASS_VALUE);functionData[328][1]=new byte[] {Ptg.CLASS_VALUE};functionData[328][2]=new Integer(2);
768          functionData[329][0]=new Byte(Ptg.CLASS_VALUE);functionData[329][1]=new byte[] {Ptg.CLASS_VALUE};functionData[329][2]=new Integer(-1);
769          functionData[330][0]=new Byte(Ptg.CLASS_VALUE);functionData[330][1]=new byte[] {Ptg.CLASS_ARRAY};functionData[330][2]=new Integer(-1);
770          functionData[331][0]=new Byte(Ptg.CLASS_VALUE);functionData[331][1]=new byte[] {Ptg.CLASS_VALUE};functionData[331][2]=new Integer(2);
771          functionData[332][0]=new Byte(Ptg.CLASS_VALUE);functionData[332][1]=new byte[] {Ptg.CLASS_VALUE};functionData[332][2]=new Integer(2);
772          
773          
774          functionData[336][0]=new Byte(Ptg.CLASS_VALUE);functionData[336][1]=new byte[] {Ptg.CLASS_VALUE};functionData[336][2]=new Integer(-1);
775          functionData[337][0]=new Byte(Ptg.CLASS_VALUE);functionData[337][1]=new byte[] {Ptg.CLASS_VALUE};functionData[337][2]=new Integer(2);
776          
777          
778          
779          
780          functionData[342][0]=new Byte(Ptg.CLASS_VALUE);functionData[342][1]=new byte[] {Ptg.CLASS_VALUE};functionData[342][2]=new Integer(1);
781          functionData[343][0]=new Byte(Ptg.CLASS_VALUE);functionData[343][1]=new byte[] {Ptg.CLASS_VALUE};functionData[343][2]=new Integer(1);
782          functionData[344][0]=new Byte(Ptg.CLASS_VALUE);functionData[344][1]=new byte[] {Ptg.CLASS_REF};functionData[344][2]=new Integer(-1);
783          functionData[345][0]=new Byte(Ptg.CLASS_VALUE);functionData[345][1]=new byte[] {Ptg.CLASS_REF};functionData[345][2]=new Integer(-1);
784          functionData[346][0]=new Byte(Ptg.CLASS_VALUE);functionData[346][1]=new byte[] {Ptg.CLASS_VALUE};functionData[346][2]=new Integer(2);
785          functionData[347][0]=new Byte(Ptg.CLASS_VALUE);functionData[347][1]=new byte[] {Ptg.CLASS_REF};functionData[347][2]=new Integer(1);
786          
787          
788          functionData[350][0]=new Byte(Ptg.CLASS_VALUE);functionData[350][1]=new byte[] {Ptg.CLASS_VALUE};functionData[350][2]=new Integer(4);
789          
790          functionData[352][0]=new Byte(Ptg.CLASS_VALUE);functionData[352][1]=new byte[] {Ptg.CLASS_VALUE};functionData[352][2]=new Integer(1);
791          
792          functionData[354][0]=new Byte(Ptg.CLASS_VALUE);functionData[354][1]=new byte[] {Ptg.CLASS_VALUE};functionData[354][2]=new Integer(-1);
793          
794          
795          
796          functionData[358][0]=new Byte(Ptg.CLASS_VALUE);functionData[358][1]=new byte[] {Ptg.CLASS_VALUE};functionData[358][2]=new Integer(2);
797          functionData[359][0]=new Byte(Ptg.CLASS_VALUE);functionData[359][1]=new byte[] {Ptg.CLASS_VALUE};functionData[359][2]=new Integer(-1);
798          functionData[360][0]=new Byte(Ptg.CLASS_VALUE);functionData[360][1]=new byte[] {Ptg.CLASS_REF};functionData[360][2]=new Integer(1);
799          functionData[361][0]=new Byte(Ptg.CLASS_VALUE);functionData[361][1]=new byte[] {Ptg.CLASS_REF};functionData[361][2]=new Integer(-1);
800          functionData[362][0]=new Byte(Ptg.CLASS_VALUE);functionData[362][1]=new byte[] {Ptg.CLASS_REF};functionData[362][2]=new Integer(-1);
801          functionData[363][0]=new Byte(Ptg.CLASS_VALUE);functionData[363][1]=new byte[] {Ptg.CLASS_REF};functionData[363][2]=new Integer(-1);
802          functionData[364][0]=new Byte(Ptg.CLASS_VALUE);functionData[364][1]=new byte[] {Ptg.CLASS_REF};functionData[364][2]=new Integer(-1);
803          functionData[365][0]=new Byte(Ptg.CLASS_VALUE);functionData[365][1]=new byte[] {Ptg.CLASS_REF};functionData[365][2]=new Integer(-1);
804          functionData[366][0]=new Byte(Ptg.CLASS_VALUE);functionData[366][1]=new byte[] {Ptg.CLASS_REF};functionData[366][2]=new Integer(-1);
805          functionData[367][0]=new Byte(Ptg.CLASS_VALUE);functionData[367][1]=new byte[] {Ptg.CLASS_REF};functionData[367][2]=new Integer(-1);
806          
807          
808          return functionData;
809      }
810  
811      public byte getDefaultOperandClass() {
812          return returnClass;
813      }
814      
815      public byte getParameterClass(int index) {
816          try {
817              return paramClass[index];
818          } catch (ArrayIndexOutOfBoundsException aioobe) {
819              return paramClass[paramClass.length - 1];
820          }
821      }
822  }
823