/*
* This file is part of cparser.
- * Copyright (C) 2007-2008 Matthias Braun <matze@braunis.de>
+ * Copyright (C) 2007-2009 Matthias Braun <matze@braunis.de>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
intern_print_type_pre(type->return_type);
- switch (type->calling_convention) {
+ cc_kind_t cc = type->calling_convention;
+restart:
+ switch (cc) {
case CC_CDECL: fputs(" __cdecl", out); break;
case CC_STDCALL: fputs(" __stdcall", out); break;
case CC_FASTCALL: fputs(" __fastcall", out); break;
case CC_THISCALL: fputs(" __thiscall", out); break;
- case CC_DEFAULT: break;
+ case CC_DEFAULT:
+ if (default_calling_convention != CC_CDECL) {
+ /* show the default calling convention if its not cdecl */
+ cc = default_calling_convention;
+ goto restart;
+ }
+ break;
}
}
if (cc1 != cc2)
return false;
- /* can parameters be compared? */
- if (func1->unspecified_parameters || func2->unspecified_parameters)
- return true;
-
if (func1->variadic != func2->variadic)
return false;
+ /* can parameters be compared? */
+ if ((func1->unspecified_parameters && !func1->kr_style_parameters)
+ || (func2->unspecified_parameters && !func2->kr_style_parameters))
+ return true;
+
/* TODO: handling of unspecified parameters not correct yet */
/* all argument types must be compatible */