Класс для хранения бинарных данных. Подробнее...
#include <utilities/binary_data.h>
Открытые члены | |
BinaryData (void) | |
BinaryData (const char &Ch) | |
BinaryData (const char *Buffer) | |
BinaryData (const char *Buffer, const std::size_t &Length) | |
BinaryData (const BinaryData &Data) | |
operator const char * () const | |
BinaryData | operator= (const BinaryData &Data) |
void | AppendData (const char &Ch) |
void | AppendData (const char *Buffer) |
void | AppendData (const std::string &Buffer) |
void | AppendData (const char *Buffer, const std::size_t &Length) |
std::size_t | GetBufferLength (void) const |
const char * | GetBuffer (void) const |
void | SetByte (std::size_t BytePos, char ByteValue) |
void | Release (void) |
void | Reserve (const std::size_t &theLength) |
virtual | ~BinaryData () |
Открытые статические члены | |
static int | GetFirstOccurance (const char *OriginalBuffer, const std::size_t OriginalBufferLength, const char *Buffer, const std::size_t BufferLength, const std::size_t StartFrom=0) |
static int | GetFirstOccurance (const BinaryData &c, const char *Buffer, const std::size_t BufferLength, const std::size_t StartFrom=0) |
static int | GetOccuranceCount (const char *OriginalBuffer, const std::size_t OriginalBufferLength, const char *Buffer, const std::size_t BufferLength) |
static int | GetOccuranceCount (const BinaryData &c, const char *Buffer, const std::size_t BufferLength) |
static void | ReplaceBuffer (BinaryData &c, const std::size_t StartPos, const std::size_t ReplaceLength, const char *Buffer, const std::size_t BufferLength) |
static void | ReplaceBuffer (BinaryData &c, const char *NeedleBuffer, const std::size_t NeedleBufferLength, const char *Buffer, const std::size_t BufferLength) |
Закрытые данные | |
std::vector< char > | Data |
Класс для хранения бинарных данных.
См. определение в файле binary_data.h строка 56
nitro::BinaryData::BinaryData | ( | void | ) |
Конструктор по умолчанию.
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 11
: Data() { }
nitro::BinaryData::BinaryData | ( | const char & | Ch | ) |
Конструктор принимающий данные.
Ch | - Добавляемые данные. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 15
Перекрестные ссылки nitro::exception::code(), Data и nitro::exception::what().
{ try { Data.push_back( Ch ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::BinaryData( const char & Ch )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::BinaryData( const char & Ch )::An error occured" ) , 0 ) ); } }
nitro::BinaryData::BinaryData | ( | const char * | Buffer | ) |
Конструктор принимающий строковые данные (т.е. заканчивающиеся нуль символом).
Buffer | - Добавляемые данные. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 31
Перекрестные ссылки AppendData(), nitro::exception::code() и nitro::exception::what().
{ try { // копируем без нуль символа!!! AppendData( Buffer , strlen( Buffer ) + 1 ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::BinaryData( const char * Buffer )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::BinaryData( const char * Buffer )::An error occured" ) , 0 ) ); } }
nitro::BinaryData::BinaryData | ( | const char * | Buffer, | |
const std::size_t & | Length | |||
) |
Конструктор принимающий произвольные бинарные данные.
Buffer | - Добавляемые данные. | |
Length | - Длина добавляемого буффера. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 48
Перекрестные ссылки AppendData(), nitro::exception::code() и nitro::exception::what().
{ try { AppendData( Buffer , Length ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::BinaryData( const char * Buffer , const std::size_t & Length )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::BinaryData( const char * Buffer , const std::size_t & Length )::An error occured" ) , 0 ) ); } }
nitro::BinaryData::BinaryData | ( | const BinaryData & | Data | ) |
Конструктор копирования.
Data | - Данные, которыми будет инициализирован объект. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 64
Перекрестные ссылки AppendData(), nitro::exception::code(), GetBuffer(), GetBufferLength(), Release() и nitro::exception::what().
{ try { Release(); AppendData( Data.GetBuffer() , Data.GetBufferLength() ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::BinaryData( const BinaryData & Data )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::BinaryData( const BinaryData & Data )::An error occured" ) , 0 ) ); } }
nitro::BinaryData::~BinaryData | ( | ) | [virtual] |
Деструктор (виртуальный).
См. определение в файле binary_data.cpp строка 269
Перекрестные ссылки Release().
{ try { Release(); } catch( ... ) { } }
void nitro::BinaryData::AppendData | ( | const char & | Ch | ) |
Функция добавления данных к уже существующим.
Ch | - Добавляемые данные. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 118
Перекрестные ссылки nitro::exception::code(), Data и nitro::exception::what().
Используется в AppendData(), nitro::CSVFile::AppendRecord(), BinaryData(), nitro::File::LoadBinDataFromFile(), nitro::INIFile::LoadINIFile(), operator=(), nitro::CSVFile::ReadRecord() и nitro::INIFile::SaveINIFile().
{ try { Data.push_back( Ch ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::AppendData( const char & Ch )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::AppendData( const char & Ch )::An error occured" ) , 0 ) ); } }
void nitro::BinaryData::AppendData | ( | const char * | Buffer | ) |
Функция добавления строковых данных(которые заканчиваются нульсимволом) к уже существующим.
Buffer | - Добавляемые данные. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 134
Перекрестные ссылки AppendData(), nitro::exception::code() и nitro::exception::what().
{ try { AppendData( Buffer , strlen( Buffer ) ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::AppendData( const char * Buffer )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::AppendData( const char * Buffer )::An error occured" ) , 0 ) ); } }
void nitro::BinaryData::AppendData | ( | const std::string & | Buffer | ) |
Функция добавления строковых данных к уже существующим.
Buffer | - Добавляемые данные. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 150
Перекрестные ссылки AppendData(), nitro::exception::code() и nitro::exception::what().
{ try { AppendData( Buffer.c_str() , Buffer.size() ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::AppendData( const char * Buffer )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::AppendData( const char * Buffer )::An error occured" ) , 0 ) ); } }
void nitro::BinaryData::AppendData | ( | const char * | Buffer, | |
const std::size_t & | Length | |||
) |
Функция добавления данных к уже существующим.
Buffer | - Добавляемые данные. | |
Length | - Длина добавляемого буффера. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 166
Перекрестные ссылки nitro::exception::code(), Data и nitro::exception::what().
{ try { std::size_t OldSize( Data.size() ); Data.resize( OldSize + theLength ); memcpy( &( Data[ OldSize ] ) , Buffer , theLength ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::AppendData( const char * Buffer , const std::size_t & theLength )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::AppendData( const char * Buffer , const std::size_t & theLength )::An error occured" ) , 0 ) ); } }
const char * nitro::BinaryData::GetBuffer | ( | void | ) | const |
Функция получения указателя на буффер.
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 200
Перекрестные ссылки nitro::exception::code(), Data и nitro::exception::what().
Используется в nitro::ZIPAbstraction::AddFile(), nitro::CSVFile::AppendRecord(), BinaryData(), GetFirstOccurance(), GetOccuranceCount(), nitro::INIFile::LoadINIFile(), nitro::XMLFile::LoadXML(), operator const char *(), operator=(), nitro::CSVFile::ReadRecord() и nitro::File::SaveBinDataToFile().
{ try { return( &( Data[ 0 ] ) ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::GetBuffer( void )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::GetBuffer( void )::An error occured" ) , 0 ) ); } }
std::size_t nitro::BinaryData::GetBufferLength | ( | void | ) | const |
См. определение в файле binary_data.cpp строка 184
Перекрестные ссылки nitro::exception::code(), Data и nitro::exception::what().
Используется в nitro::ZIPAbstraction::AddFile(), nitro::CSVFile::AppendRecord(), BinaryData(), GetFirstOccurance(), GetOccuranceCount(), nitro::XMLFile::LoadXML(), operator=(), nitro::CSVFile::ReadRecord() и nitro::File::SaveBinDataToFile().
{ try { return( Data.size() ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::GetBufferLength( void ) const::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::GetBufferLength( void ) const::An error occured" ) , 0 ) ); } }
int nitro::BinaryData::GetFirstOccurance | ( | const BinaryData & | c, | |
const char * | Buffer, | |||
const std::size_t | BufferLength, | |||
const std::size_t | StartFrom = 0 | |||
) | [static] |
Функция проверяет есть ли в контейнере "с" цепочка данных из r.
c | - контейнер с данными. | |
Buffer | - Цепочка байтов, которую мы ищем в контейнере. | |
BufferLength | - Длина искомого буффера. | |
StartFrom | - Позиция первого символа с которого будет начат поиск. |
nitro::exception | Кидает исключение с описанием ошибки. |
nitro::exception | Throws exception with the description of error. |
См. определение в файле binary_data.cpp строка 308
Перекрестные ссылки nitro::exception::code(), GetBuffer(), GetBufferLength(), GetFirstOccurance() и nitro::exception::what().
{ try { return( GetFirstOccurance( c.GetBuffer() , c.GetBufferLength() , Buffer , BufferLength ) ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "GetFirstOccurance( const BinaryData & c , const char * Buffer , const std::size_t BufferLength )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "GetFirstOccurance( const BinaryData & c , const char * Buffer , const std::size_t BufferLength )::An error occured while executing template< class container , class raw >int GetFirstOccurance( const container & c , const raw & r )" ) , 0 ) ); } }
int nitro::BinaryData::GetFirstOccurance | ( | const char * | OriginalBuffer, | |
const std::size_t | OriginalBufferLength, | |||
const char * | Buffer, | |||
const std::size_t | BufferLength, | |||
const std::size_t | StartFrom = 0 | |||
) | [static] |
Функция проверяет есть ли в контейнере "с" цепочка данных из r.
OriginalBuffer | - Буффер с данными. | |
OriginalBufferLength | - Длина буффера с данными. | |
Buffer | - Цепочка байтов, которую мы ищем в контейнере. | |
BufferLength | - Длина искомого буффера. | |
StartFrom | - Позиция первого символа с которого будет начат поиск. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 280
Перекрестные ссылки nitro::exception::code() и nitro::exception::what().
Используется в GetFirstOccurance(), GetOccuranceCount(), ReplaceBuffer() и nitro::TemplateEngine::SetVariable().
{ try { for( std::size_t i( StartFrom ) ; i < OriginalBufferLength ; i++ ) { std::size_t j( 0 ); for( ; j < BufferLength && i + j < OriginalBufferLength && OriginalBuffer[ i + j ] == Buffer[ j ] ; j++ ); if( j == BufferLength ) { return( ( int )i ); } } return( -1 ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::GetFirstOccurance( const char * OriginalBuffer , const std::size_t OriginalBufferLength , const char * Buffer , const std::size_t BufferLength , const std::size_t StartFrom /* = 0 */ )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::GetFirstOccurance( const char * OriginalBuffer , const std::size_t OriginalBufferLength , const char * Buffer , const std::size_t BufferLength , const std::size_t StartFrom /* = 0 */ )::An error occured while executing template< class container , class raw >int GetFirstOccurance( const container & c , const raw & r )" ) , 0 ) ); } }
int nitro::BinaryData::GetOccuranceCount | ( | const char * | OriginalBuffer, | |
const std::size_t | OriginalBufferLength, | |||
const char * | Buffer, | |||
const std::size_t | BufferLength | |||
) | [static] |
Функция подсчета количества вхождений буффера Buffer.
OriginalBuffer | - Буффер с данными. | |
OriginalBufferLength | - Длина буффера с данными. | |
Buffer | - Цепочка байтов, которую мы ищем в контейнере. | |
BufferLength | - Длина искомого буффера. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 324
Перекрестные ссылки nitro::exception::code(), GetFirstOccurance() и nitro::exception::what().
Используется в nitro::CSVFile::AppendRecord() и GetOccuranceCount().
{ try { std::size_t Counter( 0 ); int Tmp; for( int i( 0 ) ; i < ( int )OriginalBufferLength ; i++ ) { Tmp = GetFirstOccurance( OriginalBuffer , OriginalBufferLength , Buffer , BufferLength , i ); if( Tmp != -1 ) { Counter++; i = ( int )( Tmp + BufferLength - 1 ); } } return( ( int )Counter ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::GetOccuranceCount( const char * OriginalBuffer , const std::size_t OriginalBufferLength , const char * Buffer , const std::size_t BufferLength )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::GetOccuranceCount( const char * OriginalBuffer , const std::size_t OriginalBufferLength , const char * Buffer , const std::size_t BufferLength )::An error occured" ) , 0 ) ); } }
int nitro::BinaryData::GetOccuranceCount | ( | const BinaryData & | c, | |
const char * | Buffer, | |||
const std::size_t | BufferLength | |||
) | [static] |
Функция подсчета количества вхождений буффера Buffer.
c | - Контейнер с данными. | |
Buffer | - Цепочка байтов, которую мы ищем в контейнере. | |
BufferLength | - Длина искомого буффера. |
nitro::exception | Throws exception with the description of error. |
См. определение в файле binary_data.cpp строка 353
Перекрестные ссылки nitro::exception::code(), GetBuffer(), GetBufferLength(), GetOccuranceCount() и nitro::exception::what().
{ try { return( GetOccuranceCount( c.GetBuffer() , c.GetBufferLength() , Buffer , BufferLength ) ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::GetOccuranceCount( const BinaryData & c , const char * Buffer , const std::size_t BufferLength )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::GetOccuranceCount( const BinaryData & c , const char * Buffer , const std::size_t BufferLength )::An error occured" ) , 0 ) ); } }
nitro::BinaryData::operator const char * | ( | ) | const |
Функция конвертации в строку.
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 82
Перекрестные ссылки nitro::exception::code(), GetBuffer() и nitro::exception::what().
{ try { return( GetBuffer() ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::operator const char * () const::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::operator const char * () const::An error occured" ) , 0 ) ); } }
BinaryData nitro::BinaryData::operator= | ( | const BinaryData & | Data | ) |
Оператор присваивания.
Data | - Данные, которыми будет инициализирован объект. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 98
Перекрестные ссылки AppendData(), nitro::exception::code(), GetBuffer(), GetBufferLength(), Release() и nitro::exception::what().
{ try { Release(); AppendData( Data.GetBuffer() , Data.GetBufferLength() ); return( *this ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::operator=( const BinaryData & Data )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::operator=( const BinaryData & Data )::An error occured" ) , 0 ) ); } }
void nitro::BinaryData::Release | ( | void | ) |
Функция удаления хранимых данных.
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 232
Перекрестные ссылки nitro::exception::code(), Data и nitro::exception::what().
Используется в BinaryData(), operator=() и ~BinaryData().
{ try { Data.clear(); Data.resize( 0 ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::Release( void )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::Release( void )::An error occured" ) , 0 ) ); } }
void nitro::BinaryData::ReplaceBuffer | ( | BinaryData & | c, | |
const char * | NeedleBuffer, | |||
const std::size_t | NeedleBufferLength, | |||
const char * | Buffer, | |||
const std::size_t | BufferLength | |||
) | [static] |
Функция замены части буффера.
c | - Бинарные данные. | |
NeedleBuffer | - Буффер, который будем заменять. | |
NeedleBufferLength | - Длина заменяемого буффера. | |
Buffer | - Новый буффер. | |
BufferLength | - Длина нового буффера. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 392
Перекрестные ссылки nitro::exception::code(), GetFirstOccurance(), ReplaceBuffer() и nitro::exception::what().
{ try { int Cursor( 0 ); int StartFrom( 0 ); for( ; ( Cursor = GetFirstOccurance( c , NeedleBuffer , NeedleBufferLength , StartFrom ) ) != -1 ; ) { ReplaceBuffer( c , Cursor , NeedleBufferLength , Buffer , BufferLength ); StartFrom = ( int )( Cursor + BufferLength ); } } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::ReplaceBuffer( BinaryData & c , const char * NeedleBuffer , const std::size_t NeedleBufferLength , const char * Buffer , const std::size_t BufferLength )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::ReplaceBuffer( BinaryData & c , const char * NeedleBuffer , const std::size_t NeedleBufferLength , const char * Buffer , const std::size_t BufferLength )::An error occured" ) , 0 ) ); } }
void nitro::BinaryData::ReplaceBuffer | ( | BinaryData & | c, | |
const std::size_t | StartPos, | |||
const std::size_t | ReplaceLength, | |||
const char * | Buffer, | |||
const std::size_t | BufferLength | |||
) | [static] |
Функция замены части буффера.
c | - Бинарные данные. | |
StartPos | - Позиция начала заменяемого фрагмента. | |
ReplaceLength | - Длина заменяемого участка. | |
Buffer | - Новый буффер. | |
BufferLength | - Длина нового буффера. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 369
Перекрестные ссылки nitro::exception::code(), Data и nitro::exception::what().
Используется в nitro::INIFile::LoadINIFile(), nitro::CSVFile::ReadRecord(), ReplaceBuffer() и nitro::TemplateEngine::SetVariable().
{ try { c.Data.erase( c.Data.begin() + StartPos , c.Data.begin() + StartPos + ReplaceLength ); std::insert_iterator< std::vector< char > > InsertIterator( c.Data , c.Data.begin() + StartPos ); for( std::size_t i( 0 ) ; i < BufferLength ; i++ ) { *InsertIterator = Buffer[ i ]; } } catch( nitro::exception e ) { throw( nitro::exception( std::string( "ReplaceBuffer( BinaryData & c , std::size_t StartPos , std::size_t ReplaceLength , const char * Buffer , const std::size_t BufferLength )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "ReplaceBuffer( BinaryData & c , std::size_t StartPos , std::size_t ReplaceLength , const char * Buffer , const std::size_t BufferLength )::An error occured" ) , 0 ) ); } }
void nitro::BinaryData::Reserve | ( | const std::size_t & | theLength | ) |
Функция резервирования памяти.
theLength | - Количество байт памяти, которые будем резервировать. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 249
Перекрестные ссылки nitro::exception::code(), Data и nitro::exception::what().
Используется в nitro::CSVFile::AppendRecord().
{ try { if( Data.size() < theLength ) { Data.reserve( theLength ); } Data.resize( 0 ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::Reserve( const std::size_t & theLength )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::Reserve( const std::size_t & theLength )::An error occured" ) , 0 ) ); } }
void nitro::BinaryData::SetByte | ( | std::size_t | BytePos, | |
char | ByteValue | |||
) |
Функция установки байта в буффере.
BytePos | - Позиция устанавливаемого байта. | |
ByteValue | - Значение устанавливаемого байта. |
nitro::exception | Кидает исключение с описанием ошибки. |
См. определение в файле binary_data.cpp строка 216
Перекрестные ссылки nitro::exception::code(), Data и nitro::exception::what().
{ try { Data[ BytePos ] = ByteValue; } catch( nitro::exception e ) { throw( nitro::exception( std::string( "BinaryData::SetByte( std::size_t BytePos , char ByteValue )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "BinaryData::SetByte( std::size_t BytePos , char ByteValue )::An error occured" ) , 0 ) ); } }
std::vector< char > nitro::BinaryData::Data [private] |
Буффер бинарных данных.
См. определение в файле binary_data.h строка 628
Используется в AppendData(), BinaryData(), GetBuffer(), GetBufferLength(), Release(), ReplaceBuffer(), Reserve() и SetByte().