📄 bfunc.java
字号:
/*
* MC2 -- j2me spreadsheet
*
* Copyright (c) 2004-2006 Michael Zemljanukha (mixaz@mail.ru)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package com.wapindustrial.calc;
//#ifndef NOGUI
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Font;
import javax.microedition.rms.RecordStoreException;
//#endif
/*
* Bfunc.java
*
* Created on December 25, 2003, 11:18 AM
*/
public class Bfunc extends FunctionModule {
// basic finction set, implemented in root code FunctionObject
public static final Bfunc BFUNC = new Bfunc();
private static final String _namesArray =
"\02if" +
"\05while" +
"\04setq" +
"\05defun" +
"\04sadd" +
"\04ssub" +
"\04smul" +
"\04sdiv" +
"\03sgt" +
"\03sge" +
"\03slt" +
"\03sle" +
"\03seq" +
"\03sne" +
"\04load" +
"\13module-load" +
"\05isnil" +
"\14sheet-create" +
"\13cell-create" +
"\03ref" +
"\12cursor-set" +
"\13cursor-move" +
"\12cursor-get" +
"\15sheet-addcell" +
"\17cell-getformula" +
"\17cell-setformula" +
"\21cell-getwsformula" +
"\21cell-setwsformula" +
"\15sheet-getcell" +
"\12sexp-parse" +
"\13cell-active" +
"\21sheet-recalculate" +
"\15sexp-evaluate" +
"\14cell-repaint" +
"\04date" +
"\11rowcolumn" +
"\16sheet-activate" +
"\14sheet-active" +
"\12sheet-save" +
"\12sheet-load" +
"\15sheet-getname" +
"\15sheet-setname" +
"\12sheet-list" +
"\16cell-setformat" +
"\16cell-getformat" +
"\14sheet-delete" +
"\07message" +
"\24sheet-getwidthheight" +
"\24sheet-setwidthheight" +
"\15sheet-repaint" +
"\15selection-get" +
"\15selection-set" +
"\10gold-key" +
"\12cell-clear" +
"\21reference-process" +
"\11selection" +
"\14setsheetsize" +
"\14sheet-insert" +
"\17cell-getwsvalue" +
"\14str-getwidth" +
"\11cell-copy" +
"\15cell-copyfrom" +
"\14cell-gettype" +
"\05error" +
"\13system-info" +
"\11debug-set" +
"\16screen-setmode" +
"\24screen-setformulabar" +
"\22formulabar-repaint" +
"\16screen-getmode" +
"\24screen-getformulabar" +
"\10parse-ws" +
"\16cell-create-ws" +
"\16screen-setfont" +
"\24sheet-setdefaultsize" +
"\13history-get" +
"\14cell-address" +
"\17sheet-ischanged" +
"\20sheet-setchanged" +
"\12colors-set" +
"\05qlist" +
"\11color-rgb" +
"\17app-getproperty"
//#ifndef MINIMAL_SET
+
"\16qlist-to-sheet" +
"\10defmacro" +
"\14sexp-gettype" +
"\17sexp-preprocess" +
"\10gold-set" +
"\13throw-error"
//#endif
//#ifdef JAVA_COMPILER
+
"\03$if" +
"\10$include"
//#endif
;
private static final int NAME_IF = 0;
private static final int NAME_WHILE = NAME_IF + 2 + 1;
private static final int NAME_SETQ = NAME_WHILE + 5 + 1;
private static final int NAME_DEFUN = NAME_SETQ + 4 + 1;
private static final int NAME_SADD = NAME_DEFUN + 5 + 1;
private static final int NAME_SSUB = NAME_SADD + 4 + 1;
private static final int NAME_SMUL = NAME_SSUB + 4 + 1;
private static final int NAME_SDIV = NAME_SMUL + 4 + 1;
private static final int NAME_SGT = NAME_SDIV + 4 + 1;
private static final int NAME_SGE = NAME_SGT + 3 + 1;
private static final int NAME_SLT = NAME_SGE + 3 + 1;
private static final int NAME_SLE = NAME_SLT + 3 + 1;
private static final int NAME_SEQ = NAME_SLE + 3 + 1;
private static final int NAME_SNE = NAME_SEQ + 3 + 1;
private static final int NAME_LOAD = NAME_SNE + 3 + 1;
private static final int NAME_MODULE_LOAD = NAME_LOAD + 4 + 1;
private static final int NAME_ISNIL = NAME_MODULE_LOAD + 11 + 1;
private static final int NAME_SHEET_CREATE = NAME_ISNIL + 5 + 1;
private static final int NAME_CELL_CREATE = NAME_SHEET_CREATE + 12 + 1;
private static final int NAME_REF = NAME_CELL_CREATE + 11 + 1;
private static final int NAME_CURSOR_SET = NAME_REF + 3 + 1;
private static final int NAME_CURSOR_MOVE = NAME_CURSOR_SET + 10 + 1;
private static final int NAME_CURSOR_GET = NAME_CURSOR_MOVE + 11 + 1;
private static final int NAME_SHEET_ADDCELL = NAME_CURSOR_GET + 10 + 1;
private static final int NAME_CELL_GETFORMULA = NAME_SHEET_ADDCELL + 13 + 1;
private static final int NAME_CELL_SETFORMULA = NAME_CELL_GETFORMULA + 15 + 1;
private static final int NAME_CELL_GETWSFORMULA = NAME_CELL_SETFORMULA + 15 + 1;
private static final int NAME_CELL_SETWSFORMULA = NAME_CELL_GETWSFORMULA + 17 + 1;
private static final int NAME_SHEET_GETCELL = NAME_CELL_SETWSFORMULA + 17 + 1;
private static final int NAME_SEXP_PARSE = NAME_SHEET_GETCELL + 13 + 1;
private static final int NAME_CELL_ACTIVE = NAME_SEXP_PARSE + 10 + 1;
private static final int NAME_SHEET_RECALCULATE = NAME_CELL_ACTIVE + 11 + 1;
private static final int NAME_SEXP_EVALUATE = NAME_SHEET_RECALCULATE + 17 + 1;
private static final int NAME_CELL_REPAINT = NAME_SEXP_EVALUATE + 13 + 1;
private static final int NAME_DATE = NAME_CELL_REPAINT + 12 + 1;
private static final int NAME_ROWCOLUMN = NAME_DATE + 4 + 1;
private static final int NAME_SHEET_ACTIVATE = NAME_ROWCOLUMN + 9 + 1;
private static final int NAME_SHEET_ACTIVE = NAME_SHEET_ACTIVATE + 14 + 1;
private static final int NAME_SHEET_SAVE = NAME_SHEET_ACTIVE + 12 + 1;
private static final int NAME_SHEET_LOAD = NAME_SHEET_SAVE + 10 + 1;
private static final int NAME_SHEET_GETNAME = NAME_SHEET_LOAD + 10 + 1;
private static final int NAME_SHEET_SETNAME = NAME_SHEET_GETNAME + 13 + 1;
private static final int NAME_SHEET_LIST = NAME_SHEET_SETNAME + 13 + 1;
private static final int NAME_CELL_SETFORMAT = NAME_SHEET_LIST + 10 + 1;
private static final int NAME_CELL_GETFORMAT = NAME_CELL_SETFORMAT + 14 + 1;
private static final int NAME_SHEET_DELETE = NAME_CELL_GETFORMAT + 14 + 1;
private static final int NAME_MESSAGE = NAME_SHEET_DELETE + 12 + 1;
private static final int NAME_SHEET_GETWIDTHHEIGHT = NAME_MESSAGE + 7 + 1;
private static final int NAME_SHEET_SETWIDTHHEIGHT = NAME_SHEET_GETWIDTHHEIGHT + 20 + 1;
private static final int NAME_SHEET_REPAINT = NAME_SHEET_SETWIDTHHEIGHT + 20 + 1;
private static final int NAME_SELECTION_GET = NAME_SHEET_REPAINT + 13 + 1;
private static final int NAME_SELECTION_SET = NAME_SELECTION_GET + 13 + 1;
private static final int NAME_GOLD_KEY = NAME_SELECTION_SET + 13 + 1;
private static final int NAME_CELL_CLEAR = NAME_GOLD_KEY + 8 + 1;
private static final int NAME_REFERENCE_PROCESS = NAME_CELL_CLEAR + 10 + 1;
private static final int NAME_SELECTION = NAME_REFERENCE_PROCESS + 17 + 1;
private static final int NAME_SETSHEETSIZE = NAME_SELECTION + 9 + 1;
private static final int NAME_SHEET_INSERT = NAME_SETSHEETSIZE + 12 + 1;
private static final int NAME_CELL_GETWSVALUE = NAME_SHEET_INSERT + 12 + 1;
private static final int NAME_STR_GETWIDTH = NAME_CELL_GETWSVALUE + 15 + 1;
private static final int NAME_CELL_COPY = NAME_STR_GETWIDTH + 12 + 1;
private static final int NAME_CELL_COPYFROM = NAME_CELL_COPY + 9 + 1;
private static final int NAME_CELL_GETTYPE = NAME_CELL_COPYFROM + 13 + 1;
private static final int NAME_ERROR = NAME_CELL_GETTYPE + 12 + 1;
private static final int NAME_SYSTEM_INFO = NAME_ERROR + 5 + 1;
private static final int NAME_DEBUG_SET = NAME_SYSTEM_INFO + 11 + 1;
private static final int NAME_SCREEN_SETMODE = NAME_DEBUG_SET + 9 + 1;
private static final int NAME_SCREEN_SETFORMULABAR = NAME_SCREEN_SETMODE + 14 + 1;
private static final int NAME_FORMULABAR_REPAINT = NAME_SCREEN_SETFORMULABAR + 20 + 1;
private static final int NAME_SCREEN_GETMODE = NAME_FORMULABAR_REPAINT + 18 + 1;
private static final int NAME_SCREEN_GETFORMULABAR = NAME_SCREEN_GETMODE + 14 + 1;
private static final int NAME_PARSE_WS = NAME_SCREEN_GETFORMULABAR + 20 + 1;
private static final int NAME_CELL_CREATE_WS = NAME_PARSE_WS + 8 + 1;
private static final int NAME_SCREEN_SETFONT = NAME_CELL_CREATE_WS + 14 + 1;
private static final int NAME_SHEET_SETDEFAULTSIZE = NAME_SCREEN_SETFONT + 14 + 1;
private static final int NAME_HISTORY_GET = NAME_SHEET_SETDEFAULTSIZE + 20 + 1;
private static final int NAME_CELL_ADDRESS = NAME_HISTORY_GET + 11 + 1;
private static final int NAME_SHEET_ISCHANGED = NAME_CELL_ADDRESS + 12 + 1;
private static final int NAME_SHEET_SETCHANGED = NAME_SHEET_ISCHANGED + 15 + 1;
private static final int NAME_COLORS_SET = NAME_SHEET_SETCHANGED + 16 + 1;
private static final int NAME_QLIST = NAME_COLORS_SET + 10 + 1;
private static final int NAME_COLOR_RGB = NAME_QLIST + 5 + 1;
private static final int NAME_APP_GETPROPERTY = NAME_COLOR_RGB + 9 + 1;
private static final int NAMESTART_MINIMAL_SET = NAME_APP_GETPROPERTY+16;
//#ifndef MINIMAL_SET
private static final int NAME_QLIST_TO_SHEET = NAMESTART_MINIMAL_SET;
private static final int NAME_DEFMACRO = NAME_QLIST_TO_SHEET+15;
private static final int NAME_SEXP_GETTYPE = NAME_DEFMACRO+9;
private static final int NAME_SEXP_PREPROCESS = NAME_SEXP_GETTYPE+13;
private static final int NAME_GOLD_SET = NAME_SEXP_PREPROCESS+16;
private static final int NAME_THROW_ERROR = NAME_GOLD_SET+9;
private static final int NAMESTOP_MINIMAL_SET = NAME_THROW_ERROR+12;
//#else
//# private static final int NAMESTOP_MINIMAL_SET = NAMESTART_MINIMAL_SET;
//#endif
private static final int NAMESTART_JAVA_COMPILER = NAMESTOP_MINIMAL_SET;
//#ifdef JAVA_COMPILER
private static final int NAME__IF = NAMESTART_JAVA_COMPILER;
private static final int NAME__INCLUDE = NAME__IF+4;
private static final int NAMESTOP_JAVA_COMPILER = NAME__INCLUDE+9;
//#else
//# private static final int NAMESTOP_JAVA_COMPILER = NAMESTART_JAVA_COMPILER;
//#endif
public static final int INDEX_IF = 0;
public static final int INDEX_WHILE = INDEX_IF + 1;
public static final int INDEX_SETQ = INDEX_WHILE + 1;
public static final int INDEX_DEFUN = INDEX_SETQ + 1;
public static final int INDEX_SADD = INDEX_DEFUN + 1;
public static final int INDEX_SSUB = INDEX_SADD + 1;
public static final int INDEX_SMUL = INDEX_SSUB + 1;
public static final int INDEX_SDIV = INDEX_SMUL + 1;
public static final int INDEX_SGT = INDEX_SDIV + 1;
public static final int INDEX_SGE = INDEX_SGT + 1;
public static final int INDEX_SLT = INDEX_SGE + 1;
public static final int INDEX_SLE = INDEX_SLT + 1;
public static final int INDEX_SEQ = INDEX_SLE + 1;
public static final int INDEX_SNE = INDEX_SEQ + 1;
public static final int INDEX_LOAD = INDEX_SNE + 1;
public static final int INDEX_MODULE_LOAD = INDEX_LOAD + 1;
public static final int INDEX_ISNIL = INDEX_MODULE_LOAD + 1;
public static final int INDEX_SHEET_CREATE = INDEX_ISNIL + 1;
public static final int INDEX_CELL_CREATE = INDEX_SHEET_CREATE + 1;
public static final int INDEX_REF = INDEX_CELL_CREATE + 1;
public static final int INDEX_CURSOR_SET = INDEX_REF + 1;
public static final int INDEX_CURSOR_MOVE = INDEX_CURSOR_SET + 1;
public static final int INDEX_CURSOR_GET = INDEX_CURSOR_MOVE + 1;
public static final int INDEX_SHEET_ADDCELL = INDEX_CURSOR_GET + 1;
public static final int INDEX_CELL_GETFORMULA = INDEX_SHEET_ADDCELL + 1;
public static final int INDEX_CELL_SETFORMULA = INDEX_CELL_GETFORMULA + 1;
public static final int INDEX_CELL_GETWSFORMULA = INDEX_CELL_SETFORMULA + 1;
public static final int INDEX_CELL_SETWSFORMULA = INDEX_CELL_GETWSFORMULA + 1;
public static final int INDEX_SHEET_GETCELL = INDEX_CELL_SETWSFORMULA + 1;
public static final int INDEX_SEXP_PARSE = INDEX_SHEET_GETCELL + 1;
public static final int INDEX_CELL_ACTIVE = INDEX_SEXP_PARSE + 1;
public static final int INDEX_SHEET_RECALCULATE = INDEX_CELL_ACTIVE + 1;
public static final int INDEX_SEXP_EVALUATE = INDEX_SHEET_RECALCULATE + 1;
public static final int INDEX_CELL_REPAINT = INDEX_SEXP_EVALUATE + 1;
public static final int INDEX_DATE = INDEX_CELL_REPAINT + 1;
public static final int INDEX_ROWCOLUMN = INDEX_DATE + 1;
public static final int INDEX_SHEET_ACTIVATE = INDEX_ROWCOLUMN + 1;
public static final int INDEX_SHEET_ACTIVE = INDEX_SHEET_ACTIVATE + 1;
public static final int INDEX_SHEET_SAVE = INDEX_SHEET_ACTIVE + 1;
public static final int INDEX_SHEET_LOAD = INDEX_SHEET_SAVE + 1;
public static final int INDEX_SHEET_GETNAME = INDEX_SHEET_LOAD + 1;
public static final int INDEX_SHEET_SETNAME = INDEX_SHEET_GETNAME + 1;
public static final int INDEX_SHEET_LIST = INDEX_SHEET_SETNAME + 1;
public static final int INDEX_CELL_SETFORMAT = INDEX_SHEET_LIST + 1;
public static final int INDEX_CELL_GETFORMAT = INDEX_CELL_SETFORMAT + 1;
public static final int INDEX_SHEET_DELETE = INDEX_CELL_GETFORMAT + 1;
public static final int INDEX_MESSAGE = INDEX_SHEET_DELETE + 1;
public static final int INDEX_SHEET_GETWIDTHHEIGHT = INDEX_MESSAGE + 1;
public static final int INDEX_SHEET_SETWIDTHHEIGHT = INDEX_SHEET_GETWIDTHHEIGHT + 1;
public static final int INDEX_SHEET_REPAINT = INDEX_SHEET_SETWIDTHHEIGHT + 1;
public static final int INDEX_SELECTION_GET = INDEX_SHEET_REPAINT + 1;
public static final int INDEX_SELECTION_SET = INDEX_SELECTION_GET + 1;
public static final int INDEX_GOLD_KEY = INDEX_SELECTION_SET + 1;
public static final int INDEX_CELL_CLEAR = INDEX_GOLD_KEY + 1;
public static final int INDEX_REFERENCE_PROCESS = INDEX_CELL_CLEAR + 1;
public static final int INDEX_SELECTION = INDEX_REFERENCE_PROCESS + 1;
public static final int INDEX_SETSHEETSIZE = INDEX_SELECTION + 1;
public static final int INDEX_SHEET_INSERT = INDEX_SETSHEETSIZE + 1;
public static final int INDEX_CELL_GETWSVALUE = INDEX_SHEET_INSERT + 1;
public static final int INDEX_STR_GETWIDTH = INDEX_CELL_GETWSVALUE + 1;
public static final int INDEX_CELL_COPY = INDEX_STR_GETWIDTH + 1;
public static final int INDEX_CELL_COPYFROM = INDEX_CELL_COPY + 1;
public static final int INDEX_CELL_GETTYPE = INDEX_CELL_COPYFROM + 1;
public static final int INDEX_ERROR = INDEX_CELL_GETTYPE + 1;
public static final int INDEX_SYSTEM_INFO = INDEX_ERROR + 1;
public static final int INDEX_DEBUG_SET = INDEX_SYSTEM_INFO + 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -