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; | 
