/*******************************************************************************
*
* HEADER: cppreent.h
*
********************************************************************************
*
* DESCRIPTION: Some macros to help with ucpp reentrancy
*
********************************************************************************
*
* $Project: /Convert-Binary-C $
* $Author: mhx $
* $Date: 2006/01/01 10:38:03 +0100 $
* $Revision: 6 $
* $Source: /ctlib/cppreent.h $
*
********************************************************************************
*
* Copyright (c) 2002-2006 Marcus Holland-Moritz. All rights reserved.
* This program is free software; you can redistribute it and/or modify
* it under the same terms as Perl itself.
*
*******************************************************************************/
#ifndef _CTLIB_CPPREENT_H
#define _CTLIB_CPPREENT_H
/*===== GLOBAL INCLUDES ======================================================*/
/*===== LOCAL INCLUDES =======================================================*/
#include "util/ccattr.h"
/*===== DEFINES ==============================================================*/
#ifdef pUCPP
# undef pUCPP
#endif
#ifdef pUCPP_
# undef pUCPP_
#endif
#ifdef aUCPP
# undef aUCPP
#endif
#ifdef aUCPP_
# undef aUCPP_
#endif
#ifdef dUCPP
# undef dUCPP
#endif
#ifdef UCPP_REENTRANT
# define pUCPP struct CPP *cpp __attribute__((unused))
# define pUCPP_ pUCPP,
# define aUCPP cpp
# define aUCPP_ aUCPP,
# define dUCPP(a) pUCPP = (struct CPP *)a
/* ucpp global variables */
# define r_no_special_macros ((struct CPP *) cpp)->no_special_macros
# define r_emit_defines ((struct CPP *) cpp)->emit_defines
# define r_emit_assertions ((struct CPP *) cpp)->emit_assertions
# define r_emit_dependencies ((struct CPP *) cpp)->emit_dependencies
# define r_current_filename ((struct CPP *) cpp)->current_filename
#else /* !UCPP_REENTRANT */
# define pUCPP void
# define pUCPP_
# define aUCPP
# define aUCPP_
# define dUCPP(a) extern int CTlib___notused __attribute__((unused))
# define r_no_special_macros no_special_macros
# define r_emit_defines emit_defines
# define r_emit_assertions emit_assertions
# define r_emit_dependencies emit_dependencies
# define r_current_filename current_filename
#endif /* UCPP_REENTRANT */
/*===== TYPEDEFS =============================================================*/
struct CPP;
/*===== FUNCTION PROTOTYPES ==================================================*/
#endif