PIPS
cPPdefs.h File Reference

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...
 

Macro Definition Documentation

◆ _GL_CXXALIAS_RPL

#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.

Example: _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));

Definition at line 115 of file cPPdefs.h.

◆ _GL_CXXALIAS_RPL_1

#define _GL_CXXALIAS_RPL_1 (   func,
  rpl_func,
  rettype,
  parameters 
)     _GL_EXTERN_C int _gl_cxxalias_dummy

Definition at line 125 of file cPPdefs.h.

◆ _GL_CXXALIAS_RPL_CAST_1

#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.

Definition at line 143 of file cPPdefs.h.

◆ _GL_CXXALIAS_SYS

#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, ...));

Definition at line 168 of file cPPdefs.h.

◆ _GL_CXXALIAS_SYS_CAST

#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.

Definition at line 186 of file cPPdefs.h.

◆ _GL_CXXALIAS_SYS_CAST2

#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.

Definition at line 211 of file cPPdefs.h.

◆ _GL_CXXALIASWARN

#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.

func must be defined without overloaded variants.

Definition at line 239 of file cPPdefs.h.

◆ _GL_CXXALIASWARN1

#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.


Definition at line 267 of file cPPdefs.h.

◆ _GL_EXTERN_C

#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@

if !@HAVE_FOO@

_GL_FUNCDECL_SYS (foo, ...);

endif

_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@

if @REPLACE_FOO@

if !(defined __cplusplus && defined GNULIB_NAMESPACE)

undef foo

define foo rpl_foo

endif

_GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...);

else

_GL_CXXALIAS_SYS (foo, ...);

endif

_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@

if @REPLACE_FOO@

if !(defined __cplusplus && defined GNULIB_NAMESPACE)

undef foo

define foo rpl_foo

endif

_GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...);

else

if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@

_GL_FUNCDECL_SYS (foo, ...);

endif

_GL_CXXALIAS_SYS (foo, ...);

endif

_GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif _GL_EXTERN_C declaration; performs the declaration with C linkage.

Definition at line 84 of file cPPdefs.h.

◆ _GL_FUNCDECL_RPL

#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)));

Definition at line 94 of file cPPdefs.h.

◆ _GL_FUNCDECL_RPL_1

#define _GL_FUNCDECL_RPL_1 (   rpl_func,
  rettype,
  parameters_and_attributes 
)     _GL_EXTERN_C rettype rpl_func parameters_and_attributes

Definition at line 96 of file cPPdefs.h.

◆ _GL_FUNCDECL_SYS

#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)));

Definition at line 106 of file cPPdefs.h.