1*1b2596b5SMatthias Ringwald /** 2*1b2596b5SMatthias Ringwald * \file 3*1b2596b5SMatthias Ringwald * 4*1b2596b5SMatthias Ringwald * \brief Preprocessor stringizing utils. 5*1b2596b5SMatthias Ringwald * 6*1b2596b5SMatthias Ringwald * Copyright (c) 2010-2015 Atmel Corporation. All rights reserved. 7*1b2596b5SMatthias Ringwald * 8*1b2596b5SMatthias Ringwald * \asf_license_start 9*1b2596b5SMatthias Ringwald * 10*1b2596b5SMatthias Ringwald * \page License 11*1b2596b5SMatthias Ringwald * 12*1b2596b5SMatthias Ringwald * Redistribution and use in source and binary forms, with or without 13*1b2596b5SMatthias Ringwald * modification, are permitted provided that the following conditions are met: 14*1b2596b5SMatthias Ringwald * 15*1b2596b5SMatthias Ringwald * 1. Redistributions of source code must retain the above copyright notice, 16*1b2596b5SMatthias Ringwald * this list of conditions and the following disclaimer. 17*1b2596b5SMatthias Ringwald * 18*1b2596b5SMatthias Ringwald * 2. Redistributions in binary form must reproduce the above copyright notice, 19*1b2596b5SMatthias Ringwald * this list of conditions and the following disclaimer in the documentation 20*1b2596b5SMatthias Ringwald * and/or other materials provided with the distribution. 21*1b2596b5SMatthias Ringwald * 22*1b2596b5SMatthias Ringwald * 3. The name of Atmel may not be used to endorse or promote products derived 23*1b2596b5SMatthias Ringwald * from this software without specific prior written permission. 24*1b2596b5SMatthias Ringwald * 25*1b2596b5SMatthias Ringwald * 4. This software may only be redistributed and used in connection with an 26*1b2596b5SMatthias Ringwald * Atmel microcontroller product. 27*1b2596b5SMatthias Ringwald * 28*1b2596b5SMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED 29*1b2596b5SMatthias Ringwald * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 30*1b2596b5SMatthias Ringwald * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE 31*1b2596b5SMatthias Ringwald * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR 32*1b2596b5SMatthias Ringwald * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 33*1b2596b5SMatthias Ringwald * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34*1b2596b5SMatthias Ringwald * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35*1b2596b5SMatthias Ringwald * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 36*1b2596b5SMatthias Ringwald * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 37*1b2596b5SMatthias Ringwald * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 38*1b2596b5SMatthias Ringwald * POSSIBILITY OF SUCH DAMAGE. 39*1b2596b5SMatthias Ringwald * 40*1b2596b5SMatthias Ringwald * \asf_license_stop 41*1b2596b5SMatthias Ringwald * 42*1b2596b5SMatthias Ringwald */ 43*1b2596b5SMatthias Ringwald /* 44*1b2596b5SMatthias Ringwald * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a> 45*1b2596b5SMatthias Ringwald */ 46*1b2596b5SMatthias Ringwald 47*1b2596b5SMatthias Ringwald #ifndef _STRINGZ_H_ 48*1b2596b5SMatthias Ringwald #define _STRINGZ_H_ 49*1b2596b5SMatthias Ringwald 50*1b2596b5SMatthias Ringwald /** 51*1b2596b5SMatthias Ringwald * \defgroup group_sam_utils_stringz Preprocessor - Stringize 52*1b2596b5SMatthias Ringwald * 53*1b2596b5SMatthias Ringwald * \ingroup group_sam_utils 54*1b2596b5SMatthias Ringwald * 55*1b2596b5SMatthias Ringwald * \{ 56*1b2596b5SMatthias Ringwald */ 57*1b2596b5SMatthias Ringwald 58*1b2596b5SMatthias Ringwald /*! \brief Stringize. 59*1b2596b5SMatthias Ringwald * 60*1b2596b5SMatthias Ringwald * Stringize a preprocessing token, this token being allowed to be \#defined. 61*1b2596b5SMatthias Ringwald * 62*1b2596b5SMatthias Ringwald * May be used only within macros with the token passed as an argument if the token is \#defined. 63*1b2596b5SMatthias Ringwald * 64*1b2596b5SMatthias Ringwald * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN) 65*1b2596b5SMatthias Ringwald * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to 66*1b2596b5SMatthias Ringwald * writing "A0". 67*1b2596b5SMatthias Ringwald */ 68*1b2596b5SMatthias Ringwald #define STRINGZ(x) #x 69*1b2596b5SMatthias Ringwald 70*1b2596b5SMatthias Ringwald /*! \brief Absolute stringize. 71*1b2596b5SMatthias Ringwald * 72*1b2596b5SMatthias Ringwald * Stringize a preprocessing token, this token being allowed to be \#defined. 73*1b2596b5SMatthias Ringwald * 74*1b2596b5SMatthias Ringwald * No restriction of use if the token is \#defined. 75*1b2596b5SMatthias Ringwald * 76*1b2596b5SMatthias Ringwald * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is 77*1b2596b5SMatthias Ringwald * equivalent to writing "A0". 78*1b2596b5SMatthias Ringwald */ 79*1b2596b5SMatthias Ringwald #define ASTRINGZ(x) STRINGZ(x) 80*1b2596b5SMatthias Ringwald 81*1b2596b5SMatthias Ringwald /** 82*1b2596b5SMatthias Ringwald * \} 83*1b2596b5SMatthias Ringwald */ 84*1b2596b5SMatthias Ringwald 85*1b2596b5SMatthias Ringwald #endif // _STRINGZ_H_ 86