private void GenerateSnippetMembers(CodeTypeDeclaration e)
{
bool hasSnippet = false;
foreach (CodeTypeMember current in e.Members)
{
if (current is CodeSnippetTypeMember)
{
hasSnippet = true;
_currentMember = current;
if (_options.BlankLinesBetweenMembers)
{
Output.WriteLine();
}
if (_currentMember.StartDirectives.Count > 0)
{
GenerateDirectives(_currentMember.StartDirectives);
}
GenerateCommentStatements(_currentMember.Comments);
CodeSnippetTypeMember imp = (CodeSnippetTypeMember)current;
if (imp.LinePragma != null)
{
GenerateLinePragmaStart(imp.LinePragma);
}
// Don't indent snippets, in order to preserve the column
// information from the original code. This improves the debugging
// experience.
int savedIndent = Indent;
Indent = 0;
GenerateSnippetMember(imp);
// Restore the indent
Indent = savedIndent;
if (imp.LinePragma != null)
{
GenerateLinePragmaEnd(imp.LinePragma);
}
if (_currentMember.EndDirectives.Count > 0)
{
GenerateDirectives(_currentMember.EndDirectives);
}
}
}
// Generate an extra new line at the end of the snippet.
// If the snippet is comment and this type only contains comments.
// The generated code will not compile.
if (hasSnippet)
{
Output.WriteLine();
}
}