P99
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
p99_paste.h
Go to the documentation of this file.
00001 /* This may look like nonsense, but it really is -*- mode: C -*-              */
00002 /*                                                                            */
00003 /* Except for parts copied from previous work and as explicitly stated below, */
00004 /* the authors and copyright holders for this work are as follows:            */
00005 /* (C) copyright  2010-2012 Jens Gustedt, INRIA, France                       */
00006 /* (C) copyright  2012 William Morris                                         */
00007 /*                                                                            */
00008 /* This file is free software; it is part of the P99 project.                 */
00009 /* You can redistribute it and/or modify it under the terms of the QPL as     */
00010 /* given in the file LICENSE. It is distributed without any warranty;         */
00011 /* without even the implied warranty of merchantability or fitness for a      */
00012 /* particular purpose.                                                        */
00013 /*                                                                            */
00014 #ifndef     P99_PASTE_H_
00015 # define    P99_PASTE_H_
00016 
00023 #include "p99_generated.h"
00024 
00030 /* This was inspired by BOOST's PP_CAT macro. Using such a thing avoids
00031    to define multiple levels of expansion for each macro. */
00032 #define P99_PASTE0()
00033 #define P99_PASTE1(_1) _1
00034 
00053 #define P99_CAT2(_1, _2) _1 ## _2
00054 
00074 #define P99_PASTE2(_1, _2) P99_CAT2(_1, _2)
00075 #define P99_PASTE3(_1,  _2, _3)                                \
00076   P99_PASTE2(P99_PASTE2(_1, _2), _3)
00077 #define P99_PASTE4(_1,  _2, _3, _4)                            \
00078   P99_PASTE2(P99_PASTE3(_1, _2, _3), _4)
00079 #define P99_PASTE5(_1,  _2, _3, _4, _5)                        \
00080   P99_PASTE2(P99_PASTE4(_1, _2, _3, _4), _5)
00081 #define P99_PASTE6(_1,  _2, _3, _4, _5, _6)                    \
00082   P99_PASTE2(P99_PASTE5(_1, _2, _3, _4, _5), _6)
00083 
00084 #ifndef P00_DOCUMENT_MULTIPLE_ARGUMENT
00085 #define P00_DOCUMENT_TYPE_ARGUMENT(MACRO, N) 
00086 #define P00_DOCUMENT_TYPE_IDENTIFIER_ARGUMENT(MACRO, N) 
00087 #define P00_DOCUMENT_MULTIPLE_ARGUMENT(MACRO, N) 
00088 #define P00_DOCUMENT_WARN_VLA_ARGUMENT(MACRO, N) 
00089 #define P00_DOCUMENT_IDENTIFIER_ARGUMENT(MACRO, N) 
00090 #define P00_DOCUMENT_PERMITTED_ARGUMENT(MACRO, N) 
00091 #define P00_DOCUMENT_STATEMENT_ARGUMENT(MACRO, N)  
00092 #define P00_DOCUMENT_DECLARATION_ARGUMENT(MACRO, N)
00093 #define P00_DOCUMENT_MACRO_ARGUMENT(MACRO, N) 
00094 #define P00_DOCUMENT_NUMBER_ARGUMENT(MACRO, N) 
00095 #define P00_DOCUMENT_DESIGNATOR_ARGUMENT(MACRO, N) 
00096 #endif
00097 
00103 #endif      /* !P99_PASTE_H_ */
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines