9 #include "math_macrotable.h"
10 #include "math_macro.h"
11 #include "math_macrotemplate.h"
12 #include "math_parser.h"
13 #include "math_fracinset.h"
17 MathArray mathed_parse_cell(string const &);
20 MathMacroTable::table_type MathMacroTable::macro_table;
23 void MathMacroTable::dump()
25 lyxerr << "\n------------------------------------------\n";
26 table_type::const_iterator it;
27 for (it = macro_table.begin(); it != macro_table.end(); ++it)
28 lyxerr << it->first << " [" << it->second.nargs() << "] : "
29 << it->second << "\n";
30 lyxerr << "------------------------------------------\n";
34 void MathMacroTable::insertTemplate(MathMacroTemplate const & p)
36 if (macro_table.find(p.name()) != macro_table.end())
37 lyxerr << "macro '" << p.name() << "' not new\n";
38 macro_table[p.name()] = p;
42 MathMacroTemplate & MathMacroTable::provideTemplate(string const & name)
46 table_type::iterator pos = macro_table.find(name);
48 if (pos == macro_table.end()) {
49 lyxerr << "MathMacroTable::provideTemplate: no template with name '"
50 << name << "' available.\n";
57 void MathMacroTable::createTemplate
58 (string const & name, int na, string const & text)
60 MathMacroTemplate t(name, na);
61 t.cell(0) = mathed_parse_cell(text);
66 bool MathMacroTable::hasTemplate(string const & name)
69 return macro_table.find(name) != macro_table.end();
73 MathMacro * MathMacroTable::cloneTemplate(string const & name)
75 return new MathMacro(provideTemplate(name));
79 void MathMacroTable::builtinMacros()
81 static bool built = false;
87 //lyxerr[Debug::MATHED] << "Building macros\n";
89 createTemplate("emptyset", 0, "\\not0");
90 createTemplate("ne", 0, "\\not=");
91 createTemplate("ge", 0, "\\geq");
92 createTemplate("gets", 0, "\\leftarrow");
93 createTemplate("land", 0, "\\wedge");
94 createTemplate("le", 0, "\\leq");
95 createTemplate("lor", 0, "\\vee");
96 createTemplate("notin", 0, "\\not\\in");
97 createTemplate("perp", 0, "\\bot");
98 createTemplate("owns", 0, "\\ni");
99 createTemplate("to", 0, "\\rightarrow");
100 //createTemplate("lint", 4, "\\int_#1^#2#3 d#4");
101 //createTemplate("silentmult", 0, "\\cdot");
102 //createTemplate("binom", 2, "\\left(\\frac#1#2\\right)");