From 3ab20c78790e4b8b9756e0cb70c7d98322f509eb Mon Sep 17 00:00:00 2001 From: triton Date: Mon, 4 Feb 2013 23:57:38 +0000 Subject: [PATCH] Added various helpers methods to get declarations. --- src/Bridge/Library.cs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) 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