33 using System.Collections.Generic;
44 private const string PreservedSectionMarker =
"LWIP MIB generator - preserved section begin";
45 private const string PreservedSectionHeader =
46 "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n" +
47 PreservedSectionMarker +
"\n" +
48 "Code below is preserved on regeneration. Remove these comment lines to regenerate code.\n" +
49 "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";
51 private readonly List<CodeElement> includes =
new List<CodeElement>();
52 private readonly List<CodeElement> defines =
new List<CodeElement>();
53 private readonly List<CodeElement> declarations =
new List<CodeElement>();
54 private readonly List<CodeElement> implementation =
new List<CodeElement>();
55 private readonly List<CodeElement> preservedCode =
new List<CodeElement>();
67 get {
return this.includes; }
70 public List<CodeElement>
Defines 72 get {
return this.defines; }
77 get {
return this.declarations; }
82 get {
return this.implementation; }
87 get {
return this.preservedCode; }
107 if (!String.IsNullOrWhiteSpace(file))
109 string ext =
System.IO.Path.GetExtension(file);
111 string headerFile = !String.IsNullOrEmpty(ext) ? file.Substring(0, file.Length - ext.Length) : file;
123 if (this.includes.Count > 0)
129 if (this.defines.Count > 0)
135 if (this.declarations.Count > 0)
141 if (this.implementation.Count > 0)
147 if (this.preservedCode.Count > 0)
155 cFile.
Save(cGenerator);
160 if (File.Exists(file))
162 using (StreamReader fileStream =
new StreamReader(file))
164 while (!fileStream.EndOfStream)
166 string line = fileStream.ReadLine();
167 if (line == PreservedSectionMarker)
173 if (!fileStream.EndOfStream)
176 fileStream.ReadLine();
177 fileStream.ReadLine();
178 fileStream.ReadLine();
179 fileStream.ReadLine();
181 string preservedCode = fileStream.ReadToEnd();
183 int lastEndif = preservedCode.LastIndexOf(
"#endif", StringComparison.Ordinal);
184 preservedCode = preservedCode.Remove(lastEndif);
186 return preservedCode;
static readonly EmptyLine TwoLines
void AddElements(IList< CodeElement > elements, params CodeElement[] spacerElements)
List< CodeElement > Implementation
static string GetPreservedCode(string file)
static readonly EmptyLine SingleLine
void Save(CGenerator generator)
void Save(CGenerator cGenerator)
List< CodeElement > Defines
List< CodeElement > PreservedCode
List< CodeElement > Includes
CodeElement AddElement(CodeElement element)
List< CodeElement > Declarations