]> git.lyx.org Git - lyx.git/blobdiff - src/Encoding.h
Fix editorial whitespace error
[lyx.git] / src / Encoding.h
index ebdfb98b0ca476d8d1f115268059c65337f2d153..7400127f2d5c5c58734384399fa24d8dea13d7cd 100644 (file)
@@ -52,6 +52,8 @@ enum CharInfoFlags {
        CharInfoMathNoTermination = 32,
        ///
        CharInfoForceSelected = 64,
+       ///
+       CharInfoDeprecated = 128
 };
 
 
@@ -86,6 +88,8 @@ public:
        bool force() const { return flags_ & CharInfoForce ? true : false; }
        /// Force the LaTeX command for some encodings?
        bool forceselected() const { return flags_ & CharInfoForceSelected ? true : false; }
+       /// Disable LaTeX command => char_type conversion for this deprecated symbol?
+       bool deprecated() const { return flags_ & CharInfoDeprecated ? true : false; }
        /// TIPA shortcut
        std::string const tipashortcut() const { return tipashortcut_; }
        /// \c textcommand needs no termination (such as {} or space).
@@ -109,7 +113,11 @@ private:
 };
 
 
-///
+/**
+ * An encoding as defined in lib/encodings.
+ * All const methods are thread-safe, so the caller does not need any locking.
+ * This property must be kept when changing the class.
+ */
 class Encoding {
 public:
        /// Which LaTeX package handles this encoding?
@@ -122,7 +130,8 @@ public:
        /// Represent any of the above packages
        static int const any;
        ///
-       Encoding() : fixedwidth_(true), unsafe_(false), complete_(false) {}
+       Encoding() : fixedwidth_(true), unsafe_(false), forced_(0),
+                    start_encodable_(0), package_(none), complete_(false) {}
        ///
        Encoding(std::string const & n, std::string const & l,
                 std::string const & g, std::string const & i,
@@ -195,13 +204,13 @@ private:
        typedef std::set<char_type> CharSet;
        /// Set of UCS4 characters that we can encode (for singlebyte
        /// encodings only)
-       mutable CharSet encodable_;
+       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.
-       mutable char_type start_encodable_;
+       char_type start_encodable_;
        /// Which LaTeX package handles this encoding?
        Package package_;
        /**
@@ -211,7 +220,7 @@ private:
         * This is needed especially for the multibyte encodings, if we
         * complete all encoding info on startup it takes 2-3 minutes.
         */
-       mutable bool complete_;
+       bool complete_;
 };
 
 class Encodings {
@@ -277,6 +286,12 @@ public:
         * letters and accented characters that are output as math commands.
         */
        static bool isMathAlpha(char_type c);
+       /**
+        * Do we have to wrap in \text this character when in mathmode?
+        * This is true if \p c is not ascii and the "mathalpha" flag is not
+        * set and a mathcommand is not defined in the unicodesymbols file.
+        */
+       static bool isUnicodeTextOnly(char_type c);
        /**
         * Register \p c as a mathmode command.
         */