2012-09-22 Paul Eggert <eggert@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.
--- /dev/null
+#include <config.h>
+#define BINARY_IO_INLINE _GL_EXTERN_INLINE
+#include "binary-io.h"
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. */
/* 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;
# define SET_BINARY(fd) ((void) set_binary_mode (fd, O_BINARY))
#endif
+_GL_INLINE_HEADER_END
+
#endif /* _BINARY_H */
--- /dev/null
+#include <config.h>
+#define EEALLOC_INLINE _GL_EXTERN_INLINE
+#include "eealloc.h"
#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. */
# 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. */
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 */
--- /dev/null
+#include <config.h>
+#define MBFILE_INLINE _GL_EXTERN_INLINE
+#include "mbfile.h"
#include "mbchar.h"
+_GL_INLINE_HEADER_BEGIN
+#ifndef MBFILE_INLINE
+# define MBFILE_INLINE _GL_INLINE
+#endif
+
struct mbfile_multi {
FILE *fp;
bool eof_seen;
struct mbchar pushback;
};
-static inline void
+MBFILE_INLINE void
mbfile_multi_getc (struct mbchar *mbc, struct mbfile_multi *mbf)
{
size_t bytes;
return;
}
-static inline void
+MBFILE_INLINE void
mbfile_multi_ungetc (const struct mbchar *mbc, struct mbfile_multi *mbf)
{
mb_copy (&mbf->pushback, mbc);
#define mb_iseof(mbc) ((mbc).bytes == 0)
+_GL_INLINE_HEADER_BEGIN
+
#endif /* _MBFILE_H */
--- /dev/null
+#include <config.h>
+#define MBITER_INLINE _GL_EXTERN_INLINE
+#include "mbiter.h"
#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 */
*/
};
-static inline void
+MBITER_INLINE void
mbiter_multi_next (struct mbiter_multi *iter)
{
if (iter->next_done)
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;
/* Copying an iterator. */
#define mbi_copy mbiter_multi_copy
+_GL_INLINE_HEADER_END
+
#endif /* _MBITER_H */
--- /dev/null
+#include <config.h>
+#define MBUITER_INLINE _GL_EXTERN_INLINE
+#include "mbuiter.h"
#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 */
*/
};
-static inline void
+MBUITER_INLINE void
mbuiter_multi_next (struct mbuiter_multi *iter)
{
if (iter->next_done)
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))
/* Copying an iterator. */
#define mbui_copy mbuiter_multi_copy
+_GL_INLINE_HEADER_END
+
#endif /* _MBUITER_H */
--- /dev/null
+#include <config.h>
+#define XSIZE_INLINE _GL_EXTERN_INLINE
+#include "xsize.h"
# 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).
((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
}
/* Sum of three sizes, with overflow check. */
-static inline size_t
+XSIZE_INLINE size_t
#if __GNUC__ >= 3
__attribute__ ((__pure__))
#endif
}
/* Sum of four sizes, with overflow check. */
-static inline size_t
+XSIZE_INLINE size_t
#if __GNUC__ >= 3
__attribute__ ((__pure__))
#endif
}
/* Maximum of two sizes, with overflow check. */
-static inline size_t
+XSIZE_INLINE size_t
#if __GNUC__ >= 3
__attribute__ ((__pure__))
#endif
#define size_in_bounds_p(SIZE) \
((SIZE) != SIZE_MAX)
+_GL_INLINE_HEADER_END
+
#endif /* _XSIZE_H */
-# 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,
[
AC_REQUIRE([gl_EEMALLOC])
AC_REQUIRE([gl_EEREALLOC])
- AC_REQUIRE([AC_C_INLINE])
])
AC_DEFUN([gl_EEMALLOC],
-# 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,
AC_DEFUN([gl_MBFILE],
[
- AC_REQUIRE([AC_C_INLINE])
AC_REQUIRE([AC_TYPE_MBSTATE_T])
:
])
-# 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,
AC_DEFUN([gl_MBITER],
[
- AC_REQUIRE([AC_C_INLINE])
AC_REQUIRE([AC_TYPE_MBSTATE_T])
:
])
-# 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,
[
dnl Prerequisites of lib/xsize.h.
AC_REQUIRE([gl_SIZE_MAX])
- AC_REQUIRE([AC_C_INLINE])
AC_CHECK_HEADERS([stdint.h])
])
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"
Maintainer:
Bruno Haible
-
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>
Files:
lib/mbfile.h
+lib/mbfile.c
m4/mbfile.m4
m4/mbrtowc.m4
Depends-on:
+extern-inline
mbchar
mbrtowc
mbsinit
gl_MBFILE
Makefile.am:
-lib_SOURCES += mbfile.h
+lib_SOURCES += mbfile.h mbfile.c
Include:
"mbfile.h"
Maintainer:
Bruno Haible
-
Files:
lib/mbiter.h
+lib/mbiter.c
m4/mbiter.m4
m4/mbrtowc.m4
Depends-on:
+extern-inline
mbchar
mbrtowc
mbsinit
gl_MBITER
Makefile.am:
-lib_SOURCES += mbiter.h
+lib_SOURCES += mbiter.h mbiter.c
Include:
"mbiter.h"
Maintainer:
Bruno Haible
-
Files:
lib/mbuiter.h
+lib/mbuiter.c
m4/mbiter.m4
m4/mbrtowc.m4
Depends-on:
+extern-inline
mbchar
mbrtowc
mbsinit
gl_MBITER
Makefile.am:
-lib_SOURCES += mbuiter.h
+lib_SOURCES += mbuiter.h mbuiter.c
Include:
"mbuiter.h"
Maintainer:
Bruno Haible
-
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"
Maintainer:
Bruno Haible
-