public string ToCSharpCode(int padding, Virtuality virt, UmlClass inClass)
{
if (virt == CSharpUML.Virtuality.None)
{
virt = Virtuality;
}
string paddingStr = String.Concat(Enumerable.Repeat(" ", padding));
List <string> lines = new List <string> ();
lines.AddRange(Comments.CSharpComments(commentsKey, paddingStr));
string uml = paddingStr;
// public, virtual
string _keywords = Comments.GetCommentParameter(commentsKey, "keywords");
if (_keywords != null)
{
uml += _keywords.TrimAll().ToCode("", " ");
}
else if (inClass != null && inClass.type == ClassType.Interface)
{
uml += "";
}
else
{
uml += Publicity.ToCode("", " ") + virt.ToCode("", " ");
}
// return type
string _returntype = Comments.GetCommentParameter(commentsKey, "returntype");
if (_returntype != null)
{
uml += _returntype.ToCSharpType() + " ";
}
else if (IsContructor)
{
uml += "";
}
else if (returntype.Length > 0)
{
uml += returntype.ToCSharpType().ToCode("", " ");
}
else
{
uml += "void ";
}
// name
string _name = Comments.GetCommentParameter(commentsKey, "name");
if (_name != null)
{
uml += _name;
}
else
{
uml += name;
}
// index operator [ ]
if (name == "this")
{
uml += " [" + string.Join(", ", parameters) + "]";
lines.Add(uml);
lines.Add(paddingStr + "{");
lines.Add(paddingStr + " " + "get { throw new System.NotImplementedException(); }");
lines.Add(paddingStr + " " + "set { throw new System.NotImplementedException(); }");
lines.Add(paddingStr + "}");
}
// normal method
else
{
uml += " (";
string _parameters = Comments.GetCommentParameter(commentsKey, "parameters");
if (_parameters != null)
{
uml += _parameters;
}
else
{
for (int i = 0; i < parameters.Length; ++i)
{
if (i > 0)
{
uml += ", ";
}
if (parameters [i].Contains(" "))
{
String[] p = parameters [i].Split(new char[] { ' ' }, 2);
uml += p [0].ToCSharpType() + " " + p [1];
}
else
{
uml += parameters [i].ToCSharpType() + " " + parameters [i].ToLower();
}
}
}
uml += ")";
if (uml.Contains("ModelFactory") && uml.Contains("Func<"))
{
uml = paddingStr + "public ModelFactory (Func<GameScreen, GameModelInfo, GameModel> createModel)";
}
string _base = Comments.GetCommentParameter(commentsKey, "base");
if (_base != null)
{
uml += "\n" + paddingStr + " : base(" + _base.TrimAll() + ")";
}
if (inClass.type == ClassType.Interface)
{
lines.Add(uml + ";");
}
else
{
lines.Add(uml);
lines.Add(paddingStr + "{");
lines.Add(paddingStr + " " + "throw new System.NotImplementedException();");
lines.Add(paddingStr + "}");
}
}
return(string.Join("\n", lines));
}