LibUDB 1.0
Loading...
Searching...
No Matches
UDBase Class Reference

The UDBase class. More...

#include <UDBase.h>

Public Member Functions

 UDBase (const UDBase &other)
 UDBase (UDBase &&other)
UDBaseoperator= (const UDBase &other)
UDBaseoperator= (UDBase &&other)
UDBaseoperator+= (const UDBase &other)
void writeToBuffer (std::vector< char > &result)
void readFromBuffer (const std::vector< char > &buf, const size_t &offset=0, const size_t &bytes_to_read=0)
void writeToFile (const std::filesystem::path &f_path)
void readFromFile (const std::filesystem::path &f_path)
std::vector< UDBElement > * getRawBase () const
void addElement (const UDBElement &el)
void addElements (const std::vector< UDBElement > &elements)
virtual void removeElement (const UDBElement &el)
virtual void removeElements (std::function< bool(const UDBElement &)> predicate)
virtual void replaceElement (const UDBElement &old_el, const UDBElement &new_el)
void clearBase ()
void shrinkToFit ()
virtual UDBase searchElement (std::function< bool(const UDBElement &)> search_function)
virtual UDBase searchElement (std::function< void(const UDBElement &, UDBase &)> search_function)
virtual std::vector< UDBElementsearchElementV (std::function< bool(const UDBElement &)> search_function)
virtual void sortBase (std::function< bool(const UDBElement &, const UDBElement &)> sort_function)
size_t baseSize () const
size_t calculateWriteSize ()
std::vector< UDBasesplitBase (const size_t &bytes_limit, const size_t &minimum_elements=size_t(1))

Static Public Member Functions

static UDBase convertToBase (const std::vector< UDBElement > &elements)

Protected Member Functions

void readFromBufferInner (const std::vector< char > &buf, const size_t &offset, const size_t &bytes_to_read)
void writeToBufferInner (std::vector< char > &result)

Protected Attributes

std::vector< UDBElementbase
 Internal base object.
std::string base_version = "UDB 1.0"
 Base version string used to identify base in buffers and files.

Detailed Description

The UDBase class.

This class contains methods for database managing.

Constructor & Destructor Documentation

◆ UDBase() [1/2]

UDBase::UDBase ( const UDBase & other)

Copy constructor.

Parameters
otherUDBase object.

◆ UDBase() [2/2]

UDBase::UDBase ( UDBase && other)

Move constructor.

Parameters
otherUDBase object.

Member Function Documentation

◆ addElement()

void UDBase::addElement ( const UDBElement & el)

Adds element to base.

Parameters
elElement to be added.

◆ addElements()

void UDBase::addElements ( const std::vector< UDBElement > & elements)

Adds elements to base.

Parameters
elementsVector of elements to be added.

◆ baseSize()

size_t UDBase::baseSize ( ) const

Returns number of elements in database.

Returns
Number of elements.

◆ calculateWriteSize()

size_t UDBase::calculateWriteSize ( )

Calculates size of buffer, wich can be return by writeToBuffer() method.

Returns
Possible size of buffer.

◆ clearBase()

void UDBase::clearBase ( )

Removes all elements from base.

◆ convertToBase()

UDBase UDBase::convertToBase ( const std::vector< UDBElement > & elements)
static

Converts vector of UDBElement objects to base.

Parameters
elementsElements to be converted.
Returns
UDBase object.

◆ getRawBase()

std::vector< UDBElement > * UDBase::getRawBase ( ) const

Returns pointer to internal base vector object.

Returns
Pointer to internal vector.

◆ operator+=()

UDBase & UDBase::operator+= ( const UDBase & other)

Appends other UDBase object values to current database.

Parameters
otherUDBase object to be appended.
Returns
reference to UDBase object.

◆ operator=() [1/2]

UDBase & UDBase::operator= ( const UDBase & other)
Parameters
otherUDBase object
Returns
reference to UDBase object.

◆ operator=() [2/2]

