Add support for action signals in element bindings

This commit is contained in:
Sebastian Dröge 2009-05-28 10:33:56 +02:00
parent eafb77d8bf
commit 35d77e9885

View file

@ -362,9 +362,37 @@ public class ElementGen {
} }
} }
//TODO if (ei.actions.Count > 0) {
if (ei.actions.Count > 0) foreach (SignalInfo si in ei.actions) {
throw new Exception ("No support for actions yet"); string managed_name = (si.managed_name != null) ? si.managed_name : PropToCamelCase (si.name);
string managed_return = CTypeToManagedType (si.return_type, api_doc);
writer.Write ("\t\tpublic " + managed_return + " " + managed_name + " (");
for (int i = 0; i < si.parameters.Count; i++) {
SignalParameter param = (SignalParameter) si.parameters[i];
string managed_type = CTypeToManagedType (param.type, api_doc);
if (i == 0)
writer.Write (managed_type + " " + param.name);
else
writer.Write (", " + managed_type + " " + param.name);
}
writer.WriteLine (") {");
writer.WriteLine ("\t\t\tobject[] parameters = new object[" + si.parameters.Count + "];");
for (int i = 0; i < si.parameters.Count; i++) {
SignalParameter param = (SignalParameter) si.parameters[i];
writer.WriteLine ("\t\t\tparameters[" + i + "] = " + param.name + ";");
}
writer.WriteLine ("\t\t\treturn (" + managed_return + ") Emit (\"" + si.name + "\", parameters);");
writer.WriteLine ("\t\t}\n");
}
}
if (ei.interfaces.Count > 0) { if (ei.interfaces.Count > 0) {
string path = Path.GetDirectoryName (System.Reflection.Assembly.GetCallingAssembly ().Location); string path = Path.GetDirectoryName (System.Reflection.Assembly.GetCallingAssembly ().Location);