private void GenerateEventRaise(Event @event, Class @class) { var typePrinter = new CLITypePrinter(Context); var args = typePrinter.VisitParameters(@event.Parameters, hasNames: true); WriteLine("void {0}::{1}::raise({2})", QualifiedIdentifier(@class), @event.Name, args); WriteOpenBraceAndIndent(); var paramNames = @event.Parameters.Select(param => param.Name).ToList(); WriteLine("_{0}({1});", @event.Name, string.Join(", ", paramNames)); UnindentAndWriteCloseBrace(); }
public override void GenerateClassEvents(Class @class) { foreach (var @event in @class.Events) { if ([email protected]) { continue; } typePrinter.PushContext(TypePrinterContextKind.Native); var cppArgs = typePrinter.VisitParameters(@event.Parameters, hasNames: true); typePrinter.PopContext(); WriteLine("private:"); Indent(); var delegateName = string.Format("_{0}Delegate", @event.Name); WriteLine("delegate void {0}({1});", delegateName, cppArgs); WriteLine("{0}^ {0}Instance;", delegateName); WriteLine("void _{0}Raise({1});", @event.Name, cppArgs); WriteLine("{0} _{1};", @event.Type, @event.Name); Unindent(); WriteLine("public:"); Indent(); WriteLine("event {0} {1}", @event.Type, @event.Name); WriteOpenBraceAndIndent(); WriteLine("void add({0} evt);", @event.Type); WriteLine("void remove({0} evt);", @event.Type); var cliTypePrinter = new CLITypePrinter(Context); var cliArgs = cliTypePrinter.VisitParameters(@event.Parameters, hasNames: true); WriteLine("void raise({0});", cliArgs); UnindentAndWriteCloseBrace(); Unindent(); } }
public void GenerateClassEvents(Class @class) { foreach (var @event in @class.Events) { if ([email protected]) { continue; } var cppTypePrinter = new CppTypePrinter(); var cppArgs = cppTypePrinter.VisitParameters(@event.Parameters, hasNames: true); WriteLine("private:"); PushIndent(); var delegateName = string.Format("_{0}Delegate", @event.Name); WriteLine("delegate void {0}({1});", delegateName, cppArgs); WriteLine("{0}^ {0}Instance;", delegateName); WriteLine("void _{0}Raise({1});", @event.Name, cppArgs); WriteLine("{0} _{1};", @event.Type, @event.Name); PopIndent(); WriteLine("public:"); PushIndent(); WriteLine("event {0} {1}", @event.Type, @event.Name); WriteStartBraceIndent(); WriteLine("void add({0} evt);", @event.Type); WriteLine("void remove({0} evt);", @event.Type); var cliTypePrinter = new CLITypePrinter(Context); var cliArgs = cliTypePrinter.VisitParameters(@event.Parameters, hasNames: true); WriteLine("void raise({0});", cliArgs); WriteCloseBraceIndent(); PopIndent(); } }