Beispiel #1
0
 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 + ");");
     }
 }
Beispiel #2
0
        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}");
        }
Beispiel #3
0
		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 + ");");
		}
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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;
        }
Beispiel #7
0
        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}");
        }
Beispiel #8
0
        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}");
        }