]> git.lyx.org Git - lyx.git/blobdiff - src/LayoutFile.cpp
Fix the rest of bug 5010.
[lyx.git] / src / LayoutFile.cpp
index e2d7653454907dd15fa5417ad957a8b2942df4d5..3c877b6675baa364a24a339dba1a400b73992572 100644 (file)
@@ -18,6 +18,7 @@
 #include "Lexer.h"
 #include "TextClass.h"
 
+#include "support/lassert.h"
 #include "support/debug.h"
 #include "support/FileName.h"
 #include "support/filetools.h"
@@ -46,6 +47,14 @@ LayoutFile::LayoutFile(string const & fn, string const & cln,
        texClassAvail_ = texClassAvail;
 }
 
+LayoutFileList::~LayoutFileList()
+{
+       ClassMap::const_iterator it = classmap_.begin();
+       ClassMap::const_iterator en = classmap_.end();
+       for (; it != en; ++it) {
+               delete it->second;
+       }
+}
 
 LayoutFileList & LayoutFileList::get() 
 {
@@ -68,7 +77,7 @@ bool LayoutFileList::haveClass(string const & classname) const
 
 LayoutFile const & LayoutFileList::operator[](string const & classname) const
 {
-       BOOST_ASSERT(haveClass(classname));
+       LASSERT(haveClass(classname), /**/);
        return *classmap_[classname];
 }
 
@@ -76,7 +85,7 @@ LayoutFile const & LayoutFileList::operator[](string const & classname) const
 LayoutFile & 
        LayoutFileList::operator[](string const & classname)
 {
-       BOOST_ASSERT(haveClass(classname));
+       LASSERT(haveClass(classname), /**/);
        return *classmap_[classname];
 }
 
@@ -84,7 +93,7 @@ LayoutFile &
 // Reads LyX textclass definitions according to textclass config file
 bool LayoutFileList::read()
 {
-       Lexer lex(0, 0);
+       Lexer lex;
        FileName const real_file = libFileSearch("", "textclass.lst");
        LYXERR(Debug::TCLASS, "Reading textclasses from `" << real_file << '\'');
 
@@ -175,7 +184,7 @@ std::vector<LayoutFileIndex> LayoutFileList::classList() const
 
 
 void LayoutFileList::reset(LayoutFileIndex const & classname) {
-       BOOST_ASSERT(haveClass(classname));
+       LASSERT(haveClass(classname), /**/);
        LayoutFile * tc = classmap_[classname];
        LayoutFile * tmpl = 
                new LayoutFile(tc->name(), tc->latexname(), tc->description(),
@@ -187,9 +196,9 @@ void LayoutFileList::reset(LayoutFileIndex const & classname) {
 
 string const LayoutFileList::localPrefix = "LOCAL:";
 
-
 LayoutFileIndex 
-       LayoutFileList::addLayoutFile(string const & textclass, string const & path)
+       LayoutFileList::addLayoutFile(string const & textclass, string const & path,
+               Layout_Type type)
 {
        // FIXME  There is a bug here: 4593
        //
@@ -197,7 +206,10 @@ LayoutFileIndex
        // NOTE: latex class name is defined in textclass.layout, which can be 
        // different from textclass
        string fullName = addName(path, textclass + ".layout");
-       string localIndex = localPrefix + fullName;
+       string localIndex;
+       
+       if (type == Local)
+               localIndex = localPrefix + fullName;
        
        // if the local file has already been loaded, return it
        if (haveClass(localIndex))
@@ -220,7 +232,7 @@ LayoutFileIndex
                        smatch sub;
                        if (regex_match(line, sub, reg)) {
                                // returns: whole string, classtype (not used here), class name, description
-                               BOOST_ASSERT(sub.size() == 4);
+                               LASSERT(sub.size() == 4, /**/);
                                // now, create a TextClass with description containing path information
                                string className(sub.str(2) == "" ? textclass : sub.str(2));
                                LayoutFile * tmpl =