Skip to content

Commit

Permalink
Fix violation of One Definition Rule
Browse files Browse the repository at this point in the history
It might happen when an header is included in different Translation Units and linked together.

Closes #7.
  • Loading branch information
Chocobo1 committed May 19, 2024
1 parent 7997f81 commit 6d48d2a
Show file tree
Hide file tree
Showing 27 changed files with 310 additions and 179 deletions.
10 changes: 4 additions & 6 deletions src/blake1_224.h
Original file line number Diff line number Diff line change
Expand Up @@ -257,8 +257,6 @@ namespace Blake1_224_NS
};
};

constexpr uint32_t Blake1_224::cTable[16];


// helpers
template <typename T>
Expand Down Expand Up @@ -310,7 +308,7 @@ namespace Blake1_224_NS
m_h[7] = 0xbefa4fa4;
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake1_224& Blake1_224::finalize()
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake1_224& Blake1_224::finalize()
{
const uint64_t sizeCounterBits = (m_sizeCounter + (m_buffer.size() * 8));
const uint32_t sizeCounterBitsL = ror<uint32_t>(sizeCounterBits, 0);
Expand All @@ -336,7 +334,7 @@ namespace Blake1_224_NS
return (*this);
}

std::string Blake1_224::toString() const
inline std::string Blake1_224::toString() const
{
const auto digest = toArray();
std::string ret;
Expand All @@ -355,13 +353,13 @@ namespace Blake1_224_NS
return ret;
}

std::vector<Blake1_224::Byte> Blake1_224::toVector() const
inline std::vector<Blake1_224::Byte> Blake1_224::toVector() const
{
const auto digest = toArray();
return {digest.begin(), digest.end()};
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake1_224::ResultArrayType Blake1_224::toArray() const
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake1_224::ResultArrayType Blake1_224::toArray() const
{
const Span<const uint32_t> state(std::begin(m_h), (std::end(m_h) - 1));
const int dataSize = sizeof(decltype(state)::value_type);
Expand Down
10 changes: 4 additions & 6 deletions src/blake1_256.h
Original file line number Diff line number Diff line change
Expand Up @@ -257,8 +257,6 @@ namespace Blake1_256_NS
};
};

constexpr uint32_t Blake1_256::cTable[16];


// helpers
template <typename T>
Expand Down Expand Up @@ -310,7 +308,7 @@ namespace Blake1_256_NS
m_h[7] = 0x5be0cd19;
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake1_256& Blake1_256::finalize()
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake1_256& Blake1_256::finalize()
{
const uint64_t sizeCounterBits = (m_sizeCounter + (m_buffer.size() * 8));
const uint32_t sizeCounterBitsL = ror<uint32_t>(sizeCounterBits, 0);
Expand Down Expand Up @@ -338,7 +336,7 @@ namespace Blake1_256_NS
return (*this);
}

std::string Blake1_256::toString() const
inline std::string Blake1_256::toString() const
{
const auto digest = toArray();
std::string ret;
Expand All @@ -357,13 +355,13 @@ namespace Blake1_256_NS
return ret;
}

std::vector<Blake1_256::Byte> Blake1_256::toVector() const
inline std::vector<Blake1_256::Byte> Blake1_256::toVector() const
{
const auto digest = toArray();
return {digest.begin(), digest.end()};
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake1_256::ResultArrayType Blake1_256::toArray() const
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake1_256::ResultArrayType Blake1_256::toArray() const
{
const Span<const uint32_t> state(m_h);
const int dataSize = sizeof(decltype(state)::value_type);
Expand Down
10 changes: 4 additions & 6 deletions src/blake1_384.h
Original file line number Diff line number Diff line change
Expand Up @@ -320,8 +320,6 @@ namespace Blake1_384_NS
};
};

constexpr uint64_t Blake1_384::cTable[16];


// helpers
template <typename T>
Expand Down Expand Up @@ -377,7 +375,7 @@ namespace Blake1_384_NS
m_h[7] = 0x47b5481dbefa4fa4;
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake1_384& Blake1_384::finalize()
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake1_384& Blake1_384::finalize()
{
const Uint128 sizeCounterBits = (m_sizeCounter + (m_buffer.size() * 8));
const uint64_t sizeCounterBitsL = sizeCounterBits.low();
Expand All @@ -403,7 +401,7 @@ namespace Blake1_384_NS
return (*this);
}

