using System;
using System.IO;
using System.CodeDom.Compiler;
using System.Diagnostics;
namespace AnticipatingMinds.Genesis.CodeDOM{
/// <summary>
/// Provides a container for a CodeDOM program graph.
/// </summary>
[Serializable]
public class CodeCompileUnit : CodeAssemblyFile
{
/// <summary>
/// Initializes a new instance of <see cref='AnticipatingMinds.Genesis.CodeDOM.CodeCompileUnit'/>.
/// </summary>
/// <remarks>CodeCompileUnit represents a single compilable source code snippet.
/// In many language CodeCompileUnit is associated derctly with a source code file.
/// </remarks>
public CodeCompileUnit() : base()
{
Namespace = new CodeNamespace(string.Empty);
}
/// <summary>
/// Initializes a new instance of <see cref='AnticipatingMinds.Genesis.CodeDOM.CodeCompileUnit'/>.
/// </summary>
/// <remarks>CodeCompileUnit represents a single compilable source code snippet.
/// In many language CodeCompileUnit is associated derctly with a source code file.
/// </remarks>
/// <param name="sourceFileName">Source file name.</param>
public CodeCompileUnit(string sourceFileName) : this()
{
SourceFileName = sourceFileName;
}
/// <summary>
/// Gets the collection of assembly level attributes.
/// </summary>
public CodeAttributeCollection GlobalAttributes
{
get
{
return globalAttributes;
}
}
/// <summary>
/// Gets a topmost namespace defined in compilation unit.
/// </summary>
/// <remarks>
/// Every compile unit has a topmost namespace where other namespaces & classes
/// are defined. In C# it is called anonymouse namespace.
/// </remarks>
public CodeNamespace Namespace
{
get
{
return unitNamepspace;
}
set
{
unitNamepspace = value;
unitNamepspace.CompileUnit = this;
}
}
private CodeNamespace unitNamepspace;
private CodeAttributeCollection globalAttributes = new CodeAttributeCollection();
}
}
|