// -*- C++ -*- /** * \file MathMacroTable.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \author André Pönitz * * Full author contact details are available in file CREDITS. */ #ifndef MATH_MACROTABLE_H #define MATH_MACROTABLE_H #include #include #include #include "support/docstring.h" namespace lyx { class MathArray; /// class MacroData { public: /// MacroData(); /// MacroData(docstring const & def, int nargs, docstring const & disp); /// docstring def() const { return def_; } /// docstring disp() const { return disp_; } /// int numargs() const { return numargs_; } /// replace #1,#2,... by given MathAtom 0,1,.. void expand(std::vector const & from, MathArray & to) const; private: /// docstring def_; /// int numargs_; /// docstring disp_; }; // This contains a table of "global" macros that are always accessible, // either because they implement a feature of standard LaTeX or some // hack to display certain contents nicely. class MacroTable : public std::map { public: /// Parse full "\def..." or "\newcommand..." or ... void insert(docstring const & definition); /// Insert pre-digested macro definition void insert(docstring const & name, MacroData const & data); /// Do we have a macro by that name? bool has(docstring const & name) const; /// MacroData const & get(docstring const & name) const; /// void dump(); /// the global list static MacroTable & globalMacros(); /// the local list hack //static MacroTable & localMacros(); }; } // namespace lyx #endif