Example #1
0
        public void Basics()
        {
            var method = new DelegateWriter {
                Name = "MyDelegate", IsPublic = true, Type = TypeReferenceWriter.IntPtr
            };

            method.Parameters.Add(new MethodParameterWriter("test", TypeReferenceWriter.Bool));

            var sw     = new StringWriter();
            var writer = new CodeWriter(sw);

            method.Write(writer);

            var expected = "public delegate IntPtr MyDelegate (bool test);";

            Assert.AreEqual(expected, sw.ToString());
        }
Example #2
0
        void AddInterfaceEventHandler(InterfaceGen iface, CodeGenerationOptions opt, CodeGeneratorContext context)
        {
            if (!iface.IsListener)
            {
                return;
            }

            foreach (var method in iface.Methods.Where(m => m.EventName != string.Empty))
            {
                if (method.RetVal.IsVoid || method.IsEventHandlerWithHandledProperty)
                {
                    if (!method.IsSimpleEventHandler || method.IsEventHandlerWithHandledProperty)
                    {
                        var event_args_class = post_sibling_types.OfType <InterfaceEventArgsClass> ().SingleOrDefault(c => c.Name == iface.GetArgsName(method));

                        // Check if there's an existing EventArgs class to add to
                        if (event_args_class is null)
                        {
                            event_args_class = new InterfaceEventArgsClass(iface, method);
                            post_sibling_types.Add(event_args_class);
                        }

                        event_args_class.AddMembersFromMethod(iface, method, opt);
                    }
                }
                else
                {
                    var del = new DelegateWriter {
                        Name     = iface.GetEventDelegateName(method),
                        Type     = new TypeReferenceWriter(opt.GetTypeReferenceName(method.RetVal)),
                        IsPublic = true
                    };

                    SourceWriterExtensions.AddMethodParameters(del, method.Parameters, opt);

                    post_sibling_types.Add(del);
                }
            }

            post_sibling_types.Add(new InterfaceEventHandlerImplClass(iface, opt, context));
        }