diff --git a/src/Bridge/Library.cs b/src/Bridge/Library.cs index e7f18be4..f96b6b9b 100644 --- a/src/Bridge/Library.cs +++ b/src/Bridge/Library.cs @@ -117,5 +117,42 @@ namespace Cxxi return null; } + + /// Finds an existing function in the library modules. + public IEnumerable FindFunction(string name) + { + foreach (var module in TranslationUnits) + { + var type = module.FindFunction(name); + if (type != null) yield return type; + } + } + + + /// Finds an existing typedef in the library modules. + public IEnumerable FindTypedef(string name) + { + foreach (var module in TranslationUnits) + { + var type = module.FindTypedef(name); + if (type != null) yield return type; + } + } + + /// Finds an existing declaration by name. + public IEnumerable FindDecl(string name) where T : Declaration + { + foreach (var module in TranslationUnits) + { + if (module.FindEnum(name) as T != null) + yield return module.FindEnum(name) as T; + else if (module.FindClass(name) as T != null) + yield return module.FindClass(name) as T; + else if (module.FindFunction(name) as T != null) + yield return module.FindFunction(name) as T; + } + + yield return null; + } } } \ No newline at end of file