std::string Blake1_384::toString() const
inline std::string Blake1_384::toString() const
{
const auto digest = toArray();
std::string ret;
Expand All @@ -422,13 +420,13 @@ namespace Blake1_384_NS
return ret;
}

std::vector<Blake1_384::Byte> Blake1_384::toVector() const
inline std::vector<Blake1_384::Byte> Blake1_384::toVector() const
{
const auto digest = toArray();
return {digest.begin(), digest.end()};
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake1_384::ResultArrayType Blake1_384::toArray() const
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake1_384::ResultArrayType Blake1_384::toArray() const
{
const Span<const uint64_t> state(std::begin(m_h), (std::end(m_h) - 2));
const int dataSize = sizeof(decltype(state)::value_type);
Expand Down
10 changes: 4 additions & 6 deletions src/blake1_512.h
Original file line number Diff line number Diff line change
Expand Up @@ -320,8 +320,6 @@ namespace Blake1_512_NS
};
};

constexpr uint64_t Blake1_512::cTable[16];


// helpers
template <typename T>
Expand Down Expand Up @@ -377,7 +375,7 @@ namespace Blake1_512_NS
m_h[7] = 0x5be0cd19137e2179;
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake1_512& Blake1_512::finalize()
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake1_512& Blake1_512::finalize()
{
const Uint128 sizeCounterBits = (m_sizeCounter + (m_buffer.size() * 8));
const uint64_t sizeCounterBitsL = sizeCounterBits.low();
Expand Down Expand Up @@ -405,7 +403,7 @@ namespace Blake1_512_NS
return (*this);
}

std::string Blake1_512::toString() const
inline std::string Blake1_512::toString() const
{
const auto digest = toArray();
std::string ret;
Expand All @@ -424,13 +422,13 @@ namespace Blake1_512_NS
return ret;
}

