public void GenerateDeclaration(StreamWriter sw, InterfaceVM complement) { if (IsGetter) { string name = Name.StartsWith("Get") ? Name.Substring(3) : Name; string type = retval.IsVoid ? parms [0].CSType : retval.CSType; if (complement != null && complement.parms [0].CSType == type) { sw.WriteLine("\t\t" + type + " " + name + " { get; set; }"); } else { sw.WriteLine("\t\t" + type + " " + name + " { get; }"); if (complement != null) { sw.WriteLine("\t\t" + complement.retval.CSType + " " + complement.Name + " (" + complement.Signature + ");"); } } } else if (IsSetter) { sw.WriteLine("\t\t" + parms[0].CSType + " " + Name.Substring(3) + " { set; }"); } else { sw.WriteLine("\t\t" + retval.CSType + " " + Name + " (" + Signature + ");"); } }
void GenerateImplementorIface(StreamWriter sw) { if (IsConsumeOnly) { return; } sw.WriteLine(); sw.WriteLine("\t[GLib.GInterface (typeof (" + Name + "Adapter))]"); string access = IsInternal ? "internal" : "public"; sw.WriteLine("\t" + access + " interface " + Name + "Implementor : GLib.IWrapper {"); sw.WriteLine(); Hashtable vm_table = new Hashtable(); foreach (InterfaceVM vm in interface_vms) { vm_table [vm.Name] = vm; } foreach (InterfaceVM vm in interface_vms) { if (vm_table [vm.Name] == null) { continue; } else if (!vm.IsValid) { vm_table.Remove(vm.Name); continue; } else if (vm.IsGetter || vm.IsSetter) { string cmp_name = (vm.IsGetter ? "Set" : "Get") + vm.Name.Substring(3); InterfaceVM cmp = vm_table [cmp_name] as InterfaceVM; if (cmp != null && (cmp.IsGetter || cmp.IsSetter)) { if (vm.IsSetter) { cmp.GenerateDeclaration(sw, vm); } else { vm.GenerateDeclaration(sw, cmp); } vm_table.Remove(cmp.Name); } else { vm.GenerateDeclaration(sw, null); } vm_table.Remove(vm.Name); } else { vm.GenerateDeclaration(sw, null); vm_table.Remove(vm.Name); } } sw.WriteLine("\t}"); }
public void GenerateDeclaration (StreamWriter sw, InterfaceVM complement) { if (IsGetter) { string name = Name.StartsWith ("Get") ? Name.Substring (3) : Name; string type = retval.IsVoid ? parms [0].CSType : retval.CSType; if (complement != null && complement.parms [0].CSType == type) sw.WriteLine ("\t\t" + type + " " + name + " { get; set; }"); else { sw.WriteLine ("\t\t" + type + " " + name + " { get; }"); if (complement != null) sw.WriteLine ("\t\t" + complement.retval.CSType + " " + complement.Name + " (" + complement.Signature + ");"); } } else if (IsSetter) sw.WriteLine ("\t\t" + parms[0].CSType + " " + Name.Substring (3) + " { set; }"); else sw.WriteLine ("\t\t" + retval.CSType + " " + Name + " (" + Signature + ");"); }
VirtualMethod AddVM(XmlElement vm_elem, bool is_signal_vm, bool is_interface) { VirtualMethod vm; if (is_signal_vm) { vm = new DefaultSignalHandler(vm_elem, this); } else if (is_interface) { string target_name = vm_elem.HasAttribute("target_method") ? vm_elem.GetAttribute("target_method") : vm_elem.GetAttribute("name"); vm = new InterfaceVM(vm_elem, GetMethod(target_name), this); } else { vm = new GObjectVM(vm_elem, this); } if (vm_elem.GetAttributeAsBoolean("padding") || vm_elem.GetAttributeAsBoolean("hidden")) { hidden_vms.Add(vm); } else { if (vm is GObjectVM) { virtual_methods.Add((GObjectVM)vm); } else { interface_vms.Add((InterfaceVM)vm); } } if (vm.CName != "") { class_members.Add(vm); } return(vm); }
VirtualMethod AddVM(XmlElement vm_elem, bool is_signal_vm, bool is_interface) { VirtualMethod vm; if (is_signal_vm) { vm = new DefaultSignalHandler(vm_elem, this); } else if (is_interface) { vm = new InterfaceVM(vm_elem, methods [vm_elem.GetAttribute("name")] as Method, this); } else { vm = new GObjectVM(vm_elem, this); } if (vm_elem.GetAttribute("padding") == "true" || vm_elem.GetAttribute("hidden") == "1") { hidden_vms.Add(vm); } else { if (vm is GObjectVM) { virtual_methods.Add(vm); } else { interface_vms.Add(vm); } } if (vm.CName != "") { class_members.Add(vm); } return(vm); }
VirtualMethod AddVM(XmlElement vm_elem, bool is_signal_vm, bool is_interface) { VirtualMethod vm; if (is_signal_vm) vm = new DefaultSignalHandler (vm_elem, this); else if (is_interface) { string target_name = vm_elem.HasAttribute ("target_method") ? vm_elem.GetAttribute ("target_method") : vm_elem.GetAttribute ("name"); vm = new InterfaceVM (vm_elem, methods [target_name] as Method, this); } else vm = new GObjectVM (vm_elem, this); if (vm_elem.GetAttribute ("padding") == "true" || vm_elem.GetAttribute ("hidden") == "1") hidden_vms.Add (vm); else { if (vm is GObjectVM) virtual_methods.Add (vm); else interface_vms.Add (vm); } if (vm.CName != "") class_members.Add (vm); return vm; }
void GenerateImplementorIface(GenerationInfo gen_info) { if (IsConsumeOnly) { return; } StreamWriter sw = gen_info.Writer; sw.WriteLine(); sw.WriteLine("\t[GLib.GInterface (typeof (" + AdapterName + "))]"); string access = IsInternal ? "internal" : "public"; sw.WriteLine("\t" + access + " partial interface " + ImplementorName + " : GLib.IWrapper {"); sw.WriteLine(); var vm_table = new Dictionary <string, InterfaceVM> (); foreach (InterfaceVM vm in interface_vms) { vm_table [vm.Name] = vm; } foreach (InterfaceVM vm in interface_vms) { if (!vm_table.ContainsKey(vm.Name)) { continue; } else if (!vm.Validate(new LogWriter(QualifiedName))) { vm_table.Remove(vm.Name); continue; } else if (vm.IsGetter || vm.IsSetter) { string cmp_name = (vm.IsGetter ? "Set" : "Get") + vm.Name.Substring(3); InterfaceVM cmp = null; if (vm_table.TryGetValue(cmp_name, out cmp) && (cmp.IsGetter || cmp.IsSetter)) { if (vm.IsSetter) { cmp.GenerateDeclaration(sw, vm); } else { vm.GenerateDeclaration(sw, cmp); } vm_table.Remove(cmp.Name); } else { vm.GenerateDeclaration(sw, null); } vm_table.Remove(vm.Name); } else { vm.GenerateDeclaration(sw, null); vm_table.Remove(vm.Name); } } foreach (Property prop in Properties.Values) { sw.WriteLine("\t\t[GLib.Property (\"" + prop.CName + "\")]"); prop.GenerateDecl(sw, "\t\t"); } sw.WriteLine("\t}"); }
void GenerateImplementorIface(GenerationInfo gen_info) { if (IsConsumeOnly) { return; } StreamWriter sw = gen_info.Writer; sw.WriteLine(); sw.WriteLine("\t[GLib.GInterface (typeof (" + Name + "Adapter))]"); string access = IsInternal ? "internal" : "public"; sw.WriteLine("\t" + access + " partial interface " + Name + "Implementor : GLib.IWrapper {"); sw.WriteLine(); Hashtable vm_table = new Hashtable(); foreach (InterfaceVM vm in interface_vms) { vm_table [vm.Name] = vm; } foreach (InterfaceVM vm in interface_vms) { if (vm_table [vm.Name] == null) { continue; } else if (!vm.Validate(new LogWriter(QualifiedName))) { vm_table.Remove(vm.Name); continue; } else if (vm.IsGetter || vm.IsSetter) { string cmp_name = (vm.IsGetter ? "Set" : "Get") + vm.Name.Substring(3); InterfaceVM cmp = vm_table [cmp_name] as InterfaceVM; if (cmp != null && (cmp.IsGetter || cmp.IsSetter)) { if (vm.IsSetter) { cmp.GenerateDeclaration(sw, vm); } else { vm.GenerateDeclaration(sw, cmp); } vm_table.Remove(cmp.Name); } else { vm.GenerateDeclaration(sw, null); } vm_table.Remove(vm.Name); } else { vm.GenerateDeclaration(sw, null); vm_table.Remove(vm.Name); } } foreach (Property prop in props.Values) { sw.WriteLine("\t\t[GLib.Property (\"" + prop.CName + "\")]"); prop.GenerateDecl(sw, "\t\t"); } AppendCustom(sw, gen_info.CustomDir, Name + "Implementor"); sw.WriteLine("\t}"); }