public void Process(TranslationUnit translationUnit) { var funcs = translationUnit.Functions.Where(x => !x.IsInline); if (Filter != null) { var filters = Array.ConvertAll(Filter.GetInvocationList(), filter => (FilterHandler)filter); funcs = funcs.Where(func => !filters.Any(filter => filter(func))); } foreach (var function in funcs) { var functionName = function.Name; if (!context.FunctionExportMap.TryGetValue(functionName, out FunctionExport export)) { Console.WriteLine($"Export not found. Skipping {functionName} function."); continue; } var functionDefinition = new Definitions.FunctionDefinition { Name = functionName, ReturnType = GetTypeDefinition(function.ReturnType.Type), Content = function.Comment?.BriefText, DetailedContent = function.Comment?.Text, LibraryName = export.LibraryName, IsConstLibraryName = export.IsConstLibraryName, Params = function.Parameters.Select((x, i) => GetParameter(function, x, i)).ToArray(), IsObsolete = IsObsolete(function), ObsoleteMessage = GetObsoleteMessage(function), CallingConvention = GetCallingConvention(function.CallingConvention), }; context.AddUnit(functionDefinition); } }
public ClassAndFunctionToken(Scope scope, ClassToken classToken, DotToken dotToken, FunctionCallToken funcToken, Definitions.FunctionDefinition funcDef) : base(scope) { AddToken(classToken); AddToken(dotToken); AddToken(_funcToken = funcToken); }