source: arduino-1-6-7/trunk/fuentes/arduino-ide-amd64/hardware/arduino/avr/firmwares/wifishield/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h @ 4837

Last change on this file since 4837 was 4837, checked in by daduve, 2 years ago

Adding new version

File size: 4.2 KB
Line 
1/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */
2
3/*This file is prepared for Doxygen automatic documentation generation.*/
4/*! \file *********************************************************************
5 *
6 * \brief Preprocessor token pasting utils.
7 *
8 * - Compiler:           IAR EWAVR32 and GNU GCC for AVR32
9 * - Supported devices:  All AVR32 devices can be used.
10 *
11 * \author               Atmel Corporation: http://www.atmel.com \n
12 *                       Support and FAQ: http://support.atmel.no/
13 *
14 ******************************************************************************/
15
16/* Copyright (c) 2009 Atmel Corporation. All rights reserved.
17 *
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions are met:
20 *
21 * 1. Redistributions of source code must retain the above copyright notice, this
22 * list of conditions and the following disclaimer.
23 *
24 * 2. Redistributions in binary form must reproduce the above copyright notice,
25 * this list of conditions and the following disclaimer in the documentation
26 * and/or other materials provided with the distribution.
27 *
28 * 3. The name of Atmel may not be used to endorse or promote products derived
29 * from this software without specific prior written permission.
30 *
31 * 4. This software may only be redistributed and used in connection with an Atmel
32 * AVR product.
33 *
34 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
35 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
36 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
37 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
38 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
39 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
40 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
41 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
42 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
43 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
44 *
45 */
46
47#ifndef _TPASTE_H_
48#define _TPASTE_H_
49
50
51/*! \name Token Paste
52 *
53 * Paste N preprocessing tokens together, these tokens being allowed to be \#defined.
54 *
55 * May be used only within macros with the tokens passed as arguments if the tokens are \#defined.
56 *
57 * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by
58 * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is
59 * equivalent to writing U32.
60 */
61//! @{
62#define TPASTE2( a, b)                            a##b
63#define TPASTE3( a, b, c)                         a##b##c
64#define TPASTE4( a, b, c, d)                      a##b##c##d
65#define TPASTE5( a, b, c, d, e)                   a##b##c##d##e
66#define TPASTE6( a, b, c, d, e, f)                a##b##c##d##e##f
67#define TPASTE7( a, b, c, d, e, f, g)             a##b##c##d##e##f##g
68#define TPASTE8( a, b, c, d, e, f, g, h)          a##b##c##d##e##f##g##h
69#define TPASTE9( a, b, c, d, e, f, g, h, i)       a##b##c##d##e##f##g##h##i
70#define TPASTE10(a, b, c, d, e, f, g, h, i, j)    a##b##c##d##e##f##g##h##i##j
71//! @}
72
73/*! \name Absolute Token Paste
74 *
75 * Paste N preprocessing tokens together, these tokens being allowed to be \#defined.
76 *
77 * No restriction of use if the tokens are \#defined.
78 *
79 * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined
80 * as 32 is equivalent to writing U32.
81 */
82//! @{
83#define ATPASTE2( a, b)                           TPASTE2( a, b)
84#define ATPASTE3( a, b, c)                        TPASTE3( a, b, c)
85#define ATPASTE4( a, b, c, d)                     TPASTE4( a, b, c, d)
86#define ATPASTE5( a, b, c, d, e)                  TPASTE5( a, b, c, d, e)
87#define ATPASTE6( a, b, c, d, e, f)               TPASTE6( a, b, c, d, e, f)
88#define ATPASTE7( a, b, c, d, e, f, g)            TPASTE7( a, b, c, d, e, f, g)
89#define ATPASTE8( a, b, c, d, e, f, g, h)         TPASTE8( a, b, c, d, e, f, g, h)
90#define ATPASTE9( a, b, c, d, e, f, g, h, i)      TPASTE9( a, b, c, d, e, f, g, h, i)
91#define ATPASTE10(a, b, c, d, e, f, g, h, i, j)   TPASTE10(a, b, c, d, e, f, g, h, i, j)
92//! @}
93
94
95#endif  // _TPASTE_H_
Note: See TracBrowser for help on using the repository browser.