Browse Source

Renamed HiddenStructureReturn to IndirectReturnType as it is a lot more clear.

pull/47/merge
triton 13 years ago
parent
commit
a964df9069
  1. 10
      src/AST/Function.cs
  2. 16
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs
  3. 2
      src/Generator/Generators/CSharp/CSharpTypePrinter.cs
  4. 2
      src/Generator/Passes/CheckDuplicatedNamesPass.cs

10
src/AST/Function.cs

@ -24,7 +24,7 @@ namespace CppSharp.AST
public enum ParameterKind public enum ParameterKind
{ {
Regular, Regular,
HiddenStructureReturn, IndirectReturnType,
OperatorParameter OperatorParameter
} }
@ -103,12 +103,12 @@ namespace CppSharp.AST
get { return CallingConvention == CallingConvention.C; } get { return CallingConvention == CallingConvention.C; }
} }
public bool HasHiddenStructParameter public bool HasIndirectReturnTypeParameter
{ {
get get
{ {
return Parameters.Any(param => return Parameters.Any(param =>
param.Kind == ParameterKind.HiddenStructureReturn); param.Kind == ParameterKind.IndirectReturnType);
} }
} }
@ -116,11 +116,11 @@ namespace CppSharp.AST
{ {
get get
{ {
if (!HasHiddenStructParameter) if (!HasIndirectReturnTypeParameter)
return ReturnType; return ReturnType;
var hiddenParam = Parameters.Single(param => var hiddenParam = Parameters.Single(param =>
param.Kind == ParameterKind.HiddenStructureReturn); param.Kind == ParameterKind.IndirectReturnType);
return hiddenParam.QualifiedType; return hiddenParam.QualifiedType;
} }
} }

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

@ -1057,7 +1057,7 @@ namespace CppSharp.Generators.CSharp
if (param.Ignore) if (param.Ignore)
continue; continue;
if (param.Kind == ParameterKind.HiddenStructureReturn) if (param.Kind == ParameterKind.IndirectReturnType)
continue; continue;
var ctx = new CSharpMarshalContext(Driver) var ctx = new CSharpMarshalContext(Driver)
@ -1076,7 +1076,7 @@ namespace CppSharp.Generators.CSharp
} }
var hasReturn = !method.ReturnType.Type.IsPrimitiveType(PrimitiveType.Void) var hasReturn = !method.ReturnType.Type.IsPrimitiveType(PrimitiveType.Void)
&& !method.HasHiddenStructParameter; && !method.HasIndirectReturnTypeParameter;
if (hasReturn) if (hasReturn)
Write("var _ret = "); Write("var _ret = ");
@ -1624,10 +1624,10 @@ namespace CppSharp.Generators.CSharp
var needsFixedThis = needsInstance && isValueType; var needsFixedThis = needsInstance && isValueType;
var @params = GenerateFunctionParamsMarshal(parameters, function); var @params = GenerateFunctionParamsMarshal(parameters, function);
if (function.HasHiddenStructParameter) if (function.HasIndirectReturnTypeParameter)
{ {
var hiddenParam = function.Parameters[0]; var hiddenParam = function.Parameters[0];
if (hiddenParam.Kind != ParameterKind.HiddenStructureReturn) if (hiddenParam.Kind != ParameterKind.IndirectReturnType)
throw new NotSupportedException("Expected hidden structure parameter kind"); throw new NotSupportedException("Expected hidden structure parameter kind");
Class retClass = null; Class retClass = null;
@ -1647,7 +1647,7 @@ namespace CppSharp.Generators.CSharp
names.Add(name); names.Add(name);
} }
if (function.HasHiddenStructParameter) if (function.HasIndirectReturnTypeParameter)
{ {
var name = string.Format("new IntPtr(&{0})", GeneratedIdentifier("ret")); var name = string.Format("new IntPtr(&{0})", GeneratedIdentifier("ret"));
names.Insert(0, name); names.Insert(0, name);
@ -1667,7 +1667,7 @@ namespace CppSharp.Generators.CSharp
WriteLine("var {0} = ToInternal();", Generator.GeneratedIdentifier("instance")); WriteLine("var {0} = ToInternal();", Generator.GeneratedIdentifier("instance"));
} }
if (needsReturn && !function.HasHiddenStructParameter) if (needsReturn && !function.HasIndirectReturnTypeParameter)
Write("var {0} = ", GeneratedIdentifier("ret")); Write("var {0} = ", GeneratedIdentifier("ret"));
WriteLine("{0}({1});", functionName, string.Join(", ", names)); WriteLine("{0}({1});", functionName, string.Join(", ", names));
@ -1776,7 +1776,7 @@ namespace CppSharp.Generators.CSharp
var paramIndex = 0; var paramIndex = 0;
foreach (var param in @params) foreach (var param in @params)
{ {
if (param.Kind == ParameterKind.HiddenStructureReturn) if (param.Kind == ParameterKind.IndirectReturnType)
continue; continue;
marshals.Add(GenerateFunctionParamMarshal(param, paramIndex, function)); marshals.Add(GenerateFunctionParamMarshal(param, paramIndex, function));
@ -1853,7 +1853,7 @@ namespace CppSharp.Generators.CSharp
{ {
var param = function.Parameters[i]; var param = function.Parameters[i];
if (param.Kind == ParameterKind.HiddenStructureReturn) if (param.Kind == ParameterKind.IndirectReturnType)
continue; continue;
@params.Add(string.Format("{0}{1} {2}", GetParameterUsage(param.Usage), @params.Add(string.Format("{0}{1} {2}", GetParameterUsage(param.Usage),

2
src/Generator/Generators/CSharp/CSharpTypePrinter.cs

@ -361,7 +361,7 @@ namespace CppSharp.Generators.CSharp
{ {
var paramType = parameter.Type; var paramType = parameter.Type;
if (parameter.Kind == ParameterKind.HiddenStructureReturn) if (parameter.Kind == ParameterKind.IndirectReturnType)
return "global::System.IntPtr"; return "global::System.IntPtr";
return paramType.Visit(this); return paramType.Visit(this);

2
src/Generator/Passes/CheckDuplicatedNamesPass.cs

@ -39,7 +39,7 @@ namespace CppSharp.Passes
private bool UpdateName(Method method) private bool UpdateName(Method method)
{ {
var @params = method.Parameters.Where(p => p.Kind != ParameterKind.HiddenStructureReturn) var @params = method.Parameters.Where(p => p.Kind != ParameterKind.IndirectReturnType)
.Select(p => p.QualifiedType.ToString()); .Select(p => p.QualifiedType.ToString());
var signature = string.Format("{0}({1})", Name,string.Join( ", ", @params)); var signature = string.Format("{0}({1})", Name,string.Join( ", ", @params));

Loading…
Cancel
Save