[RTL]
[reactos.git] / reactos / tools / sysgen / SysGen.BuildEngine / Tasks / RBuild / CompilationUnitTask.cs
1 using System;
2 using SysGen.BuildEngine.Attributes;
3
4 using SysGen.RBuild.Framework;
5
6 namespace SysGen.BuildEngine.Tasks
7 {
8 [TaskName("compilationunit")]
9 public class CompilationUnitTask : FileSystemInfoBaseTask, ITaskContainer, IRBuildSourceFilesContainer
10 {
11 private TaskCollection m_ChildTasks = new TaskCollection();
12
13 public CompilationUnitTask()
14 {
15 Root = PathRoot.Intermediate;
16 }
17
18 public TaskCollection ChildTasks
19 {
20 get { return m_ChildTasks; }
21 }
22
23 public bool ExecuteChilds
24 {
25 get { return true; }
26 }
27
28 protected override void CreateFileSystemObject()
29 {
30 m_FileSystemInfo = new RBuildCompilationUnitFile();
31 }
32
33 public RBuildCompilationUnitFile CompilationUnit
34 {
35 get { return m_FileSystemInfo as RBuildCompilationUnitFile; }
36 }
37
38 public RBuildSourceFileCollection SourceFiles
39 {
40 get { return CompilationUnit.SourceFiles; }
41 }
42
43 /// <summary>
44 /// The name of the compilation unit to set.
45 /// </summary>
46 [TaskAttribute("name")]
47 public string FileName { get { return m_FileSystemInfo.Name; } set { m_FileSystemInfo.Name = value; } }
48
49 protected override void ExecuteTask()
50 {
51 base.ExecuteTask();
52
53 // Add the compilation unit to the current module
54 Module.CompilationUnits.Add(CompilationUnit);
55 }
56
57 }
58 }