private void AnalyzeFilestream(object context)
{
AnalyzeThreadParameters parameters = (AnalyzeThreadParameters)context;
try
{
FileAnalyzer analyzer =
new FileAnalyzer(parameters.stream, this.listener, null, this.configFile.SuppressMethodSignatures,
parameters.filename, this.configFile.SwitchStatementBehavior);
analyzer.Analyze();
parameters.stream.Close(); // free up the stream.
}
catch (UnknownStructureException error)
{
lock (this.mutex)
{
this.errors.Add(new ErrorInfo(parameters.filename, error.Message));
}
}
catch (PreprocessorException)
{
lock (this.mutex)
{
this.errors.Add(new ErrorInfo(parameters.filename, "Error running pre-processor. Only basic support for #ifdefs."));
}
}
catch (Exception)
{
lock (this.mutex)
{
this.errors.Add(new ErrorInfo(parameters.filename, "Unknown error parsing file."));
}
}
this.threadSemaphore.Release();
}