From ca72594c8467455514b64903098b4a055b4ce55d Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Mon, 6 Oct 2014 23:32:08 +0300 Subject: [PATCH] Extended the heuristics for obtaining function symbols. Signed-off-by: Dimitar Dobrev --- src/AST/SymbolContext.cs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/AST/SymbolContext.cs b/src/AST/SymbolContext.cs index dccbeaf1..b865322d 100644 --- a/src/AST/SymbolContext.cs +++ b/src/AST/SymbolContext.cs @@ -87,22 +87,34 @@ namespace CppSharp.AST if (FindLibraryBySymbol(symbol, out lib)) return true; + string alternativeSymbol; + // Check for C symbols with a leading underscore. - if (FindLibraryBySymbol("_" + symbol, out lib)) + alternativeSymbol = "_" + symbol; + if (FindLibraryBySymbol(alternativeSymbol, out lib)) + { + symbol = alternativeSymbol; + return true; + } + + alternativeSymbol = symbol.TrimStart('_'); + if (FindLibraryBySymbol(alternativeSymbol, out lib)) { - symbol = "_" + symbol; + symbol = alternativeSymbol; return true; } - if (FindLibraryBySymbol("_imp_" + symbol, out lib)) + alternativeSymbol = "_imp_" + symbol; + if (FindLibraryBySymbol(alternativeSymbol, out lib)) { - symbol = "_imp_" + symbol; + symbol = alternativeSymbol; return true; } + alternativeSymbol = "__imp_" + symbol; if (FindLibraryBySymbol("__imp_" + symbol, out lib)) { - symbol = "__imp_" + symbol; + symbol = alternativeSymbol; return true; }