summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2012-08-29 23:13:42 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2012-09-22 01:58:24 -0700
commit664a18513b61e82c49ed41b41edd752020b2cc42 (patch)
tree4b05fab2066fddec3997dbb07c1393a379db73e9
parent6238e1ae8d96191ee8a580a60ff5287f22f6f04d (diff)
downloadgnulib-664a18513b61e82c49ed41b41edd752020b2cc42.tar.gz
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.
-rw-r--r--ChangeLog27
-rw-r--r--lib/binary-io.c3
-rw-r--r--lib/binary-io.h9
-rw-r--r--lib/eealloc.c3
-rw-r--r--lib/eealloc.h15
-rw-r--r--lib/mbfile.c3
-rw-r--r--lib/mbfile.h11
-rw-r--r--lib/mbiter.c3
-rw-r--r--lib/mbiter.h13
-rw-r--r--lib/mbuiter.c3
-rw-r--r--lib/mbuiter.h13
-rw-r--r--lib/xsize.c3
-rw-r--r--lib/xsize.h15
-rw-r--r--m4/eealloc.m43
-rw-r--r--m4/mbfile.m43
-rw-r--r--m4/mbiter.m43
-rw-r--r--m4/xsize.m43
-rw-r--r--modules/binary-io6
-rw-r--r--modules/eealloc3
-rw-r--r--modules/mbfile5
-rw-r--r--modules/mbiter5
-rw-r--r--modules/mbuiter5
-rw-r--r--modules/xsize5
23 files changed, 126 insertions, 36 deletions
diff --git a/ChangeLog b/ChangeLog
index c77139e72c..d93a8e1679 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,32 @@
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.
diff --git a/lib/binary-io.c b/lib/binary-io.c
new file mode 100644
index 0000000000..8bbdb44d12
--- /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 71c0142984..0f376e3893 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 0000000000..d56637b7ea
--- /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 17d4af3053..913ee98d97 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 0000000000..b0a468efa6
--- /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 58e598bf16..065b85666e 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 0000000000..22a1ff8d2e
--- /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 5419a67abc..6e1df838b5 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 0000000000..9167580d0d
--- /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 44b617371b..6194d9d92d 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 0000000000..4b4914c2ca
--- /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 fdac109940..b2b610835b 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 75f17e2f10..9e5df45d31 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 5332098705..cf85bc5bde 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 42e05b820a..29a1ef36fb 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 b3b7feebfa..d85a5f10f8 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 dd4a13665b..4860252453 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 7e18d45a99..95b166f7a5 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 0bbd032473..8ed68c47cc 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 5e51723acd..5425c58087 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 c729b09ea6..c94bfdc8bb 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 edaf60f6a0..50325b276e 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
-