Browse Source

Changed events parameters to be actual parameters rather than just types.

pull/1/head
triton 13 years ago
parent
commit
bed7b4d8b7
  1. 4
      src/Bridge/Event.cs
  2. 3
      src/Generator/Generators/CLI/CLIHeadersTemplate.cs
  3. 16
      src/Generator/Generators/CLI/CLISourcesTemplate.cs
  4. 15
      src/Generator/Generators/CLI/CLITextTemplate.cs
  5. 23
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs

4
src/Bridge/Event.cs

@ -6,7 +6,7 @@ namespace CppSharp
{ {
public Event() public Event()
{ {
Parameters = new List<QualifiedType>(); Parameters = new List<Parameter>();
} }
public override T Visit<T>(IDeclVisitor<T> visitor) public override T Visit<T>(IDeclVisitor<T> visitor)
@ -17,6 +17,6 @@ namespace CppSharp
public Type Type { get { return QualifiedType.Type; } } public Type Type { get { return QualifiedType.Type; } }
public QualifiedType QualifiedType { get; set; } public QualifiedType QualifiedType { get; set; }
public List<QualifiedType> Parameters; public List<Parameter> Parameters;
} }
} }

3
src/Generator/Generators/CLI/CLIHeadersTemplate.cs

@ -363,8 +363,7 @@ namespace CppSharp.Generators.CLI
var typePrinter = new CppTypePrinter(Driver.TypeDatabase); var typePrinter = new CppTypePrinter(Driver.TypeDatabase);
var @params = GetEventParameters(@event); var args = typePrinter.VisitParameters(@event.Parameters, hasNames: true);
var args = typePrinter.VisitParameters(@params, hasNames: true);
PopIndent(); PopIndent();
WriteLine("private:"); WriteLine("private:");

16
src/Generator/Generators/CLI/CLISourcesTemplate.cs

