Hi, I have add the DebugLog to the CodeCompletion plug-in source to see it's output.
Here is my code of bool ParserThread::Parse()
bool ParserThread::Parse()
{
if (!InitTokenizer())
return false;
Manager::Get()->GetLogManager()->DebugLog(_("parsing file ")+ m_Filename);
bool result = false;
m_ParsingTypedef = false;
do
{
if (!m_pTokens || !m_Tokenizer.IsOK())
break;
if(!m_Options.useBuffer) // Parse a file
{
s_MutexProtection.Enter();
m_File = m_pTokens->ReserveFileForParsing(m_Filename);
s_MutexProtection.Leave();
if(!m_File)
break;
}
Manager::Get()->GetLogManager()->DebugLog(_("Entering DoParse"));
DoParse();
Manager::Get()->GetLogManager()->DebugLog(_("Leave DoParse"));
if(!m_Options.useBuffer) // Parsing a file
{
s_MutexProtection.Enter();
m_pTokens->FlagFileAsParsed(m_Filename);
s_MutexProtection.Leave();
}
result = true;
}while(false);
return result;
}
Then here is my simple test code
int b;
int c;
int main()
{
int a;
c=2;
a=1;
return 0;
}
Then the output is below:
Removed testParser from all deps
Updating class browser...
Class browser updated.
Loading project file...
Parsing project file...
Loading target Debug
Loading project files...
1 files loaded
Done loading project in 0ms
Project's base path: D:\temp\testParser\
Project's common toplevel path: D:\temp\testParser\
Warning: Using user specified encoding as fallback!
Encoding fallback is: Unicode 8 bit (UTF-8) (ID: 41)
Final encoding detected: Unicode 8 bit (UTF-8) (ID: 41)
project data set for D:\temp\testParser\main.cpp
Top Editor: D:\temp\testParser\main.cpp
Add project testParser in parsing queue
Passing list of files to parse
parsing file *************************Note Here
Entering DoParse
m_Str=[] token=[int]
m_Str=[int ] token=[b]
Added/updated token [b] (0), type 'int', actual 'int'. Parent is [] (-1)
m_Str=[int] token=[;]
m_Str=[] token=[int]
m_Str=[int ] token=[c]
Added/updated token [c] (1), type 'int', actual 'int'. Parent is [] (-1)
m_Str=[int] token=[;]
m_Str=[] token=[int]
m_Str=[int ] token=[main]
Leave DoParse
Starting batch parsing
parsing file D:\temp\testParser\main.cpp *************************Note Here
Entering DoParse
m_Str=[] token=[int]
m_Str=[int ] token=[b]
Added/updated token [b] (0), type 'int', actual 'int'. Parent is [] (-1)
m_Str=[int] token=[;]
m_Str=[] token=[int]
m_Str=[int ] token=[c]
Added/updated token [c] (1), type 'int', actual 'int'. Parent is [] (-1)
m_Str=[int] token=[;]
m_Str=[] token=[int]
m_Str=[int ] token=[main]
Leave DoParse
Parsing stage done (1 total parsed files, 3 tokens in 0 minute(s), 0.0 seconds).
Updating class browser...
Class browser updated.
It seems the the "main.cpp" was parsed twice when I open this project.
The first time, see the "*****Note", even the "m_Filename" is an empty string, this file still be parsed.
In the second time, the m_Filename contains the true file name, then this file parsed again.
Is there something wrong?
Thanks