libxr 1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
LibXR::DatabaseRaw< MinWriteSize >::BlockBoolUtil< BlockSize > Class Template Reference

Static Public Member Functions

static void SetFlag (BlockBoolData< BlockSize > &obj, bool value)
 
static bool ReadFlag (const BlockBoolData< BlockSize > &obj)
 
static bool Valid (const BlockBoolData< BlockSize > &obj)
 

Detailed Description

template<size_t MinWriteSize>
template<size_t BlockSize>
class LibXR::DatabaseRaw< MinWriteSize >::BlockBoolUtil< BlockSize >

Definition at line 332 of file database.hpp.

Member Function Documentation

◆ ReadFlag()

template<size_t MinWriteSize>
template<size_t BlockSize>
static bool LibXR::DatabaseRaw< MinWriteSize >::BlockBoolUtil< BlockSize >::ReadFlag ( const BlockBoolData< BlockSize > &  obj)
inlinestatic

Definition at line 344 of file database.hpp.

345 {
346 uint8_t last_4bits = obj.data[BlockSize - 1] & 0x0F;
347 return last_4bits == 0x0F;
348 }
constexpr auto min(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最小值

◆ SetFlag()

template<size_t MinWriteSize>
template<size_t BlockSize>
static void LibXR::DatabaseRaw< MinWriteSize >::BlockBoolUtil< BlockSize >::SetFlag ( BlockBoolData< BlockSize > &  obj,
bool  value 
)
inlinestatic

Definition at line 335 of file database.hpp.

336 {
337 memset(obj.data, 0xFF, BlockSize);
338 if (!value)
339 {
340 obj.data[BlockSize - 1] &= 0xF0;
341 }
342 }

◆ Valid()

template<size_t MinWriteSize>
template<size_t BlockSize>
static bool LibXR::DatabaseRaw< MinWriteSize >::BlockBoolUtil< BlockSize >::Valid ( const BlockBoolData< BlockSize > &  obj)
inlinestatic

Definition at line 350 of file database.hpp.

351 {
352 if (BlockSize == 0)
353 {
354 return false;
355 }
356
357 for (size_t i = 0; i < BlockSize - 1; ++i)
358 {
359 if (obj.data[i] != 0xFF)
360 {
361 return false;
362 }
363 }
364
365 uint8_t last_byte = obj.data[BlockSize - 1];
366 if ((last_byte & 0xF0) != 0xF0)
367 {
368 return false;
369 }
370
372 if (!(last_4bits == 0x0F || last_4bits == 0x00))
373 {
374 return false;
375 }
376
377 return true;
378 }

The documentation for this class was generated from the following file: