PIPS
|
Go to the source code of this file.
Macros | |
#define | _GL_EXTERN_C extern |
C++ compatible function declaration macros. More... | |
#define | _GL_FUNCDECL_RPL(func, rettype, parameters_and_attributes) _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) |
_GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); declares a replacement function, named rpl_func, with the given prototype, consisting of return type, parameters, and attributes. More... | |
#define | _GL_FUNCDECL_RPL_1(rpl_func, rettype, parameters_and_attributes) _GL_EXTERN_C rettype rpl_func parameters_and_attributes |
#define | _GL_FUNCDECL_SYS(func, rettype, parameters_and_attributes) _GL_EXTERN_C rettype func parameters_and_attributes |
_GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); declares the system function, named func, with the given prototype, consisting of return type, parameters, and attributes. More... | |
#define | _GL_CXXALIAS_RPL(func, rettype, parameters) _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) |
_GL_CXXALIAS_RPL (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to rpl_func, if GNULIB_NAMESPACE is defined. More... | |
#define | _GL_CXXALIAS_RPL_1(func, rpl_func, rettype, parameters) _GL_EXTERN_C int _gl_cxxalias_dummy |
#define | _GL_CXXALIAS_RPL_CAST_1(func, rpl_func, rettype, parameters) _GL_EXTERN_C int _gl_cxxalias_dummy |
_GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); except that the C function rpl_func may have a slightly different declaration. More... | |
#define | _GL_CXXALIAS_SYS(func, rettype, parameters) _GL_EXTERN_C int _gl_cxxalias_dummy |
_GL_CXXALIAS_SYS (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to the system provided function func, if GNULIB_NAMESPACE is defined. More... | |
#define | _GL_CXXALIAS_SYS_CAST(func, rettype, parameters) _GL_EXTERN_C int _gl_cxxalias_dummy |
_GL_CXXALIAS_SYS_CAST (func, rettype, parameters); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function func may have a slightly different declaration. More... | |
#define | _GL_CXXALIAS_SYS_CAST2(func, rettype, parameters, rettype2, parameters2) _GL_EXTERN_C int _gl_cxxalias_dummy |
_GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function is picked among a set of overloaded functions, namely the one with rettype2 and parameters2. More... | |
#define | _GL_CXXALIASWARN(func) _GL_EXTERN_C int _gl_cxxalias_dummy |
_GL_CXXALIASWARN (func); causes a warning to be emitted when ::func is used but not when GNULIB_NAMESPACE::func is used. More... | |
#define | _GL_CXXALIASWARN1(func, rettype, parameters_and_attributes) _GL_EXTERN_C int _gl_cxxalias_dummy |
_GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); causes a warning to be emitted when the given overloaded variant of ::func is used but not when GNULIB_NAMESPACE::func is used. More... | |
#define _GL_CXXALIAS_RPL | ( | func, | |
rettype, | |||
parameters | |||
) | _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) |
#define _GL_CXXALIAS_RPL_1 | ( | func, | |
rpl_func, | |||
rettype, | |||
parameters | |||
) | _GL_EXTERN_C int _gl_cxxalias_dummy |
#define _GL_CXXALIAS_RPL_CAST_1 | ( | func, | |
rpl_func, | |||
rettype, | |||
parameters | |||
) | _GL_EXTERN_C int _gl_cxxalias_dummy |
_GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); except that the C function rpl_func may have a slightly different declaration.
A cast is used to silence the "invalid conversion" error that would otherwise occur.
#define _GL_CXXALIAS_SYS | ( | func, | |
rettype, | |||
parameters | |||
) | _GL_EXTERN_C int _gl_cxxalias_dummy |
_GL_CXXALIAS_SYS (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to the system provided function func, if GNULIB_NAMESPACE is defined.
Example: _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
#define _GL_CXXALIAS_SYS_CAST | ( | func, | |
rettype, | |||
parameters | |||
) | _GL_EXTERN_C int _gl_cxxalias_dummy |
_GL_CXXALIAS_SYS_CAST (func, rettype, parameters); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function func may have a slightly different declaration.
A cast is used to silence the "invalid conversion" error that would otherwise occur.
#define _GL_CXXALIAS_SYS_CAST2 | ( | func, | |
rettype, | |||
parameters, | |||
rettype2, | |||
parameters2 | |||
) | _GL_EXTERN_C int _gl_cxxalias_dummy |
_GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function is picked among a set of overloaded functions, namely the one with rettype2 and parameters2.
Two consecutive casts are used to silence the "cannot find a match" and "invalid conversion" errors that would otherwise occur.
#define _GL_CXXALIASWARN | ( | func | ) | _GL_EXTERN_C int _gl_cxxalias_dummy |
#define _GL_CXXALIASWARN1 | ( | func, | |
rettype, | |||
parameters_and_attributes | |||
) | _GL_EXTERN_C int _gl_cxxalias_dummy |
#define _GL_EXTERN_C extern |
C++ compatible function declaration macros.
Copyright (C) 2010-2011 Free Software Foundation, Inc.
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 the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
The three most frequent use cases of these macros are:
For providing a substitute for a function that is missing on some platforms, but is declared and works fine on the platforms on which it exists:
if @GNULIB_FOO@
_GL_FUNCDECL_SYS (foo, ...);
_GL_CXXALIAS_SYS (foo, ...); _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif
For providing a replacement for a function that exists on all platforms, but is broken/insufficient and needs to be replaced on some platforms:
if @GNULIB_FOO@
_GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...);
_GL_CXXALIAS_SYS (foo, ...);
_GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif
For providing a replacement for a function that exists on some platforms but is broken/insufficient and needs to be replaced on some of them and is additionally either missing or undeclared on some other platforms:
if @GNULIB_FOO@
_GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...);
_GL_FUNCDECL_SYS (foo, ...);
_GL_CXXALIAS_SYS (foo, ...);
_GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif _GL_EXTERN_C declaration; performs the declaration with C linkage.
#define _GL_FUNCDECL_RPL | ( | func, | |
rettype, | |||
parameters_and_attributes | |||
) | _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) |
_GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); declares a replacement function, named rpl_func, with the given prototype, consisting of return type, parameters, and attributes.
Example: _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1)));
#define _GL_FUNCDECL_RPL_1 | ( | rpl_func, | |
rettype, | |||
parameters_and_attributes | |||
) | _GL_EXTERN_C rettype rpl_func parameters_and_attributes |
#define _GL_FUNCDECL_SYS | ( | func, | |
rettype, | |||
parameters_and_attributes | |||
) | _GL_EXTERN_C rettype func parameters_and_attributes |
_GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); declares the system function, named func, with the given prototype, consisting of return type, parameters, and attributes.
Example: _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1)));