X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FEncoding.h;h=0f6e8ff4386b8b4b6f269f3ecd815cd96ce49f1a;hb=63e2ac459745c1f5a650edf1b59fa7f9ff7f680c;hp=ebdfb98b0ca476d8d1f115268059c65337f2d153;hpb=25344de51d774de888631d3d85820a88ae99a80b;p=lyx.git diff --git a/src/Encoding.h b/src/Encoding.h index ebdfb98b0c..0f6e8ff438 100644 --- a/src/Encoding.h +++ b/src/Encoding.h @@ -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 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. */