From 54ccb03d29f1f1dfeba0c8d81c0c13743a862ec7 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Mon, 21 May 2001 11:11:14 +0000 Subject: Update from Simon to make startup and finalise work properly. --- win32/ExternalLexer.cxx | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'win32/ExternalLexer.cxx') 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; -- cgit v1.2.3