UDBase & UDBase::operator= ( UDBase && other)
Parameters
otherUDBase object.
Returns
reference to UDBase object.

◆ readFromBuffer()

void UDBase::readFromBuffer ( const std::vector< char > & buf,
const size_t & offset = 0,
const size_t & bytes_to_read = 0 )

Tries to read database from given buffer.

Note
This method can throw std::exception in case of errors.
Parameters
bufBuffer database should be read from.
offsetPosition in buffer reading should be started from (default value is 0).
bytes_to_readQuantity of bytes to be read. If it is 0 (default), reads whole buffer starting from offset.

◆ readFromBufferInner()

void UDBase::readFromBufferInner ( const std::vector< char > & buf,
const size_t & offset,
const size_t & bytes_to_read )
protected

Internal method used in readFromBuffer() and readFromFile() methods.

Parameters
bufBuffer base to be read from.
offsetNumber of byte reading to be started from.
bytes_to_readNumber of bytes to be read.

◆ readFromFile()

void UDBase::readFromFile ( const std::filesystem::path & f_path)

Tries to read database from file.

Note
This method can throw std::exception in case of errors.
Parameters
f_pathAbsolute path to file database should be read from.

◆ removeElement()

virtual void UDBase::removeElement ( const UDBElement & el)
virtual

Removes from base all elements equal to el.

Parameters
elElement to be removed.

◆ removeElements()

virtual void UDBase::removeElements ( std::function< bool(const UDBElement &)> predicate)
virtual

Removes elements from base according to predicate function conditions.

Note
This method can throw std::exception in case of errors.
Parameters
predicateFunction to check removing conditions.

◆ replaceElement()

virtual void UDBase::replaceElement ( const UDBElement & old_el,
const UDBElement & new_el )
virtual

Replaces all elements equal to old_el by new_el.

Parameters
old_elElement to be replaced.
new_elElement to be replaced by.

◆ searchElement() [1/2]

virtual UDBase UDBase::searchElement ( std::function< bool(const UDBElement &)> search_function)
virtual

Returns all elements that match the conditions specified in the search_function.

Parameters
search_functionFunction to check conditions.
Returns
Base with found elements.

◆ searchElement() [2/2]

virtual UDBase UDBase::searchElement ( std::function< void(const UDBElement &, UDBase &)> search_function)
virtual

Returns all elements added to UDBase parameter of search_function.

Parameters
search_functionFunction to add elements to result;
Returns
Base with found elements.

◆ searchElementV()

virtual std::vector< UDBElement > UDBase::searchElementV ( std::function< bool(const UDBElement &)> search_function)
virtual

Returns all elements that match the conditions specified in the search_function.

Parameters
search_functionFunction to check conditions.
Returns
Vector with found elements.

◆ shrinkToFit()

void UDBase::shrinkToFit ( )

Reduces memory usage by freeing unused memory in internal containers.

◆ sortBase()

virtual void UDBase::sortBase ( std::function< bool(const UDBElement &, const UDBElement &)> sort_function)
virtual

Sorts base (quicksort algorithm).

Parameters
sort_functionFunction to compare elements.

◆ splitBase()

std::vector< UDBase > UDBase::splitBase ( const size_t & bytes_limit,
const size_t & minimum_elements = size_t(1) )

Splits base into bases of smaller size.

Parameters
bytes_limitMaximum permitted size of smaller base.
minimum_elementsMinimum elements in smaller base (default value is 1).
Returns

◆ writeToBuffer()

void UDBase::writeToBuffer ( std::vector< char > & result)

Writes database to result buffer.

Parameters
resultVector base to be written to.

◆ writeToBufferInner()

void UDBase::writeToBufferInner ( std::vector< char > & result)
protected

Internal method used in writeToBuffer() and writeToFile() methods.

Parameters
resultVecto base to be written to.

◆ writeToFile()

void UDBase::writeToFile ( const std::filesystem::path & f_path)

Writes database to file.

Note
This method can throw std::exception in case of errors.
Parameters
f_pathAbsolute path to file database should be written to.