]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/MacroTable.h
Fix bug #8746: Images have to have alt tags.
[lyx.git] / src / mathed / MacroTable.h
index 5fa88cee2b2e43eb996126af9d803f8b4aabe3fc..3a1fed4fa682bb89d833f54d4d4dc1cb6b51e215 100644 (file)
@@ -16,9 +16,9 @@
 #include "DocIterator.h"
 
 #include "support/docstring.h"
-#include "support/types.h"
 
 #include <map>
+#include <set>
 #include <vector>
 
 namespace lyx {
@@ -28,22 +28,21 @@ class MathData;
 class MathMacroTemplate;
 class Paragraph;
 
-
 enum MacroType {
        MacroTypeNewcommand,
+       MacroTypeNewcommandx,
        MacroTypeDef
 };
-
-
+       
 ///
 class MacroData {
 public:
        /// Constructor to make STL containers happy
-       MacroData();
+       MacroData(Buffer * buf = 0);
        /// Create lazy MacroData which only queries the macro template when needed
-       MacroData(Buffer const & buf, DocIterator const & pos);
+       MacroData(Buffer * buf, DocIterator const & pos);
        /// Create non-lazy MacroData which directly queries the macro template
-       MacroData(MathMacroTemplate const & macro);
+       MacroData(Buffer * buf, MathMacroTemplate const & macro);
 
        ///
        docstring const & definition() const { updateData(); return definition_; }
@@ -81,7 +80,7 @@ public:
        MacroType & type() { return type_; }
        
        /// output as TeX macro, only works for lazy MacroData!!!
-       void write(odocstream & os, bool overwriteRedefinition) const;
+       int write(odocstream & os, bool overwriteRedefinition) const;
 
        ///
        bool operator==(MacroData const & x) const {
@@ -135,6 +134,12 @@ private:
        mutable MacroType type_;
 };
 
+
+///
+class MacroNameSet : public std::set<docstring> {};
+///
+class MacroSet : public std::set<MacroData const *> {};
+
        
 /// A lookup table of macro definitions.
 /**
@@ -147,13 +152,15 @@ class MacroTable : public std::map<docstring, MacroData>
 {
 public:
        /// Parse full "\\def..." or "\\newcommand..." or ...
-       void insert(docstring const & definition, std::string const &);
+       iterator insert(Buffer * buf, docstring const & definition, std::string const &);
        /// Insert pre-digested macro definition
-       void insert(docstring const & name, MacroData const & data);
+       iterator insert(docstring const & name, MacroData const & data);
        ///
        MacroData const * get(docstring const & name) const;
        ///
        void dump();
+       ///
+       void getMacroNames(std::set<docstring> & names) const;
 
        /// the global list
        static MacroTable & globalMacros();
@@ -171,14 +178,14 @@ public:
 class MacroContext {
 public:
        /// construct context for the insets at pos
-       MacroContext(Buffer const & buf, DocIterator const & pos);
+       MacroContext(Buffer const * buf, DocIterator const & pos);
        
        /// Lookup macro
        MacroData const * get(docstring const & name) const;
        
 private:
        ///
-       Buffer const & buf_;
+       Buffer const * buf_;
        ///
        DocIterator const & pos_;
 };