X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/aa61ee1c118e62e13e7fa4e2a4397e933322a52d..ba6d9c1a971db3c42bf0b054ebb64f72b3e3ddba:/LUFA/Common/Common.h diff --git a/LUFA/Common/Common.h b/LUFA/Common/Common.h index c302eacb0..fc699b2cd 100644 --- a/LUFA/Common/Common.h +++ b/LUFA/Common/Common.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2012. + Copyright (C) Dean Camera, 2018. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2018 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -86,7 +86,7 @@ /* Architecture specific utility includes: */ #if defined(__DOXYGEN__) /** Type define for an unsigned integer the same width as the selected architecture's machine register. - * This is distinct from the non-specific standard int data type, whose width is machine dependent but + * This is distinct from the non-specific standard int data type, whose width is machine dependant but * which may not reflect the actual machine register width on some targets (e.g. AVR8). */ typedef MACHINE_REG_t uint_reg_t; @@ -145,19 +145,11 @@ /* Public Interface - May be used in end-application: */ /* Macros: */ - /** Macro for encasing other multi-statement macros. This should be used along with an opening brace - * before the start of any multi-statement macro, so that the macros contents as a whole are treated - * as a discrete block and not as a list of separate statements which may cause problems when used as - * a block (such as inline \c if statements). - */ - #define MACROS do - - /** Macro for encasing other multi-statement macros. This should be used along with a preceding closing - * brace at the end of any multi-statement macro, so that the macros contents as a whole are treated - * as a discrete block and not as a list of separate statements which may cause problems when used as - * a block (such as inline \c if statements). - */ - #define MACROE while (0) + #if !defined(__DOXYGEN__) + // Obsolete, retained for compatibility with user code + #define MACROS do + #define MACROE while (0) + #endif /** Convenience macro to determine the larger of two values. * @@ -178,8 +170,8 @@ * \attention This macro should only be used with operands that do not have side effects from being evaluated * multiple times. * - * \param[in] x First value to compare - * \param[in] y First value to compare + * \param[in] x First value to compare. + * \param[in] y First value to compare. * * \return The smaller of the two input parameters */ @@ -207,6 +199,26 @@ #define STRINGIFY_EXPANDED(x) STRINGIFY(x) #endif + #if !defined(CONCAT) || defined(__DOXYGEN__) + /** Concatenates the given input into a single token, via the C Preprocessor. + * + * \param[in] x First item to concatenate. + * \param[in] y Second item to concatenate. + * + * \return Concatenated version of the input. + */ + #define CONCAT(x, y) x ## y + + /** CConcatenates the given input into a single token after macro expansion, via the C Preprocessor. + * + * \param[in] x First item to concatenate. + * \param[in] y Second item to concatenate. + * + * \return Concatenated version of the expanded input. + */ + #define CONCAT_EXPANDED(x, y) CONCAT(x, y) + #endif + #if !defined(ISR) || defined(__DOXYGEN__) /** Macro for the definition of interrupt service routines, so that the compiler can insert the required * prologue and epilogue code to properly manage the interrupt routine without affecting the main thread's