//===================================================================== /// <summary> /// Writes a description of a group of enums. /// </summary> public void WriteEnums(StreamWriter w, EnumGroup group) { foreach (EnumDef e in group.Enums) w.WriteLine("<a name=\"" + e.Name + "\"></a>"); w.Write("<table class=decl><tr><td><code>"); foreach (EnumDef e in group.Enums) w.Write(e.Name + " "); w.WriteLine("</code>"); w.Write("<td align=right><code>" + this.FileLinks(group.Source) + "</code></table>"); w.Write("<div class=desc>"); if (group.Description == "") w.Write("<i>no description available</i>"); else w.Write(EncodeEntities(group.Description)); w.WriteLine("</div>"); }
//===================================================================== /// <summary> /// Processes a line which appears to define one or more enums. /// All enums defined on a single line are placed in an EnumGroup. /// This means that some enums are not grouped as they ought to be, /// but I did say this parser is pretty stupid. /// "enum" identifier ["," identifier]... ";" /// </summary> private void ProcessEnums(String line) { // note: the keyword "enum" has already been parsed EnumGroup group = new EnumGroup(Path.GetFileName(CurrentFileName), LineNumber); group.Description = LastComment; LastComment = ""; line = line.Trim(); while (line != "") { String token = GetNextToken(ref line); if (token == ";") break; if (token == "") return; if (token != ",") { EnumDef e = new EnumDef(Path.GetFileName(CurrentFileName), LineNumber); e.Name = token; e.Group = group; group.Enums.Add(e); } } this.SymbolTable.EnumGroups.Add(group); this.CurrentSourceFile.EnumGroups.Add(group); }