|
|
@ -592,27 +592,17 @@ namespace CppSharp.Generators.CSharp |
|
|
|
Setter |
|
|
|
Setter |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private string GetPropertyLocation<T>(T decl, PropertyMethodKind kind, |
|
|
|
private string GetVariableLocation(Variable @var) |
|
|
|
out bool isRefClass) where T : Declaration, ITypedDecl |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
isRefClass = false; |
|
|
|
string symbol; |
|
|
|
|
|
|
|
if (!FindMangledDeclSymbol(@var, out symbol)) |
|
|
|
if (decl is Variable) |
|
|
|
return string.Empty; |
|
|
|
{ |
|
|
|
|
|
|
|
var @var = decl as Variable; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string symbol; |
|
|
|
|
|
|
|
if (!FindMangledDeclSymbol(@var, out symbol)) |
|
|
|
|
|
|
|
return string.Empty; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NativeLibrary library; |
|
|
|
|
|
|
|
Driver.LibrarySymbols.FindLibraryBySymbol(symbol, out library); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return string.Format("CppSharp.SymbolResolver.ResolveSymbol(\"{0}\", \"{1}\")", |
|
|
|
NativeLibrary library; |
|
|
|
Path.GetFileNameWithoutExtension(library.FileName), symbol); |
|
|
|
Driver.LibrarySymbols.FindLibraryBySymbol(symbol, out library); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
throw new NotSupportedException(); |
|
|
|
return string.Format("CppSharp.SymbolResolver.ResolveSymbol(\"{0}\", \"{1}\")", |
|
|
|
|
|
|
|
Path.GetFileNameWithoutExtension(library.FileName), symbol); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void GeneratePropertySetter<T>(T decl, Class @class) |
|
|
|
private void GeneratePropertySetter<T>(T decl, Class @class) |
|
|
@ -699,17 +689,24 @@ namespace CppSharp.Generators.CSharp |
|
|
|
|
|
|
|
|
|
|
|
WriteLine("return {0};", marshal.Context.Return); |
|
|
|
WriteLine("return {0};", marshal.Context.Return); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else if (decl is Variable) |
|
|
|
{ |
|
|
|
{ |
|
|
|
bool isRefClass; |
|
|
|
var @var = decl as Variable; |
|
|
|
@return = GetPropertyLocation(decl, PropertyMethodKind.Getter, |
|
|
|
var location = GetVariableLocation(@var); |
|
|
|
out isRefClass); |
|
|
|
|
|
|
|
|
|
|
|
var typePrinter = TypePrinter as CSharpTypePrinter; |
|
|
|
|
|
|
|
typePrinter.PushContext(CSharpTypePrinterContextKind.Native); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WriteLine("var {0} = ({1}*){2};", Helpers.GeneratedIdentifier("ptr"), |
|
|
|
|
|
|
|
@var.Type, location); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typePrinter.PopContext(); |
|
|
|
|
|
|
|
|
|
|
|
var ctx = new CSharpMarshalContext(Driver) |
|
|
|
var ctx = new CSharpMarshalContext(Driver) |
|
|
|
{ |
|
|
|
{ |
|
|
|
ArgName = decl.Name, |
|
|
|
ArgName = decl.Name, |
|
|
|
ReturnVarName = @return, |
|
|
|
ReturnVarName = "*" + Helpers.GeneratedIdentifier("ptr"), |
|
|
|
ReturnType = decl.QualifiedType |
|
|
|
ReturnType = new QualifiedType(var.Type) |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
var marshal = new CSharpMarshalNativeToManagedPrinter(ctx); |
|
|
|
var marshal = new CSharpMarshalNativeToManagedPrinter(ctx); |
|
|
|