コード例 #1
0
ファイル: SDKGen.cs プロジェクト: blockspacer/ConanExiles
        void WriteClassFiles()
        {
            string destDir = "C:\\SDK";

            if (MergePackageClasses)
            {
                foreach (var c in Classes)
                {
                    if (c.Value.Count == 0)
                    {
                        continue;
                    }
                    List <string> namespaces = new List <string>();
                    foreach (var obj in c.Value)
                    {
                        foreach (var nss in obj.UsedNamespaces)
                        {
                            if (!namespaces.Contains(nss))
                            {
                                namespaces.Add(nss);
                            }
                        }
                    }
                    string filename          = c.Key + ".cs";
                    var    ns                = c.Key;
                    ExtendedStringBuilder sb = new ExtendedStringBuilder();
                    sb.SetNamespaceIndent();
                    foreach (var s in namespaces)
                    {
                        sb.AppendLine($"using {s};");
                    }
                    sb.AppendLine("");
                    sb.AppendLine("");
                    sb.AppendLine($"namespace {ns}");
                    sb.AppendLine("{");
                    sb.SetNamespaceIndent();
                    foreach (var obj in c.Value)
                    {
                        obj.BuildClass(sb);
                    }
                    sb.SetNamespaceIndent();
                    sb.AppendLine("}");
                    File.WriteAllText(Path.Combine(destDir, filename), sb.ToString());
                }
            }
        }
コード例 #2
0
ファイル: SDKClass.cs プロジェクト: blockspacer/ConanExiles
 public void BuildClass(ExtendedStringBuilder sb)
 {
     sb.SetClassIndent();
     WriteSummary(sb);
     if (string.IsNullOrEmpty(SuperClass))
     {
         SuperClass = "MemoryObject";
     }
     sb.AppendLine($"public class {ClassName}:{SuperClass}");
     sb.AppendLine("{");
     sb.SetPropertyIndent();
     sb.AppendLine($"public override int ObjectSize => {ClassSize};");
     foreach (var p in Properties.Values.ToArray())
     {
         p.BuildProperty(sb);
         sb.AppendLine("");
     }
     sb.SetClassIndent();
     sb.AppendLine("}");
     sb.SetNamespaceIndent();
     sb.AppendLine("");
     sb.AppendLine("");
 }