summaryrefslogtreecommitdiff
path: root/sc/inc/interpretercontext.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/inc/interpretercontext.hxx')
-rw-r--r--sc/inc/interpretercontext.hxx12
1 files changed, 9 insertions, 3 deletions
diff --git a/sc/inc/interpretercontext.hxx b/sc/inc/interpretercontext.hxx
index 2f3e33040702..9fb2bc3993c5 100644
--- a/sc/inc/interpretercontext.hxx
+++ b/sc/inc/interpretercontext.hxx
@@ -37,7 +37,6 @@ class ScInterpreterContextPool;
struct ScInterpreterContext
{
const ScDocument* mpDoc;
- SvNumberFormatter* mpFormatter;
size_t mnTokenCachePos;
std::vector<formula::FormulaToken*> maTokens;
std::vector<DelayedSetNumberFormat> maDelayedSetNumberFormat;
@@ -48,10 +47,10 @@ struct ScInterpreterContext
ScInterpreterContext(const ScDocument& rDoc, SvNumberFormatter* pFormatter)
: mpDoc(&rDoc)
- , mpFormatter(pFormatter)
, mnTokenCachePos(0)
, maTokens(TOKEN_CACHE_SIZE, nullptr)
, mScLookupCache(nullptr)
+ , mpFormatter(pFormatter)
{
}
@@ -59,7 +58,12 @@ struct ScInterpreterContext
~ScInterpreterContext();
- SvNumberFormatter* GetFormatTable() const { return mpFormatter; }
+ SvNumberFormatter* GetFormatTable() const
+ {
+ if (mpFormatter == nullptr)
+ const_cast<ScInterpreterContext*>(this)->initFormatTable();
+ return mpFormatter;
+ }
private:
friend class ScInterpreterContextPool;
@@ -67,6 +71,8 @@ private:
void SetDocAndFormatter(const ScDocument& rDoc, SvNumberFormatter* pFormatter);
void Cleanup();
void ClearLookupCache();
+ void initFormatTable();
+ SvNumberFormatter* mpFormatter;
};
class ScThreadedInterpreterContextGetterGuard;