static private AddMacro ( MMap |
||
macros | MMap |
|
info | ||
return | void |
internal static void AddMacro(MMap<Symbol, VList<MacroInfo>> macros, MacroInfo info)
{
foreach (string name in info.Names) {
var nameS = (Symbol)name;
var cases = macros[nameS, VList<MacroInfo>.Empty];
if (!cases.Any(existing => existing.Macro == info.Macro))
macros[nameS] = cases.Add(info);
}
}
public MacroProcessorTask(MacroProcessor parent) { _parent = parent; _macros = parent.Macros.Clone(); foreach (var mi in MacroProcessor.GetMacros(this.GetType(), null, _sink, this)) { MacroProcessor.AddMacro(_macros, mi); } _macroNamespaces = new MSet <Symbol>(_macros.SelectMany(ms => ms.Value).Select(mi => mi.NamespaceSym).Where(ns => ns != null)); }