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 351 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 363 of file database.hpp.

364 {
365 uint8_t last_4bits = obj.data[BlockSize - 1] & 0x0F;
366 return last_4bits == 0x0F;
367 }

◆ 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 354 of file database.hpp.

355 {
356 Memory::FastSet(obj.data, 0xFF, BlockSize);
357 if (!value)
358 {
359 obj.data[BlockSize - 1] &= 0xF0;
360 }
361 }
static void FastSet(void *dst, uint8_t value, size_t size)
快速内存填充 / Fast memory fill

◆ 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 369 of file database.hpp.

370 {
371 if (BlockSize == 0)
372 {
373 return false;
374 }
375
376 for (size_t i = 0; i < BlockSize - 1; ++i)
377 {
378 if (obj.data[i] != 0xFF)
379 {
380 return false;
381 }
382 }
383
384 uint8_t last_byte = obj.data[BlockSize - 1];
385 if ((last_byte & 0xF0) != 0xF0)
386 {
387 return false;
388 }
389
390 uint8_t last_4bits = last_byte & 0x0F;
391 if (!(last_4bits == 0x0F || last_4bits == 0x00))
392 {
393 return false;
394 }
395
396 return true;
397 }

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