]> git.lyx.org Git - lyx.git/blobdiff - src/encoding.C
do not create invalid .lyx files when importing \i{}, \j{}, \l{} or \L{}.
[lyx.git] / src / encoding.C
index a57fed5cc69b9cdb5633277b76c51a11b9982c24..d8a175b992e12d8fb1e43d24dae29b37b716ef30 100644 (file)
@@ -18,6 +18,8 @@
 #include "lyxlex.h"
 #include "lyxrc.h"
 
+#include "support/filename.h"
+
 
 namespace lyx {
 
@@ -224,21 +226,50 @@ char_type Encodings::transformChar(char_type c,
 }
 
 
-Encoding const * Encodings::getEncoding(string const & encoding) const
+Encoding const * Encodings::getFromLyXName(string const & name) const
 {
-       EncodingList::const_iterator it = encodinglist.find(encoding);
+       EncodingList::const_iterator it = encodinglist.find(name);
        if (it != encodinglist.end())
                return &it->second;
        else
                return 0;
 }
 
+
+namespace {
+
+class LaTeXNamesEqual : public std::unary_function<std::pair<std::string, Encoding>, bool> {
+       public:
+               LaTeXNamesEqual(string const & LaTeXName)
+                       : LaTeXName_(LaTeXName) {}
+               bool operator()(std::pair<std::string, Encoding> const & encoding) const
+               {
+                       return encoding.second.latexName() == LaTeXName_;
+               }
+       private:
+               string LaTeXName_;
+};
+
+} // namespace anon
+
+
+Encoding const * Encodings::getFromLaTeXName(string const & name) const
+{
+       EncodingList::const_iterator const it =
+               std::find_if(encodinglist.begin(), encodinglist.end(),
+                            LaTeXNamesEqual(name));
+       if (it != encodinglist.end())
+               return &it->second;
+       else
+               return 0;
+}
+
+
 Encodings::Encodings()
 {
-       symbol_encoding_ = Encoding("symbol", "", "");
 }
 
-void Encodings::read(string const & filename)
+void Encodings::read(support::FileName const & filename)
 {
        enum Encodingtags {
                et_encoding = 1,