public static string ConvertMethod(string input, out string name)
{
input = StripUnnecessarySymbols(input);
var splitBySpace = input.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
var returnValue = splitBySpace.First();
name = splitBySpace[1];
var args = new List<string>();
if (splitBySpace.Length > 2) {
for (var i = 2; i < splitBySpace.Length; i++) {
var argumentType = ConvertType(splitBySpace[i++]);
var argument = ConvertType(splitBySpace[i], true);
args.Add(argumentType + " " + AdjustArgumentName(argument));
}
}
using (var sw = new StringWriter()) {
sw.Write("public static extern ");
sw.Write(ConvertType(returnValue));
sw.Write(" ");
sw.Write(ConvertTypeName(name));
sw.Write("(");
foreach (var arg in args) {
sw.Write(arg);
sw.Write(", ");
}
if (args.Count > 0) {
sw.GetStringBuilder().Remove(sw.GetStringBuilder().Length - 2, 2);
}
sw.Write(")");
sw.Write(";");
return sw.ToString();
}
}