private string FuncArgsStr(CFunc func) { List<CType> args = func.Args; return args.Any() ? string.Join(", ", args.Select(a => a.Sig)) : "void"; }
public void VisitFunc(CFunc func) { string letter = object.ReferenceEquals(func.CallConv, CallConvs.Default) ? "f" : "F"; _val = " " + letter + " " + _maker.AddFunc(func) + _val; }
public CFunc TranslateFunc(IDiaSymbol sym) { CType retType = Translate(sym.type); CFunc res = new CFunc(retType, TranslateCallConv(sym.callingConvention)); IDiaEnumSymbols syms; sym.findChildren(SymTagEnum.SymTagFunctionArgType, null, 0, out syms); if (syms.count == 0) { res.Add(PrimTypes.VOID); return res; } else if (syms.count == 1) { IDiaSymbol only = syms.Item(0).type; if ((SymTagEnum)only.symTag == SymTagEnum.SymTagBaseType && (BaseTypeEnum)only.baseType == BaseTypeEnum.btNoType) { return res; } } foreach (IDiaSymbol argSym in syms) { CType argType = Translate(argSym.type); res.Add(argType); } return res; }
private string FuncArgsStr(CFunc func) { List <CType> args = func.Args; return(args.Any() ? string.Join(", ", args.Select(a => a.Sig)) : "void"); }
internal int AddFunc(CFunc func) { int curNum = ++_funcNum; XmlElement entry = MakeElem("func"); AddAttr(entry, "id", curNum); foreach (CType argType in func.Args) { XmlElement arg = MakeElem("arg"); AddTypeBasicAttrs(arg, argType, true); AddChild(entry, arg); } AddChild(_args, entry); return curNum; }
public void VisitFunc(CFunc func) { _s = MaybeParen(WithCallConv(_s, func.CallConv)) + "(" + FuncArgsStr(func) + ")"; }