001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: /*
018: * Created on May 8, 2005
019: *
020: */
021: package org.apache.poi.hssf.record.formula.eval;
022:
023: import org.apache.poi.hssf.record.formula.functions.*;
024:
025: /**
026: * @author Amol S. Deshmukh < amolweb at ya hoo dot com >
027: *
028: */
029: public abstract class FunctionEval implements OperationEval {
030: protected static Function[] functions = produceFunctions();
031:
032: public Function getFunction() {
033: short fidx = getFunctionIndex();
034: return functions[fidx];
035: }
036:
037: public abstract short getFunctionIndex();
038:
039: private static Function[] produceFunctions() {
040: Function[] retval = new Function[368];
041: retval[0] = new Count(); // COUNT
042: retval[1] = new If(); // IF
043: retval[2] = new IsNa(); // ISNA
044: retval[3] = new IsError(); // ISERROR
045: retval[4] = new Sum(); // SUM
046: retval[5] = new Average(); // AVERAGE
047: retval[6] = new Min(); // MIN
048: retval[7] = new Max(); // MAX
049: retval[8] = new Row(); // ROW
050: retval[9] = new Column(); // COLUMN
051: retval[10] = new Na(); // NA
052: retval[11] = new Npv(); // NPV
053: retval[12] = new Stdev(); // STDEV
054: retval[13] = new Dollar(); // DOLLAR
055: retval[14] = new Fixed(); // FIXED
056: retval[15] = new Sin(); // SIN
057: retval[16] = new Cos(); // COS
058: retval[17] = new Tan(); // TAN
059: retval[18] = new Atan(); // ATAN
060: retval[19] = new Pi(); // PI
061: retval[20] = new Sqrt(); // SQRT
062: retval[21] = new Exp(); // EXP
063: retval[22] = new Ln(); // LN
064: retval[23] = new Log10(); // LOG10
065: retval[24] = new Abs(); // ABS
066: retval[25] = new Int(); // INT
067: retval[26] = new Sign(); // SIGN
068: retval[27] = new Round(); // ROUND
069: retval[28] = new Lookup(); // LOOKUP
070: retval[29] = new Index(); // INDEX
071: retval[30] = new Rept(); // REPT
072: retval[31] = new Mid(); // MID
073: retval[32] = new Len(); // LEN
074: retval[33] = new Value(); // VALUE
075: retval[34] = new True(); // TRUE
076: retval[35] = new False(); // FALSE
077: retval[36] = new And(); // AND
078: retval[37] = new Or(); // OR
079: retval[38] = new Not(); // NOT
080: retval[39] = new Mod(); // MOD
081: retval[40] = new Dcount(); // DCOUNT
082: retval[41] = new Dsum(); // DSUM
083: retval[42] = new Daverage(); // DAVERAGE
084: retval[43] = new Dmin(); // DMIN
085: retval[44] = new Dmax(); // DMAX
086: retval[45] = new Dstdev(); // DSTDEV
087: retval[46] = new Var(); // VAR
088: retval[47] = new Dvar(); // DVAR
089: retval[48] = new Text(); // TEXT
090: retval[49] = new Linest(); // LINEST
091: retval[50] = new Trend(); // TREND
092: retval[51] = new Logest(); // LOGEST
093: retval[52] = new Growth(); // GROWTH
094: retval[53] = new Goto(); // GOTO
095: retval[54] = new Halt(); // HALT
096: retval[56] = new Pv(); // PV
097: retval[57] = new Fv(); // FV
098: retval[58] = new Nper(); // NPER
099: retval[59] = new Pmt(); // PMT
100: retval[60] = new Rate(); // RATE
101: retval[61] = new Mirr(); // MIRR
102: retval[62] = new Irr(); // IRR
103: retval[63] = new Rand(); // RAND
104: retval[64] = new Match(); // MATCH
105: retval[65] = new Date(); // DATE
106: retval[66] = new Time(); // TIME
107: retval[67] = new Day(); // DAY
108: retval[68] = new Month(); // MONTH
109: retval[69] = new Year(); // YEAR
110: retval[70] = new Weekday(); // WEEKDAY
111: retval[71] = new Hour(); // HOUR
112: retval[72] = new Minute(); // MINUTE
113: retval[73] = new Second(); // SECOND
114: retval[74] = new Now(); // NOW
115: retval[75] = new Areas(); // AREAS
116: retval[76] = new Rows(); // ROWS
117: retval[77] = new Columns(); // COLUMNS
118: retval[78] = new Offset(); // OFFSET
119: retval[79] = new Absref(); // ABSREF
120: retval[80] = new Relref(); // RELREF
121: retval[81] = new Argument(); // ARGUMENT
122: retval[82] = new Search(); // SEARCH
123: retval[83] = new Transpose(); // TRANSPOSE
124: retval[84] = new org.apache.poi.hssf.record.formula.functions.Error(); // ERROR
125: retval[85] = new Step(); // STEP
126: retval[86] = new Type(); // TYPE
127: retval[87] = new Echo(); // ECHO
128: retval[88] = new Setname(); // SETNAME
129: retval[89] = new Caller(); // CALLER
130: retval[90] = new Deref(); // DEREF
131: retval[91] = new NotImplementedFunction(); // WINDOWS
132: retval[92] = new Series(); // SERIES
133: retval[93] = new NotImplementedFunction(); // DOCUMENTS
134: retval[94] = new Activecell(); // ACTIVECELL
135: retval[95] = new NotImplementedFunction(); // SELECTION
136: retval[96] = new Result(); // RESULT
137: retval[97] = new Atan2(); // ATAN2
138: retval[98] = new Asin(); // ASIN
139: retval[99] = new Acos(); // ACOS
140: retval[100] = new Choose(); // CHOOSE
141: retval[101] = new Hlookup(); // HLOOKUP
142: retval[102] = new Vlookup(); // VLOOKUP
143: retval[103] = new Links(); // LINKS
144: retval[104] = new Input(); // INPUT
145: retval[105] = new Isref(); // ISREF
146: retval[106] = new NotImplementedFunction(); // GETFORMULA
147: retval[107] = new NotImplementedFunction(); // GETNAME
148: retval[108] = new Setvalue(); // SETVALUE
149: retval[109] = new Log(); // LOG
150: retval[110] = new Exec(); // EXEC
151: retval[111] = new Char(); // CHAR
152: retval[112] = new Lower(); // LOWER
153: retval[113] = new Upper(); // UPPER
154: retval[114] = new Proper(); // PROPER
155: retval[115] = new Left(); // LEFT
156: retval[116] = new Right(); // RIGHT
157: retval[117] = new Exact(); // EXACT
158: retval[118] = new Trim(); // TRIM
159: retval[119] = new Replace(); // REPLACE
160: retval[120] = new Substitute(); // SUBSTITUTE
161: retval[121] = new Code(); // CODE
162: retval[122] = new Names(); // NAMES
163: retval[123] = new NotImplementedFunction(); // DIRECTORY
164: retval[124] = new Find(); // FIND
165: retval[125] = new Cell(); // CELL
166: retval[126] = new Iserr(); // ISERR
167: retval[127] = new Istext(); // ISTEXT
168: retval[128] = new Isnumber(); // ISNUMBER
169: retval[129] = new Isblank(); // ISBLANK
170: retval[130] = new T(); // T
171: retval[131] = new N(); // N
172: retval[132] = new NotImplementedFunction(); // FOPEN
173: retval[133] = new NotImplementedFunction(); // FCLOSE
174: retval[134] = new NotImplementedFunction(); // FSIZE
175: retval[135] = new NotImplementedFunction(); // FREADLN
176: retval[136] = new NotImplementedFunction(); // FREAD
177: retval[137] = new NotImplementedFunction(); // FWRITELN
178: retval[138] = new NotImplementedFunction(); // FWRITE
179: retval[139] = new Fpos(); // FPOS
180: retval[140] = new Datevalue(); // DATEVALUE
181: retval[141] = new Timevalue(); // TIMEVALUE
182: retval[142] = new Sln(); // SLN
183: retval[143] = new Syd(); // SYD
184: retval[144] = new Ddb(); // DDB
185: retval[145] = new NotImplementedFunction(); // GETDEF
186: retval[146] = new Reftext(); // REFTEXT
187: retval[147] = new Textref(); // TEXTREF
188: retval[148] = new Indirect(); // INDIRECT
189: retval[149] = new NotImplementedFunction(); // REGISTER
190: retval[150] = new Call(); // CALL
191: retval[151] = new NotImplementedFunction(); // ADDBAR
192: retval[152] = new NotImplementedFunction(); // ADDMENU
193: retval[153] = new NotImplementedFunction(); // ADDCOMMAND
194: retval[154] = new NotImplementedFunction(); // ENABLECOMMAND
195: retval[155] = new NotImplementedFunction(); // CHECKCOMMAND
196: retval[156] = new NotImplementedFunction(); // RENAMECOMMAND
197: retval[157] = new NotImplementedFunction(); // SHOWBAR
198: retval[158] = new NotImplementedFunction(); // DELETEMENU
199: retval[159] = new NotImplementedFunction(); // DELETECOMMAND
200: retval[160] = new NotImplementedFunction(); // GETCHARTITEM
201: retval[161] = new NotImplementedFunction(); // DIALOGBOX
202: retval[162] = new Clean(); // CLEAN
203: retval[163] = new Mdeterm(); // MDETERM
204: retval[164] = new Minverse(); // MINVERSE
205: retval[165] = new Mmult(); // MMULT
206: retval[166] = new Files(); // FILES
207: retval[167] = new Ipmt(); // IPMT
208: retval[168] = new Ppmt(); // PPMT
209: retval[169] = new Counta(); // COUNTA
210: retval[170] = new NotImplementedFunction(); // CANCELKEY
211: retval[175] = new Initiate(); // INITIATE
212: retval[176] = new Request(); // REQUEST
213: retval[177] = new NotImplementedFunction(); // POKE
214: retval[178] = new NotImplementedFunction(); // EXECUTE
215: retval[179] = new NotImplementedFunction(); // TERMINATE
216: retval[180] = new NotImplementedFunction(); // RESTART
217: retval[181] = new Help(); // HELP
218: retval[182] = new NotImplementedFunction(); // GETBAR
219: retval[183] = new Product(); // PRODUCT
220: retval[184] = new Fact(); // FACT
221: retval[185] = new NotImplementedFunction(); // GETCELL
222: retval[186] = new NotImplementedFunction(); // GETWORKSPACE
223: retval[187] = new NotImplementedFunction(); // GETWINDOW
224: retval[188] = new NotImplementedFunction(); // GETDOCUMENT
225: retval[189] = new Dproduct(); // DPRODUCT
226: retval[190] = new Isnontext(); // ISNONTEXT
227: retval[191] = new NotImplementedFunction(); // GETNOTE
228: retval[192] = new Note(); // NOTE
229: retval[193] = new Stdevp(); // STDEVP
230: retval[194] = new Varp(); // VARP
231: retval[195] = new Dstdevp(); // DSTDEVP
232: retval[196] = new Dvarp(); // DVARP
233: retval[197] = new Trunc(); // TRUNC
234: retval[198] = new Islogical(); // ISLOGICAL
235: retval[199] = new Dcounta(); // DCOUNTA
236: retval[200] = new NotImplementedFunction(); // DELETEBAR
237: retval[201] = new NotImplementedFunction(); // UNREGISTER
238: retval[204] = new Usdollar(); // USDOLLAR
239: retval[205] = new Findb(); // FINDB
240: retval[206] = new Searchb(); // SEARCHB
241: retval[207] = new Replaceb(); // REPLACEB
242: retval[208] = new Leftb(); // LEFTB
243: retval[209] = new Rightb(); // RIGHTB
244: retval[210] = new Midb(); // MIDB
245: retval[211] = new Lenb(); // LENB
246: retval[212] = new Roundup(); // ROUNDUP
247: retval[213] = new Rounddown(); // ROUNDDOWN
248: retval[214] = new Asc(); // ASC
249: retval[215] = new Dbcs(); // DBCS
250: retval[216] = new Rank(); // RANK
251: retval[219] = new Address(); // ADDRESS
252: retval[220] = new Days360(); // DAYS360
253: retval[221] = new Today(); // TODAY
254: retval[222] = new Vdb(); // VDB
255: retval[227] = new Median(); // MEDIAN
256: retval[228] = new Sumproduct(); // SUMPRODUCT
257: retval[229] = new Sinh(); // SINH
258: retval[230] = new Cosh(); // COSH
259: retval[231] = new Tanh(); // TANH
260: retval[232] = new Asinh(); // ASINH
261: retval[233] = new Acosh(); // ACOSH
262: retval[234] = new Atanh(); // ATANH
263: retval[235] = new Dget(); // DGET
264: retval[236] = new NotImplementedFunction(); // CREATEOBJECT
265: retval[237] = new Volatile(); // VOLATILE
266: retval[238] = new Lasterror(); // LASTERROR
267: retval[239] = new NotImplementedFunction(); // CUSTOMUNDO
268: retval[240] = new Customrepeat(); // CUSTOMREPEAT
269: retval[241] = new Formulaconvert(); // FORMULACONVERT
270: retval[242] = new NotImplementedFunction(); // GETLINKINFO
271: retval[243] = new NotImplementedFunction(); // TEXTBOX
272: retval[244] = new Info(); // INFO
273: retval[245] = new Group(); // GROUP
274: retval[246] = new NotImplementedFunction(); // GETOBJECT
275: retval[247] = new Db(); // DB
276: retval[248] = new NotImplementedFunction(); // PAUSE
277: retval[250] = new NotImplementedFunction(); // RESUME
278: retval[252] = new Frequency(); // FREQUENCY
279: retval[253] = new NotImplementedFunction(); // ADDTOOLBAR
280: retval[254] = new NotImplementedFunction(); // DELETETOOLBAR
281: retval[255] = new NotImplementedFunction(); // EXTERNALFLAG
282: retval[256] = new NotImplementedFunction(); // RESETTOOLBAR
283: retval[257] = new Evaluate(); // EVALUATE
284: retval[258] = new NotImplementedFunction(); // GETTOOLBAR
285: retval[259] = new NotImplementedFunction(); // GETTOOL
286: retval[260] = new NotImplementedFunction(); // SPELLINGCHECK
287: retval[261] = new Errortype(); // ERRORTYPE
288: retval[262] = new NotImplementedFunction(); // APPTITLE
289: retval[263] = new NotImplementedFunction(); // WINDOWTITLE
290: retval[264] = new NotImplementedFunction(); // SAVETOOLBAR
291: retval[265] = new NotImplementedFunction(); // ENABLETOOL
292: retval[266] = new NotImplementedFunction(); // PRESSTOOL
293: retval[267] = new NotImplementedFunction(); // REGISTERID
294: retval[268] = new NotImplementedFunction(); // GETWORKBOOK
295: retval[269] = new Avedev(); // AVEDEV
296: retval[270] = new Betadist(); // BETADIST
297: retval[271] = new Gammaln(); // GAMMALN
298: retval[272] = new Betainv(); // BETAINV
299: retval[273] = new Binomdist(); // BINOMDIST
300: retval[274] = new Chidist(); // CHIDIST
301: retval[275] = new Chiinv(); // CHIINV
302: retval[276] = new Combin(); // COMBIN
303: retval[277] = new Confidence(); // CONFIDENCE
304: retval[278] = new Critbinom(); // CRITBINOM
305: retval[279] = new Even(); // EVEN
306: retval[280] = new Expondist(); // EXPONDIST
307: retval[281] = new Fdist(); // FDIST
308: retval[282] = new Finv(); // FINV
309: retval[283] = new Fisher(); // FISHER
310: retval[284] = new Fisherinv(); // FISHERINV
311: retval[285] = new Floor(); // FLOOR
312: retval[286] = new Gammadist(); // GAMMADIST
313: retval[287] = new Gammainv(); // GAMMAINV
314: retval[288] = new Ceiling(); // CEILING
315: retval[289] = new Hypgeomdist(); // HYPGEOMDIST
316: retval[290] = new Lognormdist(); // LOGNORMDIST
317: retval[291] = new Loginv(); // LOGINV
318: retval[292] = new Negbinomdist(); // NEGBINOMDIST
319: retval[293] = new Normdist(); // NORMDIST
320: retval[294] = new Normsdist(); // NORMSDIST
321: retval[295] = new Norminv(); // NORMINV
322: retval[296] = new Normsinv(); // NORMSINV
323: retval[297] = new Standardize(); // STANDARDIZE
324: retval[298] = new Odd(); // ODD
325: retval[299] = new Permut(); // PERMUT
326: retval[300] = new Poisson(); // POISSON
327: retval[301] = new Tdist(); // TDIST
328: retval[302] = new Weibull(); // WEIBULL
329: retval[303] = new Sumxmy2(); // SUMXMY2
330: retval[304] = new Sumx2my2(); // SUMX2MY2
331: retval[305] = new Sumx2py2(); // SUMX2PY2
332: retval[306] = new Chitest(); // CHITEST
333: retval[307] = new Correl(); // CORREL
334: retval[308] = new Covar(); // COVAR
335: retval[309] = new Forecast(); // FORECAST
336: retval[310] = new Ftest(); // FTEST
337: retval[311] = new Intercept(); // INTERCEPT
338: retval[312] = new Pearson(); // PEARSON
339: retval[313] = new Rsq(); // RSQ
340: retval[314] = new Steyx(); // STEYX
341: retval[315] = new Slope(); // SLOPE
342: retval[316] = new Ttest(); // TTEST
343: retval[317] = new Prob(); // PROB
344: retval[318] = new Devsq(); // DEVSQ
345: retval[319] = new Geomean(); // GEOMEAN
346: retval[320] = new Harmean(); // HARMEAN
347: retval[321] = new Sumsq(); // SUMSQ
348: retval[322] = new Kurt(); // KURT
349: retval[323] = new Skew(); // SKEW
350: retval[324] = new Ztest(); // ZTEST
351: retval[325] = new Large(); // LARGE
352: retval[326] = new Small(); // SMALL
353: retval[327] = new Quartile(); // QUARTILE
354: retval[328] = new Percentile(); // PERCENTILE
355: retval[329] = new Percentrank(); // PERCENTRANK
356: retval[330] = new Mode(); // MODE
357: retval[331] = new Trimmean(); // TRIMMEAN
358: retval[332] = new Tinv(); // TINV
359: retval[334] = new NotImplementedFunction(); // MOVIECOMMAND
360: retval[335] = new NotImplementedFunction(); // GETMOVIE
361: retval[336] = new Concatenate(); // CONCATENATE
362: retval[337] = new Power(); // POWER
363: retval[338] = new NotImplementedFunction(); // PIVOTADDDATA
364: retval[339] = new NotImplementedFunction(); // GETPIVOTTABLE
365: retval[340] = new NotImplementedFunction(); // GETPIVOTFIELD
366: retval[341] = new NotImplementedFunction(); // GETPIVOTITEM
367: retval[342] = new Radians(); // RADIANS
368: retval[343] = new Degrees(); // DEGREES
369: retval[344] = new Subtotal(); // SUBTOTAL
370: retval[345] = new Sumif(); // SUMIF
371: retval[346] = new Countif(); // COUNTIF
372: retval[347] = new Countblank(); // COUNTBLANK
373: retval[348] = new NotImplementedFunction(); // SCENARIOGET
374: retval[349] = new NotImplementedFunction(); // OPTIONSLISTSGET
375: retval[350] = new Ispmt(); // ISPMT
376: retval[351] = new Datedif(); // DATEDIF
377: retval[352] = new Datestring(); // DATESTRING
378: retval[353] = new Numberstring(); // NUMBERSTRING
379: retval[354] = new Roman(); // ROMAN
380: retval[355] = new NotImplementedFunction(); // OPENDIALOG
381: retval[356] = new NotImplementedFunction(); // SAVEDIALOG
382: retval[357] = new NotImplementedFunction(); // VIEWGET
383: retval[358] = new NotImplementedFunction(); // GETPIVOTDATA
384: retval[359] = new Hyperlink(); // HYPERLINK
385: retval[360] = new NotImplementedFunction(); // PHONETIC
386: retval[361] = new Averagea(); // AVERAGEA
387: retval[362] = new Maxa(); // MAXA
388: retval[363] = new Mina(); // MINA
389: retval[364] = new Stdevpa(); // STDEVPA
390: retval[365] = new Varpa(); // VARPA
391: retval[366] = new Stdeva(); // STDEVA
392: retval[367] = new Vara(); // VARA
393: return retval;
394: }
395: }
|