diff options
Diffstat (limited to 'win32/ExternalLexer.cxx')
-rw-r--r-- | win32/ExternalLexer.cxx | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/win32/ExternalLexer.cxx b/win32/ExternalLexer.cxx index d6df40343..77c235940 100644 --- a/win32/ExternalLexer.cxx +++ b/win32/ExternalLexer.cxx @@ -21,6 +21,7 @@ int LexerManager::UseCount = 0; LexerLibrary *LexerManager::first = NULL; LexerLibrary *LexerManager::last = NULL; +LexerManager *LexerManager::firstlm = NULL; //------------------------------------------ // @@ -210,7 +211,8 @@ LexerManager::LexerManager() { UseCount++; if (1 == UseCount) { - EnumerateLexers(); + firstlm = this; + m_bLoaded = false; } } @@ -279,4 +281,31 @@ LexerManager::~LexerManager() { last = NULL; } } + if (this == firstlm) + firstlm = NULL; +} + +void LexerManager::Load() +{ + if(!m_bLoaded) + { + m_bLoaded = true; + EnumerateLexers(); + } } + +// Return a LexerManager, or create one and then return it. +LexerManager *LexerManager::GetInstance() { + if(!firstlm) + firstlm = new LexerManager; + return firstlm; +} + +LMMinder::~LMMinder() +{ + LexerManager *rem = LexerManager::firstlm; + if(rem) + delete rem; +} + +LMMinder minder; |