* lib/binary-io.c, lib/eealloc.c, lib/mbfile.c, lib/mbiter.c: * lib/mbuiter.c, lib/xsize.c: New files. * lib/binary-io.h (BINARY_IO_INLINE): * lib/eealloc.h (EEALLOC_INLINE): * lib/mbfile.h (MBFILE_INLINE): * lib/mbiter.h (MBITER_INLINE): * lib/mbuiter.h (MBUITER_INLINE): * lib/xsize.h (XSIZE_INLINE): New macros. Replace all uses of 'static inline' with them. Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END. * m4/eealloc.m4 (gl_EEALLOC): * m4/mbfile.m4 (gl_MBFILE): * m4/mbiter.m4 (gl_MBITER): * m4/xsize.m4 (gl_XSIZE): Do not require AC_C_INLINE. * modules/binary-io (Files, lib_SOURCES): Add lib/binary-io.c * modules/eealloc (Files, lib_SOURCES): Add lib/eealloc.c. * modules/mbfile (Files, lib_SOURCES): Add lib/mbfile.c. * modules/mbiter (Files, lib_SOURCES): Add lib/mbiter.c. * modules/mbuiter (Files, lib_SOURCES): Add lib/mbuiter.c. * modules/xsize (Files, lib_SOURCES): Add lib/xsize.c. * modules/binary-io, modules/eealloc, modules/mbfile: * modules/mbiter, modules/mbuiter: (Depends-on): Add extern-inline. --- ChangeLog | 27 +++++++++++++++++++++++++++ lib/binary-io.c | 3 +++ lib/binary-io.h | 9 ++++++++- lib/eealloc.c | 3 +++ lib/eealloc.h | 15 +++++++++++---- lib/mbfile.c | 3 +++ lib/mbfile.h | 11 +++++++++-- lib/mbiter.c | 3 +++ lib/mbiter.h | 13 ++++++++++--- lib/mbuiter.c | 3 +++ lib/mbuiter.h | 13 ++++++++++--- lib/xsize.c | 3 +++ lib/xsize.h | 15 +++++++++++---- m4/eealloc.m4 | 3 +-- m4/mbfile.m4 | 3 +-- m4/mbiter.m4 | 3 +-- m4/xsize.m4 | 3 +-- modules/binary-io | 6 +++--- modules/eealloc | 3 +++ modules/mbfile | 5 +++-- modules/mbiter | 5 +++-- modules/mbuiter | 5 +++-- modules/xsize | 5 +++-- 23 files changed, 126 insertions(+), 36 deletions(-) create mode 100644 lib/binary-io.c create mode 100644 lib/eealloc.c create mode 100644 lib/mbfile.c create mode 100644 lib/mbiter.c create mode 100644 lib/mbuiter.c create mode 100644 lib/xsize.c
diff --git a/ChangeLog b/ChangeLog index d177653..9fefe28 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,32 @@ 2012-08-29 Paul Eggert <egg...@cs.ucla.edu> + binary-io, eealloc, mbfile, mbiter, mbutil, xsize: better 'inline' + * lib/binary-io.c, lib/eealloc.c, lib/mbfile.c, lib/mbiter.c: + * lib/mbuiter.c, lib/xsize.c: New files. + * lib/binary-io.h (BINARY_IO_INLINE): + * lib/eealloc.h (EEALLOC_INLINE): + * lib/mbfile.h (MBFILE_INLINE): + * lib/mbiter.h (MBITER_INLINE): + * lib/mbuiter.h (MBUITER_INLINE): + * lib/xsize.h (XSIZE_INLINE): + New macros. + Replace all uses of 'static inline' with them. + Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END. + * m4/eealloc.m4 (gl_EEALLOC): + * m4/mbfile.m4 (gl_MBFILE): + * m4/mbiter.m4 (gl_MBITER): + * m4/xsize.m4 (gl_XSIZE): + Do not require AC_C_INLINE. + * modules/binary-io (Files, lib_SOURCES): Add lib/binary-io.c + * modules/eealloc (Files, lib_SOURCES): Add lib/eealloc.c. + * modules/mbfile (Files, lib_SOURCES): Add lib/mbfile.c. + * modules/mbiter (Files, lib_SOURCES): Add lib/mbiter.c. + * modules/mbuiter (Files, lib_SOURCES): Add lib/mbuiter.c. + * modules/xsize (Files, lib_SOURCES): Add lib/xsize.c. + * modules/binary-io, modules/eealloc, modules/mbfile: + * modules/mbiter, modules/mbuiter: + (Depends-on): Add extern-inline. + pipe-filter-gi, pipe-filter-ii: better use of 'inline' * lib/pipe-filter-aux.c: New file. * lib/pipe-filter-aux.h (PIPE_FILTER_AUX_INLINE): New macro. diff --git a/lib/binary-io.c b/lib/binary-io.c new file mode 100644 index 0000000..8bbdb44 --- /dev/null +++ b/lib/binary-io.c @@ -0,0 +1,3 @@ +#include <config.h> +#define BINARY_IO_INLINE _GL_EXTERN_INLINE +#include "binary-io.h" diff --git a/lib/binary-io.h b/lib/binary-io.h index 71c0142..0f376e3 100644 --- a/lib/binary-io.h +++ b/lib/binary-io.h @@ -25,6 +25,11 @@ so we include it here first. */ #include <stdio.h> +_GL_INLINE_HEADER_BEGIN +#ifndef BINARY_IO_INLINE +# define BINARY_IO_INLINE _GL_INLINE +#endif + /* set_binary_mode (fd, mode) sets the binary/text I/O mode of file descriptor fd to the given mode (must be O_BINARY or O_TEXT) and returns the previous mode. */ @@ -41,7 +46,7 @@ /* On reasonable systems, binary I/O is the only choice. */ /* Use a function rather than a macro, to avoid gcc warnings "warning: statement with no effect". */ -static inline int +BINARY_IO_INLINE int set_binary_mode (int fd, int mode) { (void) fd; @@ -62,4 +67,6 @@ set_binary_mode (int fd, int mode) # define SET_BINARY(fd) ((void) set_binary_mode (fd, O_BINARY)) #endif +_GL_INLINE_HEADER_END + #endif /* _BINARY_H */ diff --git a/lib/eealloc.c b/lib/eealloc.c new file mode 100644 index 0000000..d56637b --- /dev/null +++ b/lib/eealloc.c @@ -0,0 +1,3 @@ +#include <config.h> +#define EEALLOC_INLINE _GL_EXTERN_INLINE +#include "eealloc.h" diff --git a/lib/eealloc.h b/lib/eealloc.h index 17d4af3..913ee98 100644 --- a/lib/eealloc.h +++ b/lib/eealloc.h @@ -31,18 +31,23 @@ #include <stdlib.h> +_GL_INLINE_HEADER_BEGIN +#ifndef EEALLOC_INLINE +# define EEALLOC_INLINE _GL_INLINE +#endif + #if MALLOC_0_IS_NONNULL # define eemalloc malloc #else # if __GNUC__ >= 3 -static inline void *eemalloc (size_t n) +EEALLOC_INLINE void *eemalloc (size_t n) __attribute__ ((__malloc__)) # if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) __attribute__ ((__alloc_size__ (1))) # endif ; # endif -static inline void * +EEALLOC_INLINE void * eemalloc (size_t n) { /* If n is zero, allocate a 1-byte block. */ @@ -56,10 +61,10 @@ eemalloc (size_t n) # define eerealloc realloc #else # if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) -static inline void *eerealloc (void *p, size_t n) +EEALLOC_INLINE void *eerealloc (void *p, size_t n) __attribute__ ((__alloc_size__ (2))); # endif -static inline void * +EEALLOC_INLINE void * eerealloc (void *p, size_t n) { /* If n is zero, allocate or keep a 1-byte block. */ @@ -76,4 +81,6 @@ eerealloc (void *p, size_t n) eenrealloc (void *p, size_t n, size_t s) - like eerealloc (p, n * s) If this would be useful in your application. please speak up. */ +_GL_INLINE_HEADER_END + #endif /* _EEALLOC_H */ diff --git a/lib/mbfile.c b/lib/mbfile.c new file mode 100644 index 0000000..b0a468e --- /dev/null +++ b/lib/mbfile.c @@ -0,0 +1,3 @@ +#include <config.h> +#define MBFILE_INLINE _GL_EXTERN_INLINE +#include "mbfile.h" diff --git a/lib/mbfile.h b/lib/mbfile.h index 58e598b..065b856 100644 --- a/lib/mbfile.h +++ b/lib/mbfile.h @@ -62,6 +62,11 @@ #include "mbchar.h" +_GL_INLINE_HEADER_BEGIN +#ifndef MBFILE_INLINE +# define MBFILE_INLINE _GL_INLINE +#endif + struct mbfile_multi { FILE *fp; bool eof_seen; @@ -72,7 +77,7 @@ struct mbfile_multi { struct mbchar pushback; }; -static inline void +MBFILE_INLINE void mbfile_multi_getc (struct mbchar *mbc, struct mbfile_multi *mbf) { size_t bytes; @@ -215,7 +220,7 @@ eof: return; } -static inline void +MBFILE_INLINE void mbfile_multi_ungetc (const struct mbchar *mbc, struct mbfile_multi *mbf) { mb_copy (&mbf->pushback, mbc); @@ -239,4 +244,6 @@ typedef mbchar_t mbf_char_t; #define mb_iseof(mbc) ((mbc).bytes == 0) +_GL_INLINE_HEADER_BEGIN + #endif /* _MBFILE_H */ diff --git a/lib/mbiter.c b/lib/mbiter.c new file mode 100644 index 0000000..22a1ff8 --- /dev/null +++ b/lib/mbiter.c @@ -0,0 +1,3 @@ +#include <config.h> +#define MBITER_INLINE _GL_EXTERN_INLINE +#include "mbiter.h" diff --git a/lib/mbiter.h b/lib/mbiter.h index 5419a67..6e1df83 100644 --- a/lib/mbiter.h +++ b/lib/mbiter.h @@ -97,6 +97,11 @@ #include "mbchar.h" +_GL_INLINE_HEADER_BEGIN +#ifndef MBITER_INLINE +# define MBITER_INLINE _GL_INLINE +#endif + struct mbiter_multi { const char *limit; /* pointer to end of string */ @@ -112,7 +117,7 @@ struct mbiter_multi */ }; -static inline void +MBITER_INLINE void mbiter_multi_next (struct mbiter_multi *iter) { if (iter->next_done) @@ -172,14 +177,14 @@ mbiter_multi_next (struct mbiter_multi *iter) iter->next_done = true; } -static inline void +MBITER_INLINE void mbiter_multi_reloc (struct mbiter_multi *iter, ptrdiff_t ptrdiff) { iter->cur.ptr += ptrdiff; iter->limit += ptrdiff; } -static inline void +MBITER_INLINE void mbiter_multi_copy (struct mbiter_multi *new_iter, const struct mbiter_multi *old_iter) { new_iter->limit = old_iter->limit; @@ -212,4 +217,6 @@ typedef struct mbiter_multi mbi_iterator_t; /* Copying an iterator. */ #define mbi_copy mbiter_multi_copy +_GL_INLINE_HEADER_END + #endif /* _MBITER_H */ diff --git a/lib/mbuiter.c b/lib/mbuiter.c new file mode 100644 index 0000000..9167580 --- /dev/null +++ b/lib/mbuiter.c @@ -0,0 +1,3 @@ +#include <config.h> +#define MBUITER_INLINE _GL_EXTERN_INLINE +#include "mbuiter.h" diff --git a/lib/mbuiter.h b/lib/mbuiter.h index 44b6173..6194d9d 100644 --- a/lib/mbuiter.h +++ b/lib/mbuiter.h @@ -106,6 +106,11 @@ #include "mbchar.h" #include "strnlen1.h" +_GL_INLINE_HEADER_BEGIN +#ifndef MBUITER_INLINE +# define MBUITER_INLINE _GL_INLINE +#endif + struct mbuiter_multi { bool in_shift; /* true if next byte may not be interpreted as ASCII */ @@ -120,7 +125,7 @@ struct mbuiter_multi */ }; -static inline void +MBUITER_INLINE void mbuiter_multi_next (struct mbuiter_multi *iter) { if (iter->next_done) @@ -181,13 +186,13 @@ mbuiter_multi_next (struct mbuiter_multi *iter) iter->next_done = true; } -static inline void +MBUITER_INLINE void mbuiter_multi_reloc (struct mbuiter_multi *iter, ptrdiff_t ptrdiff) { iter->cur.ptr += ptrdiff; } -static inline void +MBUITER_INLINE void mbuiter_multi_copy (struct mbuiter_multi *new_iter, const struct mbuiter_multi *old_iter) { if ((new_iter->in_shift = old_iter->in_shift)) @@ -219,4 +224,6 @@ typedef struct mbuiter_multi mbui_iterator_t; /* Copying an iterator. */ #define mbui_copy mbuiter_multi_copy +_GL_INLINE_HEADER_END + #endif /* _MBUITER_H */ diff --git a/lib/xsize.c b/lib/xsize.c new file mode 100644 index 0000000..4b4914c --- /dev/null +++ b/lib/xsize.c @@ -0,0 +1,3 @@ +#include <config.h> +#define XSIZE_INLINE _GL_EXTERN_INLINE +#include "xsize.h" diff --git a/lib/xsize.h b/lib/xsize.h index fdac109..b2b6108 100644 --- a/lib/xsize.h +++ b/lib/xsize.h @@ -27,6 +27,11 @@ # include <stdint.h> #endif +_GL_INLINE_HEADER_BEGIN +#ifndef XSIZE_INLINE +# define XSIZE_INLINE _GL_INLINE +#endif + /* The size of memory objects is often computed through expressions of type size_t. Example: void* p = malloc (header_size + n * element_size). @@ -48,7 +53,7 @@ ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX) /* Sum of two sizes, with overflow check. */ -static inline size_t +XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif @@ -59,7 +64,7 @@ xsum (size_t size1, size_t size2) } /* Sum of three sizes, with overflow check. */ -static inline size_t +XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif @@ -69,7 +74,7 @@ xsum3 (size_t size1, size_t size2, size_t size3) } /* Sum of four sizes, with overflow check. */ -static inline size_t +XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif @@ -79,7 +84,7 @@ xsum4 (size_t size1, size_t size2, size_t size3, size_t size4) } /* Maximum of two sizes, with overflow check. */ -static inline size_t +XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif @@ -104,4 +109,6 @@ xmax (size_t size1, size_t size2) #define size_in_bounds_p(SIZE) \ ((SIZE) != SIZE_MAX) +_GL_INLINE_HEADER_END + #endif /* _XSIZE_H */ diff --git a/m4/eealloc.m4 b/m4/eealloc.m4 index 75f17e2..9e5df45 100644 --- a/m4/eealloc.m4 +++ b/m4/eealloc.m4 @@ -1,4 +1,4 @@ -# eealloc.m4 serial 2 +# eealloc.m4 serial 3 dnl Copyright (C) 2003, 2009-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -8,7 +8,6 @@ AC_DEFUN([gl_EEALLOC], [ AC_REQUIRE([gl_EEMALLOC]) AC_REQUIRE([gl_EEREALLOC]) - AC_REQUIRE([AC_C_INLINE]) ]) AC_DEFUN([gl_EEMALLOC], diff --git a/m4/mbfile.m4 b/m4/mbfile.m4 index 5332098..cf85bc5 100644 --- a/m4/mbfile.m4 +++ b/m4/mbfile.m4 @@ -1,4 +1,4 @@ -# mbfile.m4 serial 6 +# mbfile.m4 serial 7 dnl Copyright (C) 2005, 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -9,7 +9,6 @@ dnl From Bruno Haible. AC_DEFUN([gl_MBFILE], [ - AC_REQUIRE([AC_C_INLINE]) AC_REQUIRE([AC_TYPE_MBSTATE_T]) : ]) diff --git a/m4/mbiter.m4 b/m4/mbiter.m4 index 42e05b8..29a1ef3 100644 --- a/m4/mbiter.m4 +++ b/m4/mbiter.m4 @@ -1,4 +1,4 @@ -# mbiter.m4 serial 6 +# mbiter.m4 serial 7 dnl Copyright (C) 2005, 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -9,7 +9,6 @@ dnl From Bruno Haible. AC_DEFUN([gl_MBITER], [ - AC_REQUIRE([AC_C_INLINE]) AC_REQUIRE([AC_TYPE_MBSTATE_T]) : ]) diff --git a/m4/xsize.m4 b/m4/xsize.m4 index b3b7fee..d85a5f1 100644 --- a/m4/xsize.m4 +++ b/m4/xsize.m4 @@ -1,4 +1,4 @@ -# xsize.m4 serial 4 +# xsize.m4 serial 5 dnl Copyright (C) 2003-2004, 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -8,6 +8,5 @@ AC_DEFUN([gl_XSIZE], [ dnl Prerequisites of lib/xsize.h. AC_REQUIRE([gl_SIZE_MAX]) - AC_REQUIRE([AC_C_INLINE]) AC_CHECK_HEADERS([stdint.h]) ]) diff --git a/modules/binary-io b/modules/binary-io index dd4a136..4860252 100644 --- a/modules/binary-io +++ b/modules/binary-io @@ -3,15 +3,16 @@ Binary mode I/O. Files: lib/binary-io.h +lib/binary-io.c Depends-on: +extern-inline fcntl-h configure.ac: -AC_REQUIRE([AC_C_INLINE]) Makefile.am: -lib_SOURCES += binary-io.h +lib_SOURCES += binary-io.h binary-io.c Include: "binary-io.h" @@ -21,4 +22,3 @@ LGPLv2+ Maintainer: Bruno Haible - diff --git a/modules/eealloc b/modules/eealloc index 7e18d45..95b166f 100644 --- a/modules/eealloc +++ b/modules/eealloc @@ -3,16 +3,19 @@ Memory allocation with expensive empty allocations (glibc compatible). Files: lib/eealloc.h +lib/eealloc.c m4/eealloc.m4 m4/malloc.m4 m4/realloc.m4 Depends-on: +extern-inline configure.ac: gl_EEALLOC Makefile.am: +lib_SOURCES += eealloc.c Include: <eealloc.h> diff --git a/modules/mbfile b/modules/mbfile index 0bbd032..8ed68c4 100644 --- a/modules/mbfile +++ b/modules/mbfile @@ -3,10 +3,12 @@ Multibyte character I/O. Files: lib/mbfile.h +lib/mbfile.c m4/mbfile.m4 m4/mbrtowc.m4 Depends-on: +extern-inline mbchar mbrtowc mbsinit @@ -17,7 +19,7 @@ configure.ac: gl_MBFILE Makefile.am: -lib_SOURCES += mbfile.h +lib_SOURCES += mbfile.h mbfile.c Include: "mbfile.h" @@ -27,4 +29,3 @@ LGPL Maintainer: Bruno Haible - diff --git a/modules/mbiter b/modules/mbiter index 5e51723..5425c58 100644 --- a/modules/mbiter +++ b/modules/mbiter @@ -3,10 +3,12 @@ Iterating through multibyte strings. Files: lib/mbiter.h +lib/mbiter.c m4/mbiter.m4 m4/mbrtowc.m4 Depends-on: +extern-inline mbchar mbrtowc mbsinit @@ -17,7 +19,7 @@ configure.ac: gl_MBITER Makefile.am: -lib_SOURCES += mbiter.h +lib_SOURCES += mbiter.h mbiter.c Include: "mbiter.h" @@ -27,4 +29,3 @@ LGPL Maintainer: Bruno Haible - diff --git a/modules/mbuiter b/modules/mbuiter index c729b09..c94bfdc 100644 --- a/modules/mbuiter +++ b/modules/mbuiter @@ -3,10 +3,12 @@ Iterating through multibyte strings. Files: lib/mbuiter.h +lib/mbuiter.c m4/mbiter.m4 m4/mbrtowc.m4 Depends-on: +extern-inline mbchar mbrtowc mbsinit @@ -18,7 +20,7 @@ configure.ac: gl_MBITER Makefile.am: -lib_SOURCES += mbuiter.h +lib_SOURCES += mbuiter.h mbuiter.c Include: "mbuiter.h" @@ -28,4 +30,3 @@ LGPL Maintainer: Bruno Haible - diff --git a/modules/xsize b/modules/xsize index edaf60f..50325b2 100644 --- a/modules/xsize +++ b/modules/xsize @@ -3,16 +3,18 @@ Checked size_t computations. Files: lib/xsize.h +lib/xsize.c m4/xsize.m4 Depends-on: +extern-inline size_max configure.ac: gl_XSIZE Makefile.am: -lib_SOURCES += xsize.h +lib_SOURCES += xsize.h xsize.c Include: "xsize.h" @@ -22,4 +24,3 @@ LGPLv2+ Maintainer: Bruno Haible - -- 1.7.11.4