]> git.lyx.org Git - lyx.git/blobdiff - src/Encoding.h
installer: further preparation
[lyx.git] / src / Encoding.h
index 445c80be3b9c675375347362a34d1534e3978e70..6a1f89c4982a19236b4183a473e3f858243e88bf 100644 (file)
@@ -44,11 +44,13 @@ class Encoding {
 public:
        /// Which LaTeX package handles this encoding?
        enum Package {
-               none,
-               inputenc,
-               CJK,
-               japanese
+               none = 1,
+               inputenc = 2,
+               CJK = 4,
+               japanese = 8
        };
+       /// Represent any of the above packages
+       static int const any;
        ///
        Encoding() {}
        ///
@@ -100,6 +102,12 @@ public:
        /// A list of all characters usable in this encoding
        std::vector<char_type> symbolsList() const;
 private:
+       /**
+        * Do we have to output this character as LaTeX command in any case?
+        * This is true if the "force" flag is set.
+        * We need this if the inputencoding does not support a certain glyph.
+        */
+       bool isForced(char_type c) const;
        ///
        std::string name_;
        ///
@@ -118,6 +126,8 @@ private:
        /// Set of UCS4 characters that we can encode (for singlebyte
        /// encodings only)
        mutable CharSet encodable_;
+       /// Set of UCS4 characters that we can't encode
+       CharSet const * forced_;
        /// All code points below this are encodable. This helps us to avoid
        /// lokup of ASCII characters in encodable_ and gives about 1 sec
        /// speedup on export of the Userguide.
@@ -164,9 +174,12 @@ public:
        /// Get encoding from LyX name \p name
        Encoding const *
        fromLyXName(std::string const & name, bool allowUnsafe = false) const;
-       /// Get encoding from LaTeX name \p name
-       Encoding const *
-       fromLaTeXName(std::string const & name, bool allowUnsafe = false) const;
+       /// Get encoding from LaTeX name \p name and package \p package
+       Encoding const * fromLaTeXName(std::string const & name,
+               int const & package = Encoding::any, bool allowUnsafe = false) const;
+       /// Get encoding from iconv name \p name and package \p package
+       Encoding const * fromIconvName(std::string const & name,
+               int const & package = Encoding::any, bool allowUnsafe = false) const;
 
        ///
        const_iterator begin() const { return encodinglist.begin(); }
@@ -207,12 +220,6 @@ public:
         * \p c is a known character matching the preamble entry.
         */
        static bool isKnownScriptChar(char_type const c, std::string & preamble);
-       /**
-        * Do we have to output this character as LaTeX command in any case?
-        * This is true if the "force" flag is set.
-        * We need this if the inputencoding does not support a certain glyph.
-        */
-       static bool isForced(char_type c);
        /**
         * Do we have to display in italics this character when in mathmode?
         * This is true if the "mathalpha" flag is set. We use this for