std::vector<Blake1_512::Byte> Blake1_512::toVector() const
inline std::vector<Blake1_512::Byte> Blake1_512::toVector() const
{
const auto digest = toArray();
return {digest.begin(), digest.end()};
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake1_512::ResultArrayType Blake1_512::toArray() const
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake1_512::ResultArrayType Blake1_512::toArray() const
{
const Span<const uint64_t> state(m_h);
const int dataSize = sizeof(decltype(state)::value_type);
Expand Down
8 changes: 4 additions & 4 deletions src/blake2.h
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ namespace Blake2_NS
m_h[0] ^= (0x01010000 ^ (0 << 8) ^ 64);
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake2& Blake2::finalize()
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake2& Blake2::finalize()
{
// append paddings
const int len = static_cast<int>(BLOCK_SIZE - m_buffer.size());
Expand All @@ -382,7 +382,7 @@ namespace Blake2_NS
return (*this);
}

std::string Blake2::toString() const
inline std::string Blake2::toString() const
{
const auto digest = toArray();
std::string ret;
Expand All @@ -401,13 +401,13 @@ namespace Blake2_NS
return ret;
}

std::vector<Blake2::Byte> Blake2::toVector() const
inline std::vector<Blake2::Byte> Blake2::toVector() const
{
const auto digest = toArray();
return {digest.begin(), digest.end()};
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake2::ResultArrayType Blake2::toArray() const
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake2::ResultArrayType Blake2::toArray() const
{
const Span<const uint64_t> state(m_h);
const int dataSize = sizeof(decltype(state)::value_type);
Expand Down
8 changes: 4 additions & 4 deletions src/blake2s.h
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ namespace Blake2s_NS
m_h[0] ^= (0x01010000 ^ (0 << 8) ^ 32);
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake2s& Blake2s::finalize()
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake2s& Blake2s::finalize()
{
// append paddings
const int len = static_cast<int>(BLOCK_SIZE - m_buffer.size());
Expand All @@ -316,7 +316,7 @@ namespace Blake2s_NS
return (*this);
}

std::string Blake2s::toString() const
inline std::string Blake2s::toString() const
{
const auto digest = toArray();
std::string ret;
Expand All @@ -335,13 +335,13 @@ namespace Blake2s_NS
return ret;
}

std::vector<Blake2s::Byte> Blake2s::toVector() const
inline std::vector<Blake2s::Byte> Blake2s::toVector() const
{
const auto digest = toArray();
return {digest.begin(), digest.end()};
}

CONSTEXPR_CPP17_CHOCOBO1_HASH Blake2s::ResultArrayType Blake2s::toArray() const
CONSTEXPR_CPP17_CHOCOBO1_HASH inline Blake2s::ResultArrayType Blake2s::toArray() const
{
const Span<const uint32_t> state(m_h);
const int dataSize = sizeof(decltype(state)::value_type);
Expand Down
19 changes: 13 additions & 6 deletions src/crc_32.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,15 @@ namespace Hash
#endif
#endif

#ifndef INLINE_CLASS_VARIABLE_CHOCOBO1_HASH
#if __cplusplus >= 201703L
#define INLINE_CLASS_VARIABLE_CHOCOBO1_HASH constexpr static
#define HAS_INLINE_CLASS_VARIABLE_CHOCOBO1_HASH
#else
#define INLINE_CLASS_VARIABLE_CHOCOBO1_HASH const
#endif
#endif

#if (USE_STD_SPAN_CHOCOBO1_HASH == 1)
using IndexType = std::size_t;
#else
Expand Down Expand Up @@ -133,7 +142,7 @@ namespace CRC_32_NS

uint32_t m_h = 0;

static constexpr uint32_t crc32LUT[16][256]
INLINE_CLASS_VARIABLE_CHOCOBO1_HASH uint32_t crc32LUT[16][256]
{
{
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
Expand Down Expand Up @@ -682,8 +691,6 @@ namespace CRC_32_NS
};
};

constexpr uint32_t CRC_32::crc32LUT[16][256];


// helpers
template <typename T>
Expand Down Expand Up @@ -732,7 +739,7 @@ namespace CRC_32_NS
return (*this);
}

std::string CRC_32::toString() const
inline std::string CRC_32::toString() const
{
const auto digest = toArray();
std::string ret;
Expand All @@ -751,13 +758,13 @@ namespace CRC_32_NS
return ret;
}

std::vector<CRC_32::Byte> CRC_32::toVector() const
inline std::vector<CRC_32::Byte> CRC_32::toVector() const
{
const auto digest = toArray();
return {digest.begin(), digest.end()};
}

CONSTEXPR_CPP17_CHOCOBO1_HASH CRC_32::ResultArrayType CRC_32::toArray() const
CONSTEXPR_CPP17_CHOCOBO1_HASH inline CRC_32::ResultArrayType CRC_32::toArray() const
{
const int dataSize = sizeof(m_h);

Expand Down
14 changes: 7 additions & 7 deletions src/has_160.h
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ namespace HAS160_NS
m_h[4] = 0xC3D2E1F0;
}

HAS_160& HAS_160::finalize()
inline HAS_160& HAS_160::finalize()
{
m_sizeCounter += m_buffer.size();

Expand All @@ -326,7 +326,7 @@ namespace HAS160_NS
return (*this);
}

std::string HAS_160::toString() const
inline std::string HAS_160::toString() const
{
const auto digest = toArray();
std::string ret;
Expand All @@ -345,13 +345,13 @@ namespace HAS160_NS
return ret;
}

std::vector<HAS_160::Byte> HAS_160::toVector() const
inline std::vector<HAS_160::Byte> HAS_160::toVector() const
{
const auto digest = toArray();
return {digest.begin(), digest.end()};
}

CONSTEXPR_CPP17_CHOCOBO1_HASH HAS_160::ResultArrayType HAS_160::toArray() const
CONSTEXPR_CPP17_CHOCOBO1_HASH inline HAS_160::ResultArrayType HAS_160::toArray() const
{
const Span<const uint32_t> state(m_h);
const int dataSize = sizeof(decltype(state)::value_type);
Expand Down Expand Up @@ -382,7 +382,7 @@ namespace HAS160_NS
return ret;
}

HAS_160& HAS_160::addData(const Span<const Byte> inData)
inline HAS_160& HAS_160::addData(const Span<const Byte> inData)
{
Span<const Byte> data = inData;

Expand Down Expand Up @@ -416,7 +416,7 @@ namespace HAS160_NS
return (*this);
}

HAS_160& HAS_160::addData(const void *ptr, const std::size_t length)
inline HAS_160& HAS_160::addData(const void *ptr, const std::size_t length)
{
// Span::size_type = std::size_t
return addData({static_cast<const Byte*>(ptr), length});
Expand All @@ -440,7 +440,7 @@ namespace HAS160_NS
return addData({reinterpret_cast<const Byte*>(inSpan.data()), inSpan.size_bytes()});
}

void HAS_160::addDataImpl(const Span<const Byte> data)
inline void HAS_160::addDataImpl(const Span<const Byte> data)
{
assert((data.size() % BLOCK_SIZE) == 0);

Expand Down
Loading

0 comments on commit 6d48d2a

Please sign in to comment.