]> git.lyx.org Git - lyx.git/blobdiff - src/BaseClassList.h
do what the FIXME suggested
[lyx.git] / src / BaseClassList.h
index fc03d7db74ec4ad9ae5724e0f7c0a09c5b67ac22..73ea0d950ae9d25217b2b54b32d91d81e6430058 100644 (file)
@@ -28,12 +28,12 @@ extern bool LyXSetStyle();
 
 
 /// Index into BaseClassList. Basically a 'strong typedef'.
-class BaseClassIndex {
+class LayoutFileIndex {
 public:
        ///
        typedef std::string base_type;
        ///
-       BaseClassIndex(base_type t) { data_ = t; }
+       LayoutFileIndex(base_type t) { data_ = t; }
        ///
        operator base_type() const { return data_; }
        ///
@@ -41,6 +41,29 @@ private:
        base_type data_;
 };
 
+/// This class amounts to little more than a `strong typedef'.
+/// A LayoutFile represents the layout information that is 
+/// contained in a *.layout file.
+class LayoutFile : public TextClass {
+public:
+       /// This should never be used, but it has to be provided for
+       /// std::map operator[] to work. Something like:
+       ///   mapthingy[stuff] = otherthing
+       /// creates an empty object before doing the assignment.
+       LayoutFile() {}
+       /// check whether the TeX class is available
+       bool isTeXClassAvailable() const { return texClassAvail_; }
+private:
+       /// Construct a layout with default values. Actual values loaded later.
+       explicit LayoutFile(std::string const &,
+                                std::string const & = std::string(),
+                                std::string const & = std::string(),
+                                bool texClassAvail = false);
+       /// The only class that should create a LayoutFile is
+       /// BaseClassList, which calls the private constructor.
+       friend class BaseClassList;
+};
+
 
 /// A list of base document classes (*.layout files).
 /// This is a singleton class. The sole instance is accessed
@@ -56,23 +79,25 @@ public:
        ///
        bool haveClass(std::string const & classname) const;
        ///
-       TextClass const & operator[](std::string const & classname) const;
-       /// Read textclass list.  Returns false if this fails.
+       LayoutFile const & operator[](std::string const & classname) const;
+       ///
+       LayoutFile & operator[](std::string const & classname);
+       /// Read textclass list. Returns false if this fails.
        bool read();
        /// Clears the textclass so as to force it to be reloaded
-       void reset(BaseClassIndex const & tc);
+       void reset(LayoutFileIndex const & tc);
        /// add a textclass from user local directory.
        /// \return the identifier for the loaded file, or else an
        /// empty string if no file was loaded.
-       BaseClassIndex
-               addTextClass(std::string const & textclass, std::string const & path);
+       LayoutFileIndex
+               addLayoutFile(std::string const & textclass, std::string const & path);
        /// a list of the available classes
-       std::vector<BaseClassIndex> classList() const;
+       std::vector<LayoutFileIndex> classList() const;
        /// 
        static std::string const localPrefix;
 private:
        ///
-       typedef std::map<std::string, TextClass> ClassMap;
+       typedef std::map<std::string, LayoutFile> ClassMap;
        /// noncopyable
        BaseClassList(BaseClassList const &);
        /// nonassignable
@@ -82,7 +107,7 @@ private:
 };
 
 ///
-BaseClassIndex defaultBaseclass();
+LayoutFileIndex defaultBaseclass();
 
 
 } // namespace lyx