summaryrefslogtreecommitdiff
path: root/starmath/inc/parse.hxx
diff options
context:
space:
mode:
authorThomas Lange [tl] <Thomas.Lange@oracle.com>2010-10-13 11:39:15 +0200
committerThomas Lange [tl] <Thomas.Lange@oracle.com>2010-10-13 11:39:15 +0200
commit9a1374b54144b15cfef1a0d8eeba861a69fec875 (patch)
treeefacb059428e02abe44a194619195082f88e413d /starmath/inc/parse.hxx
parent8780cc5c294085fe7379a24eee58ac446cc40d0c (diff)
cws tl84: #i114767# Math: added option to save only used symbols
Diffstat (limited to 'starmath/inc/parse.hxx')
-rwxr-xr-x[-rw-r--r--]starmath/inc/parse.hxx80
1 files changed, 48 insertions, 32 deletions
diff --git a/starmath/inc/parse.hxx b/starmath/inc/parse.hxx
index facf17d561e2..4c672df058ce 100644..100755
--- a/starmath/inc/parse.hxx
+++ b/starmath/inc/parse.hxx
@@ -33,11 +33,16 @@
#include <tools/list.hxx>
#include <tools/string.hxx>
+#include <set>
+#include <stack>
+#include <list>
+
#include "types.hxx"
class SmNode;
class SmDocShell;
+//////////////////////////////////////////////////////////////////////
// TokenGroups
#define TGOPER 0x00000001
@@ -113,17 +118,18 @@ enum SmTokenType
struct SmToken
{
- // token text
- String aText;
- // token info
- SmTokenType eType;
+
+ String aText; // token text
+ SmTokenType eType; // token info
sal_Unicode cMathChar;
+
// parse-help info
- ULONG nGroup;
- USHORT nLevel;
+ ULONG nGroup;
+ USHORT nLevel;
+
// token position
- USHORT nRow;
- xub_StrLen nCol;
+ USHORT nRow;
+ xub_StrLen nCol;
SmToken();
};
@@ -152,6 +158,7 @@ struct SmErrorDesc
String Text;
};
+
DECLARE_STACK(SmNodeStack, SmNode *)
DECLARE_LIST(SmErrDescList, SmErrorDesc *)
@@ -170,19 +177,22 @@ enum SmConvert
class SmParser
{
- String BufferString;
- SmToken CurToken;
- SmNodeStack NodeStack;
- SmErrDescList ErrDescList;
- int CurError;
- LanguageType nLang;
- xub_StrLen BufferIndex,
- nTokenIndex;
- USHORT Row,
- ColOff;
- SmConvert eConversion;
- BOOL bImportSymNames,
- bExportSymNames;
+ String m_aBufferString;
+ SmToken m_aCurToken;
+ SmNodeStack m_aNodeStack;
+ SmErrDescList m_aErrDescList;
+ int m_nCurError;
+ LanguageType m_nLang;
+ xub_StrLen m_nBufferIndex,
+ m_nTokenIndex;
+ USHORT m_Row,
+ m_nColOff;
+ SmConvert m_eConversion;
+ BOOL m_bImportSymNames,
+ m_bExportSymNames;
+
+ // map of used symbols (used to reduce file size by exporting only actually used symbols)
+ std::set< rtl::OUString > m_aUsedSymbols;
// declare copy-constructor and assignment-operator private
SmParser(const SmParser &);
@@ -193,7 +203,7 @@ protected:
BOOL IsDelimiter( const String &rTxt, xub_StrLen nPos );
#endif
void NextToken();
- xub_StrLen GetTokenIndex() const { return nTokenIndex; }
+ xub_StrLen GetTokenIndex() const { return m_nTokenIndex; }
void Insert(const String &rText, USHORT nPos);
void Replace( USHORT nPos, USHORT nLen, const String &rText );
@@ -231,37 +241,43 @@ protected:
void GlyphSpecial();
// end of grammar
- LanguageType GetLanguage() const { return nLang; }
- void SetLanguage( LanguageType nNewLang ) { nLang = nNewLang; }
+ LanguageType GetLanguage() const { return m_nLang; }
+ void SetLanguage( LanguageType nNewLang ) { m_nLang = nNewLang; }
void Error(SmParseError Error);
+ void ClearUsedSymbols() { m_aUsedSymbols.clear(); }
+ void AddToUsedSymbols( const String &rSymbolName ) { m_aUsedSymbols.insert( rSymbolName ); }
+
public:
SmParser();
SmNode *Parse(const String &rBuffer);
- const String & GetText() const { return BufferString; };
+ const String & GetText() const { return m_aBufferString; };
- SmConvert GetConversion() const { return eConversion; }
- void SetConversion(SmConvert eConv) { eConversion = eConv; }
+ SmConvert GetConversion() const { return m_eConversion; }
+ void SetConversion(SmConvert eConv) { m_eConversion = eConv; }
- BOOL IsImportSymbolNames() const { return bImportSymNames; }
- void SetImportSymbolNames(BOOL bVal) { bImportSymNames = bVal; }
- BOOL IsExportSymbolNames() const { return bExportSymNames; }
- void SetExportSymbolNames(BOOL bVal) { bExportSymNames = bVal; }
+ BOOL IsImportSymbolNames() const { return m_bImportSymNames; }
+ void SetImportSymbolNames(BOOL bVal) { m_bImportSymNames = bVal; }
+ BOOL IsExportSymbolNames() const { return m_bExportSymNames; }
+ void SetExportSymbolNames(BOOL bVal) { m_bExportSymNames = bVal; }
USHORT AddError(SmParseError Type, SmNode *pNode);
const SmErrorDesc * NextError();
const SmErrorDesc * PrevError();
const SmErrorDesc * GetError(USHORT i = 0xFFFF);
+
+ bool IsUsedSymbol( const String &rSymbolName ) const { m_aUsedSymbols.find( rSymbolName ) != m_aUsedSymbols.end(); }
+ std::set< rtl::OUString > GetUsedSymbols() const { return m_aUsedSymbols; }
};
inline BOOL SmParser::TokenInGroup(ULONG nGroup)
{
- return (CurToken.nGroup & nGroup) ? TRUE : FALSE;
+ return (m_aCurToken.nGroup & nGroup) ? TRUE : FALSE;
}