Fix ring buffer example.
[pub/USBasp.git] / LUFA / Common / Common.h
index c302eac..38afb85 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2012.
+     Copyright (C) Dean Camera, 2014.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2014  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
 
   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.
        /* 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;
                         *  which may not reflect the actual machine register width on some targets (e.g. AVR8).
                         */
                        typedef MACHINE_REG_t uint_reg_t;
                         *  \attention This macro should only be used with operands that do not have side effects from being evaluated
                         *             multiple times.
                         *
                         *  \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
                         */
                         *
                         *  \return The smaller of the two input parameters
                         */
                                #define STRINGIFY_EXPANDED(x)   STRINGIFY(x)
                        #endif
 
                                #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
                        #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