/* PredefMacroInfo.java * ========================================================================= * This file is part of the JLaTeXMath Library - http://forge.scilab.org/jlatexmath * * Copyright (C) 2011 DENIZET Calixte * * 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. * * A copy of the GNU General Public License can be found in the file * LICENSE.txt provided with the source distribution of this program (see * the META-INF directory in the source jar). This license can also be * found on the GNU website at http://www.gnu.org/licenses/gpl.html. * * If you did not receive a copy of the GNU General Public License along * with this program, contact the lead developer, or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * * Linking this library statically or dynamically with other modules * is making a combined work based on this library. Thus, the terms * and conditions of the GNU General Public License cover the whole * combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent * modules, and to copy and distribute the resulting executable under terms * of your choice, provided that you also meet, for each linked independent * module, the terms and conditions of the license of that module. * An independent module is a module which is not derived from or based * on this library. If you modify this library, you may extend this exception * to your version of the library, but you are not obliged to do so. * If you do not wish to do so, delete this exception statement from your * version. * */ package org.scilab.forge.jlatexmath; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; /** * Class to load the predefined commands. Mainly wrote to avoid the use of the Java reflection. */ class PredefMacroInfo extends MacroInfo { private int id; public PredefMacroInfo(int id, int nbArgs, int posOpts) { super(nbArgs, posOpts); this.id = id; } public PredefMacroInfo(int id, int nbArgs) { super(nbArgs); this.id = id; } public Object invoke(final TeXParser tp, final String[] args) throws ParseException { return invokeID(id, tp, args); } private static final Object invokeID(final int id, final TeXParser tp, final String[] args) throws ParseException { try { switch (id) { case 0: return PredefMacros.newcommand_macro(tp, args); case 1: return PredefMacros.renewcommand_macro(tp, args); case 2: return PredefMacros.rule_macro(tp, args); case 3: case 4: return PredefMacros.hvspace_macro(tp, args); case 5: case 6: case 7: return PredefMacros.clrlap_macro(tp, args); case 8: case 9: case 10: return PredefMacros.mathclrlap_macro(tp, args); case 11: return PredefMacros.includegraphics_macro(tp, args); case 12: return PredefMacros.cfrac_macro(tp, args); case 13: return PredefMacros.frac_macro(tp, args); case 14: return PredefMacros.sfrac_macro(tp, args); case 15: return PredefMacros.genfrac_macro(tp, args); case 16: return PredefMacros.over_macro(tp, args); case 17: return PredefMacros.overwithdelims_macro(tp, args); case 18: return PredefMacros.atop_macro(tp, args); case 19: return PredefMacros.atopwithdelims_macro(tp, args); case 20: return PredefMacros.choose_macro(tp, args); case 21: return PredefMacros.underscore_macro(tp, args); case 22: return PredefMacros.mbox_macro(tp, args); case 23: return PredefMacros.text_macro(tp, args); case 24: return PredefMacros.intertext_macro(tp, args); case 25: return PredefMacros.binom_macro(tp, args); case 26: return PredefMacros.mathbf_macro(tp, args); case 27: return PredefMacros.bf_macro(tp, args); case 28: return PredefMacros.textstyle_macros(tp, args); case 29: return PredefMacros.textstyle_macros(tp, args); case 30: return PredefMacros.textstyle_macros(tp, args); case 31: return PredefMacros.mathit_macro(tp, args); case 32: return PredefMacros.it_macro(tp, args); case 33: return PredefMacros.mathrm_macro(tp, args); case 34: return PredefMacros.rm_macro(tp, args); case 35: return PredefMacros.textstyle_macros(tp, args); case 36: return PredefMacros.mathsf_macro(tp, args); case 37: return PredefMacros.sf_macro(tp, args); case 38: return PredefMacros.mathtt_macro(tp, args); case 39: return PredefMacros.tt_macro(tp, args); case 40: case 41: case 42: case 43: case 44: case 45: return PredefMacros.textstyle_macros(tp, args); case 46: case 47: case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: return PredefMacros.accentbis_macros(tp, args); case 58: return PredefMacros.T_macro(tp, args); case 59: return PredefMacros.accentbis_macros(tp, args); case 60: return PredefMacros.accent_macro(tp, args); case 61: return PredefMacros.grkaccent_macro(tp, args); case 62: case 63: case 64: case 65: case 66: case 67: case 68: case 69: case 70: case 71: case 72: case 73: case 74: case 75: return PredefMacros.accent_macros(tp, args); case 76: return PredefMacros.nbsp_macro(tp, args); case 77: return PredefMacros.smallmatrixATATenv_macro(tp, args); case 78: return PredefMacros.matrixATATenv_macro(tp, args); case 79: return PredefMacros.overrightarrow_macro(tp, args); case 80: return PredefMacros.overleftarrow_macro(tp, args); case 81: return PredefMacros.overleftrightarrow_macro(tp, args); case 82: return PredefMacros.underrightarrow_macro(tp, args); case 83: return PredefMacros.underleftarrow_macro(tp, args); case 84: return PredefMacros.underleftrightarrow_macro(tp, args); case 85: return PredefMacros.xleftarrow_macro(tp, args); case 86: return PredefMacros.xrightarrow_macro(tp, args); case 87: return PredefMacros.underbrace_macro(tp, args); case 88: return PredefMacros.overbrace_macro(tp, args); case 89: return PredefMacros.underbrack_macro(tp, args); case 90: return PredefMacros.overbrack_macro(tp, args); case 91: return PredefMacros.underparen_macro(tp, args); case 92: return PredefMacros.overparen_macro(tp, args); case 93: case 94: return PredefMacros.sqrt_macro(tp, args); case 95: return PredefMacros.overline_macro(tp, args); case 96: return PredefMacros.underline_macro(tp, args); case 97: return PredefMacros.mathop_macro(tp, args); case 98: return PredefMacros.mathpunct_macro(tp, args); case 99: return PredefMacros.mathord_macro(tp, args); case 100: return PredefMacros.mathrel_macro(tp, args); case 101: return PredefMacros.mathinner_macro(tp, args); case 102: return PredefMacros.mathbin_macro(tp, args); case 103: return PredefMacros.mathopen_macro(tp, args); case 104: return PredefMacros.mathclose_macro(tp, args); case 105: return PredefMacros.joinrel_macro(tp, args); case 106: return PredefMacros.smash_macro(tp, args); case 107: return PredefMacros.vdots_macro(tp, args); case 108: return PredefMacros.ddots_macro(tp, args); case 109: return PredefMacros.iddots_macro(tp, args); case 110: return PredefMacros.nolimits_macro(tp, args); case 111: return PredefMacros.limits_macro(tp, args); case 112: return PredefMacros.normal_macro(tp, args); case 113: return PredefMacros.leftparenthesis_macro(tp, args); case 114: return PredefMacros.leftbracket_macro(tp, args); case 115: return PredefMacros.left_macro(tp, args); case 116: return PredefMacros.middle_macro(tp, args); case 117: return PredefMacros.cr_macro(tp, args); case 118: return PredefMacros.multicolumn_macro(tp, args); case 119: return PredefMacros.hdotsfor_macro(tp, args); case 120: return PredefMacros.arrayATATenv_macro(tp, args); case 121: return PredefMacros.alignATATenv_macro(tp, args); case 122: return PredefMacros.alignedATATenv_macro(tp, args); case 123: return PredefMacros.flalignATATenv_macro(tp, args); case 124: return PredefMacros.alignatATATenv_macro(tp, args); case 125: return PredefMacros.alignedatATATenv_macro(tp, args); case 126: return PredefMacros.multlineATATenv_macro(tp, args); case 127: return PredefMacros.gatherATATenv_macro(tp, args); case 128: return PredefMacros.gatheredATATenv_macro(tp, args); case 129: return PredefMacros.shoveright_macro(tp, args); case 130: return PredefMacros.shoveleft_macro(tp, args); case 131: return PredefMacros.backslashcr_macro(tp, args); case 132: return PredefMacros.newenvironment_macro(tp, args); case 133: return PredefMacros.renewenvironment_macro(tp, args); case 134: return PredefMacros.makeatletter_macro(tp, args); case 135: return PredefMacros.makeatother_macro(tp, args); case 136: case 137: return PredefMacros.fbox_macro(tp, args); case 138: return PredefMacros.stackrel_macro(tp, args); case 139: return PredefMacros.stackbin_macro(tp, args); case 140: return PredefMacros.accentset_macro(tp, args); case 141: return PredefMacros.underaccent_macro(tp, args); case 142: return PredefMacros.undertilde_macro(tp, args); case 143: return PredefMacros.overset_macro(tp, args); case 144: return PredefMacros.Braket_macro(tp, args); case 145: return PredefMacros.Set_macro(tp, args); case 146: return PredefMacros.underset_macro(tp, args); case 147: return PredefMacros.boldsymbol_macro(tp, args); case 148: return PredefMacros.LaTeX_macro(tp, args); case 149: return PredefMacros.GeoGebra_macro(tp, args); case 150: return PredefMacros.big_macro(tp, args); case 151: return PredefMacros.Big_macro(tp, args); case 152: return PredefMacros.bigg_macro(tp, args); case 153: return PredefMacros.Bigg_macro(tp, args); case 154: return PredefMacros.bigl_macro(tp, args); case 155: return PredefMacros.Bigl_macro(tp, args); case 156: return PredefMacros.biggl_macro(tp, args); case 157: return PredefMacros.Biggl_macro(tp, args); case 158: return PredefMacros.bigr_macro(tp, args); case 159: return PredefMacros.Bigr_macro(tp, args); case 160: return PredefMacros.biggr_macro(tp, args); case 161: return PredefMacros.Biggr_macro(tp, args); case 162: return PredefMacros.displaystyle_macro(tp, args); case 163: return PredefMacros.textstyle_macro(tp, args); case 164: return PredefMacros.scriptstyle_macro(tp, args); case 165: return PredefMacros.scriptscriptstyle_macro(tp, args); case 166: return PredefMacros.sideset_macro(tp, args); case 167: return PredefMacros.prescript_macro(tp, args); case 168: return PredefMacros.rotatebox_macro(tp, args); case 169: return PredefMacros.reflectbox_macro(tp, args); case 170: return PredefMacros.scalebox_macro(tp, args); case 171: return PredefMacros.resizebox_macro(tp, args); case 172: return PredefMacros.raisebox_macro(tp, args); case 173: return PredefMacros.shadowbox_macro(tp, args); case 174: return PredefMacros.ovalbox_macro(tp, args); case 175: return PredefMacros.doublebox_macro(tp, args); case 176: return PredefMacros.phantom_macro(tp, args); case 177: return PredefMacros.hphantom_macro(tp, args); case 178: return PredefMacros.vphantom_macro(tp, args); case 179: return PredefMacros.spATbreve_macro(tp, args); case 180: return PredefMacros.spAThat_macro(tp, args); case 181: return PredefMacros.definecolor_macro(tp, args); case 182: return PredefMacros.textcolor_macro(tp, args); case 183: return PredefMacros.fgcolor_macro(tp, args); case 184: return PredefMacros.bgcolor_macro(tp, args); case 185: return PredefMacros.colorbox_macro(tp, args); case 186: return PredefMacros.fcolorbox_macro(tp, args); case 187: return PredefMacros.cedilla_macro(tp, args); case 188: return PredefMacros.IJ_macro(tp, args); case 189: return PredefMacros.IJ_macro(tp, args); case 190: return PredefMacros.TStroke_macro(tp, args); case 191: return PredefMacros.TStroke_macro(tp, args); case 192: return PredefMacros.LCaron_macro(tp, args); case 193: return PredefMacros.tcaron_macro(tp, args); case 194: return PredefMacros.LCaron_macro(tp, args); case 195: return PredefMacros.ogonek_macro(tp, args); case 196: return PredefMacros.cong_macro(tp, args); case 197: return PredefMacros.doteq_macro(tp, args); case 198: return PredefMacros.jlmDynamic_macro(tp, args); case 199: return PredefMacros.jlmExternalFont_macro(tp, args); case 200: return PredefMacros.jlmText_macro(tp, args); case 201: return PredefMacros.jlmTextit_macro(tp, args); case 202: return PredefMacros.jlmTextbf_macro(tp, args); case 203: return PredefMacros.jlmTextitbf_macro(tp, args); case 204: return PredefMacros.DeclareMathSizes_macro(tp, args); case 205: return PredefMacros.magnification_macro(tp, args); case 206: return PredefMacros.hline_macro(tp, args); case 207: case 208: case 209: case 210: case 211: case 212: case 213: case 214: case 215: case 216: return PredefMacros.size_macros(tp, args); case 217: return PredefMacros.jlatexmathcumsup_macro(tp, args); case 218: return PredefMacros.jlatexmathcumsub_macro(tp, args); case 219: return PredefMacros.hstrok_macro(tp, args); case 220: return PredefMacros.Hstrok_macro(tp, args); case 221: return PredefMacros.dstrok_macro(tp, args); case 222: return PredefMacros.Dstrok_macro(tp, args); case 223: return PredefMacros.dotminus_macro(tp, args); case 224: return PredefMacros.ratio_macro(tp, args); case 225: return PredefMacros.smallfrowneq_macro(tp, args); case 226: return PredefMacros.geoprop_macro(tp, args); case 227: return PredefMacros.minuscolon_macro(tp, args); case 228: return PredefMacros.minuscoloncolon_macro(tp, args); case 229: return PredefMacros.simcolon_macro(tp, args); case 230: return PredefMacros.simcoloncolon_macro(tp, args); case 231: return PredefMacros.approxcolon_macro(tp, args); case 232: return PredefMacros.approxcoloncolon_macro(tp, args); case 233: return PredefMacros.coloncolon_macro(tp, args); case 234: return PredefMacros.equalscolon_macro(tp, args); case 235: return PredefMacros.equalscoloncolon_macro(tp, args); case 236: return PredefMacros.colonminus_macro(tp, args); case 237: return PredefMacros.coloncolonminus_macro(tp, args); case 238: return PredefMacros.colonequals_macro(tp, args); case 239: return PredefMacros.coloncolonequals_macro(tp, args); case 240: return PredefMacros.colonsim_macro(tp, args); case 241: return PredefMacros.coloncolonsim_macro(tp, args); case 242: return PredefMacros.colonapprox_macro(tp, args); case 243: return PredefMacros.coloncolonapprox_macro(tp, args); case 244: return PredefMacros.kern_macro(tp, args); case 245: return PredefMacros.char_macro(tp, args); case 246: case 247: return PredefMacros.romannumeral_macro(tp, args); case 248: return PredefMacros.textcircled_macro(tp, args); case 249: return PredefMacros.textsc_macro(tp, args); case 250: return PredefMacros.sc_macro(tp, args); case 251: case 252: case 253: case 254: case 255: case 256: case 257: case 258: case 259: case 260: return PredefMacros.muskip_macros(tp, args); case 261: return PredefMacros.quad_macro(tp, args); case 262: return PredefMacros.surd_macro(tp, args); case 263: return PredefMacros.iint_macro(tp, args); case 264: return PredefMacros.iiint_macro(tp, args); case 265: return PredefMacros.iiiint_macro(tp, args); case 266: return PredefMacros.idotsint_macro(tp, args); case 267: return PredefMacros.int_macro(tp, args); case 268: return PredefMacros.oint_macro(tp, args); case 269: return PredefMacros.lmoustache_macro(tp, args); case 270: return PredefMacros.rmoustache_macro(tp, args); case 271: return PredefMacros.insertBreakMark_macro(tp, args); case 272: return PredefMacros.jlmXML_macro(tp, args); case 273: return PredefMacros.above_macro(tp, args); case 274: return PredefMacros.abovewithdelims_macro(tp, args); case 275: return PredefMacros.st_macro(tp, args); case 276: return PredefMacros.fcscore_macro(tp, args); case 277: return PredefMacros.textstyle_macros(tp, args); default: return null; } } catch (Exception e) { throw new ParseException("Problem with command " + args[0] + " at position " + tp.getLine() + ":" + tp.getCol() + "\n" + e.getMessage()); } } }