@ -331,9 +331,7 @@ namespace CppSharp.Generators.CLI
WriteStartBraceIndent(); WriteStartBraceIndent();
var typePrinter = new CppTypePrinter(Driver.TypeDatabase); var typePrinter = new CppTypePrinter(Driver.TypeDatabase);
var args = typePrinter.VisitParameters(@event.Parameters, hasNames: false);
var @params = GetEventParameters(@event);
var args = typePrinter.VisitParameters(@params, hasNames: false);
WriteLine("{0}Instance = gcnew {0}(this, &{1}::_{2}Raise);", WriteLine("{0}Instance = gcnew {0}(this, &{1}::_{2}Raise);",
delegateName, QualifiedIdentifier(@class), @event.Name); delegateName, QualifiedIdentifier(@class), @event.Name);
@ -367,16 +365,14 @@ namespace CppSharp.Generators.CLI
private void GenerateEventRaise(Event @event, Class @class) private void GenerateEventRaise(Event @event, Class @class)
{ {
var typePrinter = new CLITypePrinter(Driver); var typePrinter = new CLITypePrinter(Driver);
var args = typePrinter.VisitParameters(@event.Parameters, hasNames: true);
var @params = GetEventParameters(@event);
var args = typePrinter.VisitParameters(@params, hasNames: true);
WriteLine("void {0}::{1}::raise({2})", QualifiedIdentifier(@class), WriteLine("void {0}::{1}::raise({2})", QualifiedIdentifier(@class),
@event.Name, args); @event.Name, args);
WriteStartBraceIndent(); WriteStartBraceIndent();
var paramNames = @params.Select(param => param.Name).ToList(); var paramNames = @event.Parameters.Select(param => param.Name).ToList();
WriteLine("_{0}({1});", @event.Name, string.Join(", ", paramNames)); WriteLine("_{0}({1});", @event.Name, string.Join(", ", paramNames));
WriteCloseBraceIndent(); WriteCloseBraceIndent();
@ -385,9 +381,7 @@ namespace CppSharp.Generators.CLI
private void GenerateEventRaiseWrapper(Event @event, Class @class) private void GenerateEventRaiseWrapper(Event @event, Class @class)
{ {
var typePrinter = new CppTypePrinter(Driver.TypeDatabase); var typePrinter = new CppTypePrinter(Driver.TypeDatabase);
var args = typePrinter.VisitParameters(@event.Parameters, hasNames: true);
var @params = GetEventParameters(@event);
var args = typePrinter.VisitParameters(@params, hasNames: true);
WriteLine("void {0}::_{1}Raise({2})", QualifiedIdentifier(@class), WriteLine("void {0}::_{1}Raise({2})", QualifiedIdentifier(@class),
@event.Name, args); @event.Name, args);
@ -395,7 +389,7 @@ namespace CppSharp.Generators.CLI
WriteStartBraceIndent(); WriteStartBraceIndent();
var returns = new List<string>(); var returns = new List<string>();
foreach (var param in @params) foreach (var param in @event.Parameters)
{ {
var ctx = new MarshalContext(Driver) var ctx = new MarshalContext(Driver)
{ {

15
src/Generator/Generators/CLI/CLITextTemplate.cs

@ -119,21 +119,6 @@ namespace CppSharp.Generators.CLI
return string.Join(", ", types); return string.Join(", ", types);
} }
public static List<Parameter> GetEventParameters(Event @event)
{
var i = 0;
var @params = new List<Parameter>();
foreach (var type in @event.Parameters)
{
@params.Add(new Parameter()
{
Name = string.Format("_{0}", i++),
QualifiedType = type
});
}
return @params;
}
public abstract override string FileExtension { get; } public abstract override string FileExtension { get; }
public abstract override void Generate(); public abstract override void Generate();

23
src/Generator/Generators/CSharp/CSharpTextTemplate.cs

@ -815,21 +815,6 @@ namespace CppSharp.Generators.CSharp
#region Events #region Events
public static List<Parameter> GetEventParameters(Event @event)
{
var i = 0;
var @params = new List<Parameter>();
foreach (var type in @event.Parameters)
{
@params.Add(new Parameter()
{
Name = string.Format("{0}", GeneratedIdentifier(i++.ToString())),
QualifiedType = type
});
}
return @params;
}
private string delegateName; private string delegateName;
private string delegateInstance; private string delegateInstance;
private string delegateRaise; private string delegateRaise;
@ -837,8 +822,7 @@ namespace CppSharp.Generators.CSharp
private void GenerateEvent(Event @event) private void GenerateEvent(Event @event)
{ {
TypePrinter.PushContext(CSharpTypePrinterContextKind.Native); TypePrinter.PushContext(CSharpTypePrinterContextKind.Native);
var @params = GetEventParameters(@event); var args = TypePrinter.VisitParameters(@event.Parameters, hasNames: true);
var args = TypePrinter.VisitParameters(@params, hasNames: true);
TypePrinter.PopContext(); TypePrinter.PopContext();
delegateInstance = Helpers.GeneratedIdentifier(@event.Name); delegateInstance = Helpers.GeneratedIdentifier(@event.Name);
@ -906,15 +890,14 @@ namespace CppSharp.Generators.CSharp
private void GenerateEventRaiseWrapper(Event @event) private void GenerateEventRaiseWrapper(Event @event)
{ {
TypePrinter.PushContext(CSharpTypePrinterContextKind.Native); TypePrinter.PushContext(CSharpTypePrinterContextKind.Native);
var @params = GetEventParameters(@event); var args = TypePrinter.VisitParameters(@event.Parameters, hasNames: true);
var args = TypePrinter.VisitParameters(@params, hasNames: true);
TypePrinter.PopContext(); TypePrinter.PopContext();
WriteLine("void _{0}Raise({1})", @event.Name, args); WriteLine("void _{0}Raise({1})", @event.Name, args);
WriteStartBraceIndent(); WriteStartBraceIndent();
var returns = new List<string>(); var returns = new List<string>();
foreach (var param in @params) foreach (var param in @event.Parameters)
{ {
var ctx = new CSharpMarshalContext(Driver) var ctx = new CSharpMarshalContext(Driver)
{ {

Loading…
Cancel
Save