mirror of https://github.com/ARMmbed/mbed-os.git
MbedCRC.h: declare table specialisations
Clang emits warnings if it can see a declaration when it needs a templated variable. Add declarations for the specialisations in MbedCRC.cpp to MbedCRC.h keep it quiet. Tighten up a little by making all `_crc_table` references conditional on tables being configured on.pull/11897/head
parent
b77f6b457e
commit
04f929e85f
|
@ -479,11 +479,10 @@ private:
|
||||||
>>;
|
>>;
|
||||||
// *INDENT-ON*
|
// *INDENT-ON*
|
||||||
|
|
||||||
/* Not [MBED_CRC_TABLE_SIZE] as that could be [0], which is illegal.
|
#if MBED_CRC_TABLE_SIZE > 0
|
||||||
* We do need the declaration to always exist so that do_compute_partial<TABLE> is always well-formed,
|
/* Tables only actually defined for mode == TABLE, and certain polynomials - see below */
|
||||||
* but we never actually use it MBED_CRC_TABLE_SIZE is 0.
|
static const crc_table_t _crc_table[MBED_CRC_TABLE_SIZE];
|
||||||
*/
|
#endif
|
||||||
static const crc_table_t _crc_table[];
|
|
||||||
|
|
||||||
static uint32_t adjust_initial_value(uint32_t initial_xor, bool reflect_data)
|
static uint32_t adjust_initial_value(uint32_t initial_xor, bool reflect_data)
|
||||||
{
|
{
|
||||||
|
@ -742,6 +741,7 @@ private:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if MBED_CRC_TABLE_SIZE > 0
|
||||||
/** CRC computation using ROM tables.
|
/** CRC computation using ROM tables.
|
||||||
*
|
*
|
||||||
* @param buffer data buffer
|
* @param buffer data buffer
|
||||||
|
@ -774,6 +774,7 @@ private:
|
||||||
*crc = p_crc;
|
*crc = p_crc;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef DEVICE_CRC
|
#ifdef DEVICE_CRC
|
||||||
/** Hardware CRC computation.
|
/** Hardware CRC computation.
|
||||||
|
@ -793,6 +794,28 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if MBED_CRC_TABLE_SIZE > 0
|
||||||
|
/* Declarations of the tables we provide. (Not strictly needed, but compilers
|
||||||
|
* can warn if they see us using the template without a generic definition, so
|
||||||
|
* let it know we have provided these specialisations.)
|
||||||
|
*/
|
||||||
|
template<>
|
||||||
|
const uint8_t MbedCRC<POLY_7BIT_SD, 7, CrcMode::TABLE>::_crc_table[MBED_CRC_TABLE_SIZE];
|
||||||
|
|
||||||
|
template<>
|
||||||
|
const uint8_t MbedCRC<POLY_8BIT_CCITT, 8, CrcMode::TABLE>::_crc_table[MBED_CRC_TABLE_SIZE];
|
||||||
|
|
||||||
|
template<>
|
||||||
|
const uint16_t MbedCRC<POLY_16BIT_CCITT, 16, CrcMode::TABLE>::_crc_table[MBED_CRC_TABLE_SIZE];
|
||||||
|
|
||||||
|
template<>
|
||||||
|
const uint16_t MbedCRC<POLY_16BIT_IBM, 16, CrcMode::TABLE>::_crc_table[MBED_CRC_TABLE_SIZE];
|
||||||
|
|
||||||
|
template<>
|
||||||
|
const uint32_t MbedCRC<POLY_32BIT_ANSI, 32, CrcMode::TABLE>::_crc_table[MBED_CRC_TABLE_SIZE];
|
||||||
|
|
||||||
|
#endif // MBED_CRC_TABLE_SIZE > 0
|
||||||
|
|
||||||
} // namespace impl
|
} // namespace impl
|
||||||
|
|
||||||
#endif // !defined(DOXYGEN_ONLY)
|
#endif // !defined(DOXYGEN_ONLY)
|
||||||
|
|
Loading…
Reference in New Issue