From 4479a7f689d5fadc741f7798f85fec540d4970ea Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Thu, 31 Dec 2009 18:37:09 +0000 Subject: [PATCH] A simple version of ModeSpecifier for MathStream. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32702 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/mathed/MathStream.cpp | 2 +- src/mathed/MathStream.h | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/mathed/MathStream.cpp b/src/mathed/MathStream.cpp index ac511dd917..a638052a87 100644 --- a/src/mathed/MathStream.cpp +++ b/src/mathed/MathStream.cpp @@ -246,7 +246,7 @@ WriteStream & operator<<(WriteStream & ws, unsigned int i) MathStream::MathStream(odocstream & os) - : os_(os), tab_(0), line_(0), lastchar_(0) + : os_(os), tab_(0), line_(0), lastchar_(0), in_text_(false) {} diff --git a/src/mathed/MathStream.h b/src/mathed/MathStream.h index c2eb3d2326..8dc9c4628d 100644 --- a/src/mathed/MathStream.h +++ b/src/mathed/MathStream.h @@ -242,6 +242,7 @@ public: char const * const tag_; }; + class MathStream { public: /// @@ -262,6 +263,12 @@ public: void defer(std::string const &); /// docstring deferred() const; + /// + void setTextMode() { in_text_ = true; } + /// + void setMathMode() { in_text_ = false; } + /// + bool inText() const { return in_text_; } private: /// odocstream & os_; @@ -272,6 +279,8 @@ private: /// char lastchar_; /// + bool in_text_; + /// odocstringstream deferred_; }; @@ -293,6 +302,34 @@ MathStream & operator<<(MathStream &, MTag const &); MathStream & operator<<(MathStream &, ETag const &); +// A simpler version of ModeSpecifier, for MathML +class SetMode { +public: + /// + explicit SetMode(MathStream & os, bool text) + : os_(os) + { + was_text_ = os.inText(); + if (text) + os.setTextMode(); + else + os.setMathMode(); + } + /// + ~SetMode() + { + if (was_text_) + os_.setTextMode(); + else + os_.setMathMode(); + } +private: + /// + MathStream & os_; + /// + bool was_text_; +}; + // // Debugging -- 2.39.5