X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/39aa5b577e6b01f53ed68e7851dcd982e0bb8015..feb48afbafaee0119c91204b21edf099f326578f:/src/cdecl-internal.h diff --git a/src/cdecl-internal.h b/src/cdecl-internal.h index 0d8f2e8..b586dd4 100644 --- a/src/cdecl-internal.h +++ b/src/cdecl-internal.h @@ -1,6 +1,6 @@ /* * Internal declarations for libcdecl. - * Copyright © 2021, 2023 Nick Bowler + * Copyright © 2021, 2023-2024 Nick Bowler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,6 +22,8 @@ #include #include "cdecl.h" +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + #define _(s) dgettext(PACKAGE, s) #define N_(s) s @@ -68,7 +70,7 @@ static inline void cdecl__init_i18n(void) } #endif -void cdecl__err(unsigned code, const char *fmt, const char *arg); +void cdecl__err(const char *fmt, const char *arg); void cdecl__errmsg(unsigned msg); struct cdecl_declspec *cdecl__normalize_specs(struct cdecl_declspec *specs); @@ -81,6 +83,7 @@ struct output_state { size_t cdecl__advance(struct output_state *dst, size_t amount); size_t cdecl__emit(struct output_state *dst, const char *src); +size_t cdecl__emit_uint(struct output_state *dst, uintmax_t val); size_t cdecl__strlcpy(char *dst, const char *src, size_t len); const char *cdecl__emit_specs(struct output_state *dst, @@ -114,4 +117,21 @@ struct parse_item { struct parse_item *cdecl__alloc_item(size_t s_sz); +/* + * GCC enables -finline-small-functions in most optimization modes; this works + * on a highlevel estimate of how big a function actually is and occasionally + * this produces really bad results. + * + * While old versions of GCC do not support this attribute the result seems + * to be merely a warning so hopefully we can get away with this check and + * save a configure test. + */ +#ifndef CDECL__NOINLINE +# if __GNUC__ +# define CDECL__NOINLINE __attribute__((__noinline__)) +# else +# define CDECL__NOINLINE /**/ +# endif +#endif + #endif