]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.h
Angus insetindex patch + protect patch from Dekel
[lyx.git] / src / LaTeXFeatures.h
index 9b001b7bff5bdd5a792b1655e6d17b48a442ecee..cee55913a121baf94785f6acbfc916483df0c751 100644 (file)
@@ -1,25 +1,30 @@
 // -*- C++ -*-
 /* This file is part of
-* ======================================================
+* ====================================================== 
 * 
 *           LyX, The Document Processor
 *        
-*           Copyright (C) 1995 Matthias Ettrich
-*           Copyright (C) 1995-1998 the LyX Team.
+*           Copyright 1995 Matthias Ettrich
+*           Copyright 1995-2000 the LyX Team.
 *
-*======================================================*/
+* ====================================================== */
 
-#ifndef _LATEXFEATURES_H
-#define _LATEXFEATURES_H
+#ifndef LATEXFEATURES_H
+#define LATEXFEATURES_H
 
 
 #ifdef __GNUG__
 #pragma interface
 #endif
 
-class LString;
+#include <vector>
+#include <set>
+
+#include "LString.h"
+
 class BufferParams; 
 class LyXTextClass;
+struct Language;
 
 /** The packages and commands that a buffer needs. This struct
   contains an entry for each of the latex packages and
@@ -28,26 +33,34 @@ class LyXTextClass;
   in buffer.C and paragraph.C when you do so. */
 struct LaTeXFeatures {
        ///
-       LaTeXFeatures(int n) ;
-       ///
-       ~LaTeXFeatures() {
-               delete[] layout;
-       }
+       LaTeXFeatures(BufferParams const &, int n) ;
        /// The packaes needed by the document
-       LString getPackages(BufferParams const &params);
+       string getPackages();
        /// The macros definitions needed by the document
-       LString getMacros(BufferParams const &params);
+       string getMacros();
        /// The definitions needed by the document's textclass
-       LString getTClassPreamble(BufferParams const &params);
+       string getTClassPreamble();
+       ///
+       string getIncludedFiles();
 
        ///
-       void showStruct(BufferParams &params);
+       void showStruct();
+
+       /// Provide a string name-space to the requirements
+       void require(string const & name);
+
+       /// Static preamble bits from the external material insets
+       string externalPreambles;
 
        //@Man: Packages
        //@{
        ///
+       bool array;
+       ///
        bool color;     // color.sty
        ///
+       bool graphicx; // graphicx.sty
+       ///
        bool graphics;  // graphics.sty
        ///
        bool setspace;  // setspace.sty
@@ -73,6 +86,12 @@ struct LaTeXFeatures {
        bool floatflt;  // floatflt.sty
        ///
        bool url;       // url.sty
+       ///
+       bool varioref;  // varioref.sty
+       ///
+       bool prettyref; // prettyref.sty
+       ///
+       bool chess;     // chess.sty
        //@}
 
        
@@ -116,7 +135,7 @@ struct LaTeXFeatures {
        
        //@Man: Layouts
        //@{
-       bool *layout;
+       std::vector<bool> layout;
        //@}
        
        //@Man: Special features
@@ -126,7 +145,22 @@ struct LaTeXFeatures {
        bool NeedLyXFootnoteCode;
        ///
        bool NeedLyXMinipageIndent;
+       ///
+       typedef std::set<Language const *> LanguageList;
+       ///
+       LanguageList UsedLanguages;
+       ///
+       typedef std::set<string> FloatList;
+       ///
+       FloatList usedFloats;
+       ///
+       typedef std::map<string , string> FileMap;
+       ///
+       FileMap IncludedFiles;
        //@}
+       BufferParams const & bufferParams() const;
+private:
+       BufferParams const & params;
 };
 
 #endif