Классы | Определения типов | Функции | Переменные

Пространство имен nitro

Классы

class  Database
class  MySQLDatabase
 Класс для работы с MySQL. Подробнее...
class  PGDatabase
 Класс для работы с PostgreSQL. Подробнее...
class  CSVReadable
 Класс для чтения CSV записей в объект. Подробнее...
class  CSVWritable
 Класс для записи CSV записей в объект. Подробнее...
class  CSVFile
 Класс для чтения/записи CSV файлов. Подробнее...
class  DynamicLibLoader
 Класс для загрузки динамических библиотек. Подробнее...
class  INIFile
 Класс для чтения INI файлов. Подробнее...
class  XMLTag
 Класс представляющий xml тэг. Подробнее...
class  XMLFile
 Класс скрывает некоторые детали реализации класса XMLTag. Подробнее...
class  DynamicLibManager
 Класс для работы с библиотеками. Подробнее...
class  ObjectManagerBasic
 Класс для хранения объектов. Подробнее...
class  ObjectManager
 Класс для хранения объектов. Подробнее...
class  LocalObjectManager
 Класс для хранения объектов. Подробнее...
class  DirectoryAbstraction
 Класс для работы с директориями. Подробнее...
class  FileAbstraction
 Класс, предоставляющий кроссплатформенный АПИ для работы с файлами. Подробнее...
class  MutexAbstraction
 Класс для синхронизации потоков. Подробнее...
class  ProcessAbstraction
 Класс для работы с процессами. Подробнее...
class  TARFileHeader
 Заголовок файла. Подробнее...
class  UnTARAbstraction
 Класс для работы с tar архивами. Подробнее...
class  ThreadAbstraction
 Класс для управления потоками. Подробнее...
class  ZIPAbstraction
 Класс для работы с zip архивами. Подробнее...
class  UnZIPAbstraction
 Класс для работы с zip архивами. Подробнее...
class  Allocator
 Класс для работы с памятью. Подробнее...
class  BinaryData
 Класс для хранения бинарных данных. Подробнее...
class  DynamicArrayKeeper
 Класс для автоудаления динамических массивов. Подробнее...
class  DynamicObjectKeeper
 Класс для автоудаления динамических объектов. Подробнее...
class  Directory
 Класс алгоритмов работы с директориями. Подробнее...
class  exception
 Класс для работы с исключениями. Подробнее...
class  File
 Класс для работы с файлами. Подробнее...
class  CollectFiles
 Функтор добавления пути к файлу в массив. Подробнее...
class  CollectNone
 Ничего не делающий функтор. Подробнее...
class  LogStream
 Класс для лога. Подробнее...
class  MemoryDescription
class  MemoryHandler
class  TopWindow
class  Application
class  MVC
class  ExecuteCommandInterface
class  CommandRedirections
class  ViewInterface
class  ControllerInterface
class  ModelInterface
class  StringCollection
class  PluginInterface
 Класс для создания плагинов. Подробнее...
class  Pointer
class  PointerInterface
class  SharedPointerInterface
 Интерфейс для шаред указателя. Подробнее...
class  SharedPointer
 Класс шаред указателя. Подробнее...
struct  MD5_CTX
class  FSPath
 Класс для работы с путями. Подробнее...
class  SUtils
 Различные утилиты для работы со строками. Подробнее...
class  Encoders
 Класс для работы с алгоритмами кодирования/раскодирования. Подробнее...
class  Parsers
 Класс для разбора строк. Подробнее...
class  Converters
 Класс для конвертированием различных значений из/в строки. Подробнее...
class  TemplateEngine
 Шаблонизатор. Подробнее...
class  FunctionWrapper
 Класс-враппер для вызова функции. Подробнее...
class  FunctionWrapper< void >
class  MemberFunctionWrapper
 Класс-враппер для вызова функции-члена. Подробнее...
class  MemberFunctionWrapper< void >
class  TypeConverter
 Универсальный конвертер. Подробнее...
class  Thread
 Высокоуровневый класс для управления потоками. Подробнее...
class  Timer
class  ZIPUtilities
 Утилиты для работы с архивами. Подробнее...

Определения типов

typedef unsigned char UC
typedef unsigned short UI
typedef unsigned long UINT4
typedef unsigned char * POINTER

Функции

std::size_t CSV_FILE_READ_BUFFER_SIZE (1024)
const std::size_t START_FIELD (1)
const std::size_t READ_DATA (2)
const std::size_t END_QUOTED_FIELD (3)
const std::size_t ADD_FIELD (4)
const std::size_t TRY_READ_NEXT (5)
const std::size_t QUOTE_WAS_FOUND (6)
const std::size_t END_RECORD (7)
const std::size_t CSV_AUTO_ESCAPE (1)
bool IsTagName (std::string Lexemma)
void DispatchBuffer (const char *Buffer, std::vector< std::string > &Lexemmas, std::size_t BufferSize, std::list< nitro::BinaryData > &CDATA)
 DEFINE_RELEASE_FUNCTION (DynamicLibManager, Release, Manager)
 DEFINE_RELEASING_DESTRUCTOR (DynamicLibManager, Release)
 DEFINE_SQUARE_BRACE_OPERATOR_REF_LOCATOR (nitro::DynamicLibLoader, DynamicLibManager, Manager)
 DEFINE_SQUARE_BRACE_OPERATOR_REF_CURSOR (nitro::DynamicLibLoader, DynamicLibManager, Manager)
 ALIAS_FUNCTION_1 (FileAbstraction::DeleteFile, aliasDeleteFile, const char *)
 ALIAS_FUNCTION_2 (FileAbstraction::RenameFile, aliasRenameFile, const char *, const char *)
ALLOCATOR_DLL_ENTITY AllocatorGetAllocator (void)
 ALIAS_FUNCTION_2 (File::SaveBinDataToFile, tstSaveBinDataToFile, BinaryData, const char *)
 ALIAS_FUNCTION_2 (File::LoadBinDataFromFile, tstLoadBinDataFromFile, BinaryData, const char *)
 ALIAS_FUNCTION_1R (File::FileExists, aliasFileExists, const char *, bool)
 ALIAS_FUNCTION_1 (File::ForceCreateFile, aliasForceCreateFile, const char *)
 ALIAS_FUNCTION_1R (File::GetLastModified, aliasGetLastModified, const char *, tm)
template<class file_func_type , class directory_func_type >
void WalkThroughDirectory (const std::string &FolderPath, file_func_type FileFunc, directory_func_type DirectoryFunc, const bool Recursive=true)
template<class cont >
void CollectFilesFromDirectory (const std::string &FolderPath, cont &c, const bool Recursive=true)
template<class cont >
void CollectDirectoriesFromDirectory (const std::string &FolderPath, cont &c, const bool Recursive=true)
static LogStream stdlog ("./system.log", SYNC_LOGGING)
static LogStream errorlog ("./error.log", ASYNC_LOGGING)
MVCGetMainMVCObject (void)
void Encode (UC *output, UINT4 *input, std::size_t len)
void Decode (UINT4 *output, UC *input, UI len)
void MDTransformF (UINT4 s[4], UINT4 x[16])
void MDTransformG (UINT4 s[4], UINT4 x[16])
void MDTransformH (UINT4 s[4], UINT4 x[16])
void MDTransformI (UINT4 s[4], UINT4 x[16])
void MDTransform (UINT4 state[4], UC block[64])
void MDUpdate (MD5_CTX *context, UC *input, std::size_t inputLen)
void MDFinal (UC digest[16], MD5_CTX *context)
void MDInit (MD5_CTX *Context)
void * HighLevelThreadFunction (void *Param)
void * _TimerWrapperFunction (void *Param)

Переменные

const std::size_t FA_FILE_BEGIN = 0
const std::size_t FA_FILE_CURRENT = 1
const std::size_t FA_FILE_END = 2
const std::size_t FA_FILE_BINARY = 1
const std::size_t FA_FILE_TEXT = 2
const std::size_t FA_FILE_READ = 4
const std::size_t FA_FILE_WRITE = 8
const std::size_t FA_FILE_APPEND = 16
const std::size_t FA_FILE_TRUNCATE = 32
Allocator DefaultAllocator
const std::size_t EXCEPTION_MESSAGE_LENGTH = 1024
static const std::size_t ASYNC_LOGGING = 0
static const std::size_t SYNC_LOGGING = 1
DLL_ENTITY MemoryHandler StdMemoryHandler
MVC MainMVCObject
static UC PADDING [64]
const std::size_t OCTAL = 8
const std::size_t DECIMAL = 10
const std::size_t HEXADECIMAL = 16

Типы

typedef unsigned char* nitro::POINTER

См. определение в файле string_utilities.cpp строка 420

typedef unsigned char nitro::UC

См. определение в файле string_utilities.cpp строка 417

typedef unsigned short nitro::UI

См. определение в файле string_utilities.cpp строка 418

typedef unsigned long nitro::UINT4

См. определение в файле string_utilities.cpp строка 419


Функции

void* nitro::_TimerWrapperFunction ( void *  Param  ) 

Функция для потока таймера.

Автор:
Додонов А.А.

См. определение в файле timer.cpp строка 67

Перекрестные ссылки nitro::Timer::Action(), nitro::Timer::Instant, nitro::Timer::Single, nitro::ThreadAbstraction::Sleep() и nitro::Timer::Timeout.

        {
                Timer *                                 TimerPtr( ( Timer * ) Param );

                if( TimerPtr->Instant )
                {
                        TimerPtr->Action();

                        if( TimerPtr->Single )
                        {
                                return( NULL );
                        }
                }

                for( ; true ; )
                {
                        ThreadAbstraction::Sleep( TimerPtr->Timeout );

                        TimerPtr->Action();

                        if( TimerPtr->Single )
                        {
                                return( NULL );
                        }
                }
        }

Граф вызовов:

const std::size_t nitro::ADD_FIELD (  ) 

Используется в nitro::CSVFile::ReadRecord().

nitro::ALIAS_FUNCTION_1 ( FileAbstraction::DeleteFile  ,
aliasDeleteFile  ,
const char *   
)
nitro::ALIAS_FUNCTION_1 ( File::ForceCreateFile  ,
aliasForceCreateFile  ,
const char *   
)
nitro::ALIAS_FUNCTION_1R ( File::FileExists  ,
aliasFileExists  ,
const char *  ,
bool   
)
nitro::ALIAS_FUNCTION_1R ( File::GetLastModified  ,
aliasGetLastModified  ,
const char *  ,
tm   
)
nitro::ALIAS_FUNCTION_2 ( FileAbstraction::RenameFile  ,
aliasRenameFile  ,
const char *  ,
const char *   
)
nitro::ALIAS_FUNCTION_2 ( File::SaveBinDataToFile  ,
tstSaveBinDataToFile  ,
BinaryData  ,
const char *   
)
nitro::ALIAS_FUNCTION_2 ( File::LoadBinDataFromFile  ,
tstLoadBinDataFromFile  ,
BinaryData  ,
const char *   
)
template<class cont >
void nitro::CollectDirectoriesFromDirectory ( const std::string &  FolderPath,
cont &  c,
const bool  Recursive = true 
)

Функция пробегает по всем вложенным директориям и собирает файлы.

Аргументы:
FolderPath - Путь к сканируемой директории, концевой слэш может отсутствовать.
c - Контейнер.
Recursive - Если true, то директории будут обходиться рекурсивно.
Исключения:
nitro::exception Кидает исключение этого типа с описанием ошибки.
Автор:
Додонов А.А.

См. определение в файле file_utilities.h строка 718

Перекрестные ссылки nitro::exception::code(), WalkThroughDirectory() и nitro::exception::what().

        {
                try
                {
                        nitro::WalkThroughDirectory( 
                                FolderPath , 
                                std::bind2nd( 
                                nitro::CollectNone< std::string , std::vector< std::string > >() , & c
                                ) , 
                                std::bind2nd( 
                                nitro::CollectFiles< std::string , std::vector< std::string > >() , & c
                                ) , 
                                Recursive
                        );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "template< class cont >void CollectDirectoriesFromDirectory( const std::string & FolderPath , cont & c , const bool Recursive = true )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "template< class cont >void CollectDirectoriesFromDirectory( const std::string & FolderPath , cont & c , const bool Recursive = true )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

template<class cont >
void nitro::CollectFilesFromDirectory ( const std::string &  FolderPath,
cont &  c,
const bool  Recursive = true 
)

Функция пробегает по всем вложенным директориям и собирает файлы.

Аргументы:
FolderPath - Путь к сканируемой директории, концевой слэш может отсутствовать.
c - Контейнер.
Recursive - Если true, то директории будут обходиться рекурсивно.
Исключения:
nitro::exception Кидает исключение этого типа с описанием ошибки.
Автор:
Додонов А.А.

См. определение в файле file_utilities.h строка 667

Перекрестные ссылки nitro::exception::code(), WalkThroughDirectory() и nitro::exception::what().

Используется в nitro::ZIPUtilities::ArchiveDirectory() и nitro::MVC::LoadModules().

        {
                try
                {
                        nitro::WalkThroughDirectory( 
                                FolderPath , 
                                std::bind2nd( 
                                nitro::CollectFiles< std::string , std::vector< std::string > >() , & c
                                ) , 
                                std::bind2nd( 
                                nitro::CollectNone< std::string , std::vector< std::string > >() , & c
                                ) , 
                                Recursive
                        );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "template< class cont >void CollectFilesFromDirectory( const std::string & FolderPath , cont & c , const bool Recursive = true )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "template< class cont >void CollectFilesFromDirectory( const std::string & FolderPath , cont & c , const bool Recursive = true )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

const std::size_t nitro::CSV_AUTO_ESCAPE (  ) 

Включение автоматической обработки удвоеных кавычек.

Автор:
Додонов А.А.

Используется в nitro::CSVFile::AppendRecord() и nitro::CSVFile::ReadRecord().

std::size_t nitro::CSV_FILE_READ_BUFFER_SIZE ( 1024   ) 
void nitro::Decode ( UINT4 *  output,
UC *  input,
UI  len 
)

См. определение в файле string_utilities.cpp строка 508

Перекрестные ссылки nitro::exception::code() и nitro::exception::what().

Используется в MDTransform().

        {
                try
                {
                        UI i, j;
                        for (i = 0, j = 0; j < len; i++, j += 4)
                        output[i] = ((UINT4)input[ j ])        | 
                                                (((UINT4)input[j+1]) <<  8) |
                                                (((UINT4)input[j+2]) << 16) | 
                                                (((UINT4)input[j+3]) << 24);
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "Decode( UINT4 * output , UC * input , UI len )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "Decode( UINT4 * output , UC * input , UI len )::An error occured while encoding string to base64" ) , 1 ) );
                }
        }

Граф вызовов:

nitro::DEFINE_RELEASE_FUNCTION ( DynamicLibManager  ,
Release  ,
Manager   
)
nitro::DEFINE_RELEASING_DESTRUCTOR ( DynamicLibManager  ,
Release   
)
nitro::DEFINE_SQUARE_BRACE_OPERATOR_REF_CURSOR ( nitro::DynamicLibLoader  ,
DynamicLibManager  ,
Manager   
)
nitro::DEFINE_SQUARE_BRACE_OPERATOR_REF_LOCATOR ( nitro::DynamicLibLoader  ,
DynamicLibManager  ,
Manager   
)
void nitro::DispatchBuffer ( const char *  Buffer,
std::vector< std::string > &  Lexemmas,
std::size_t  BufferSize,
std::list< nitro::BinaryData > &  CDATA 
)

Обработка строки с XMLем.

Аргументы:
Buffer - Строка с XMLем.
Lexemmas - Массив с токенами.
BufferSize - Размер буффера.
CDATA - Список объектов с бинарными данными XMLя.
Исключения:
nitro::exception - Кидает исключение этого типа при возникновении ошибки.
Автор:
Додонов А.А.

См. определение в файле xml.cpp строка 464

Перекрестные ссылки nitro::exception::code() и nitro::exception::what().

Используется в nitro::XMLFile::LoadXML() и nitro::XMLFile::LoadXMLFromANSIString().

        {
                try
                {
                        std::string                                             str;
                        bool                                                    ParamValue( false );
                        bool                                                    HeaderMustBeParsed( false );

                        if( BufferSize > 5 && strncmp( Buffer , "<?xml" , 5 ) == 0 )
                        {
                                HeaderMustBeParsed = true;
                        }

                        for( std::size_t i( 0 ) ; i < BufferSize ; i++ )
                        {
                                // проверяем а не пора ли уже обрабатывать заголовок
                                if( BufferSize >= i + 2 && strncmp( Buffer + i , "?>" , 2 ) == 0 && HeaderMustBeParsed )
                                {
                                        // тут нам тупо надо вытащить кодировку, чтобы знать какую локаль ставить
                                        for( std::size_t j( 0 ) ; j < Lexemmas.size() ; j++ )
                                        {
                                                if( Lexemmas[ j ] == "encoding" )
                                                {
                                                        setlocale( LC_CTYPE , ".1251" );
                                                }
                                        }
                                        HeaderMustBeParsed = false;
                                }

                                // пытаемся обработать секцию CDATA
                                if( strncmp( Buffer + i , "<![CDATA[" , 9 ) == 0 )
                                {
                                        const char *            EndCDATA( strstr( Buffer + i + 9 , "]]>" ) );
                                        if( EndCDATA == NULL )
                                        {
                                                throw( nitro::exception( "Illegal XML Structure" , 1 ) );
                                        }

                                        Lexemmas.push_back( std::string( "<![CDATA[" ) );
                                        CDATA.push_back( BinaryData( Buffer + i + 9 , EndCDATA - Buffer - i - 9 ) );
                                        i += EndCDATA - Buffer - 1 + 3;
                                        // обработка CDATA закончена
                                        continue;
                                }

                                // обрабатываем все остальные данные
                                if( isalnum( ( unsigned char )Buffer[ i ] ) || Buffer[ i ] == ':' || Buffer[ i ] == '_' )
                                {
                                        str.push_back( Buffer[ i ] );
                                }
                                else
                                {
                                        if( Buffer[ i ] == '"' && !ParamValue )
                                        {
                                                ParamValue = true;
                                                Lexemmas.push_back( "\"" );
                                                continue;
                                        }
                                        if( str.size() && !ParamValue )
                                        {
                                                Lexemmas.push_back( str );
                                                str = "";
                                        }
                                        if( isprint( Buffer[ i ] ) )
                                        {
                                                if( ParamValue )
                                                {
                                                        if( Buffer[ i ] == '"' )
                                                        {
                                                                Lexemmas.push_back( str );
                                                                ParamValue = false;
                                                                str = "\"";
                                                                Lexemmas.push_back( str );
                                                                str = "";
                                                        }
                                                        else
                                                        {
                                                                str.push_back( Buffer[ i ] );
                                                        }
                                                }
                                                else
                                                {
                                                        if( str.size() && Buffer[ i ] != ' ' )
                                                        {
                                                                Lexemmas.push_back( str );
                                                        }
                                                        if( Buffer[ i ] != ' ' && Buffer[ i ] != '\t' )
                                                        {
                                                                str = Buffer[ i ];
                                                                Lexemmas.push_back( str );
                                                        }
                                                        str = "";
                                                }
                                        }
                                }
                        }

                        if( ParamValue )
                        {
                                throw( nitro::exception( "Illegal XML Structure" , 1 ) );
                        }
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "DispatchBuffer( const char * Buffer , std::vector< std::string > & Lexemmas , std::size_t BufferSize )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "DispatchBuffer( const char * Buffer , std::vector< std::string > & Lexemmas , std::size_t BufferSize )::An error occured" ) , 1 ) );
                }
        }

Граф вызовов:

void nitro::Encode ( UC *  output,
UINT4 *  input,
std::size_t  len 
)

См. определение в файле string_utilities.cpp строка 483

Перекрестные ссылки nitro::exception::code() и nitro::exception::what().

Используется в MDFinal().

        {
                try
                {
                        UI i, j;
                        for (i = 0, j = 0; j < ( UI )len; i++, j += 4)
                        {
                                output[ j ] = (UC)(input[i]         & 0xff);
                                output[j+1] = (UC)((input[i] >>  8) & 0xff);
                                output[j+2] = (UC)((input[i] >> 16) & 0xff);
                                output[j+3] = (UC)((input[i] >> 24) & 0xff);
                        }
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "Encode( UC * output , UINT4 * input , UI len )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "Encode( UC * output , UINT4 * input , UI len )::An error occured while encoding string to base64" ) , 1 ) );
                }
        }

Граф вызовов:

const std::size_t nitro::END_QUOTED_FIELD (  ) 

Используется в nitro::CSVFile::ReadRecord().

const std::size_t nitro::END_RECORD (  ) 

Используется в nitro::CSVFile::ReadRecord().

static LogStream nitro::errorlog ( "./error.log"  ,
ASYNC_LOGGING   
) [static]
ALLOCATOR_DLL_ENTITY Allocator * nitro::GetAllocator ( void   ) 

Функция получения аллокатора.

Возвращает:
Указатель на аллокатор.
Автор:
Додонов А.А.

Используется в nitro::SharedPointer< managed_type >::SharedPointer().

MVC_DLL_ENTITY MVC * nitro::GetMainMVCObject ( void   ) 

Функция волучения доступа к главному объекту MVC.

Возвращает:
- Указатель на клавный объект MVC.
Исключения:
nitro::exception - В случае ошибки кидается исключение этого типа с описанием ошибки.
Автор:
Додонов А.А.

Используется в nitro::Application::OnInit().

void* nitro::HighLevelThreadFunction ( void *  Param  ) 

См. определение в файле thread.cpp строка 27

Используется в nitro::Thread::Run().

        {
                try
                {
                        ( ( Thread * )Param )->ThreadFunction();
                        return( NULL );
                }
                catch( nitro::exception e )
                {
                }
                catch( ... )
                {
                }

                return( NULL );
        }

bool nitro::IsTagName ( std::string  Lexemma  ) 

См. определение в файле xml.cpp строка 15

Используется в nitro::XMLTag::IsClosingTag(), nitro::XMLTag::LoadXML(), nitro::XMLFile::ParseHeader() и nitro::XMLTag::ProcessAttributes().

        {
                if( isdigit( Lexemma[ 0 ] ) )return( false );

                if( Lexemma == "/" )return( false );

                for( size_t i( 0 ) ; i < Lexemma.size() ; i++ )
                {
                        if( isalnum( ( unsigned char )Lexemma[ i ] ) || Lexemma[ i ] == '_' || Lexemma[ i ] == ':' )
                        {
                                // nop
                        }
                        else
                        {
                                return( false );
                        }
                }

                return( true );
        }

void nitro::MDFinal ( UC  digest[16],
MD5_CTX *  context 
)

См. определение в файле string_utilities.cpp строка 687

Перекрестные ссылки nitro::exception::code(), nitro::MD5_CTX::count, Encode(), MDUpdate(), PADDING, nitro::MD5_CTX::state и nitro::exception::what().

Используется в nitro::Encoders::md5().

        {
                try
                {
                        UC                              bits[ 8 ];
                        UI                              index , padLen;
                        // Сохраняем число бит
                        Encode( bits , context->count , 8 );
                        // Подбиваем до 56 по модулю 64
                        index = ( UI )( ( context->count[ 0 ] >> 3 ) & 0x3f );
                        padLen = ( index < 56 ) ? ( 56 - index ) : ( 120 - index );
                        MDUpdate( context , PADDING , padLen );
                        // Добавляем длину (перед подбивкой)
                        MDUpdate( context , bits , 8 );
                        // Сохраняем состояние в цифровой строке
                        Encode( digest , context->state , 16 );
                        // Обнуляем чувствительную информацию
                        memset( ( POINTER )context , 0 , sizeof( * context ) );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "MDFinal( UC digest[ 16 ] , MD5_CTX * context )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "MDFinal( UC digest[ 16 ] , MD5_CTX * context )::An error occured while encoding string to base64" ) , 1 ) );
                }
        }

Граф вызовов:

void nitro::MDInit ( MD5_CTX *  Context  ) 

См. определение в файле string_utilities.cpp строка 716

Перекрестные ссылки nitro::MD5_CTX::count и nitro::MD5_CTX::state.

Используется в nitro::Encoders::md5().

        {
                Context->count[ 0 ] = Context->count[ 1 ] = 0;
                // Загрузка "магических" инициирующих констант .
                Context->state[ 0 ] = 0x67452301;
                Context->state[ 1 ] = 0xefcdab89;
                Context->state[ 2 ] = 0x98badcfe;
                Context->state[ 3 ] = 0x10325476;
        }

void nitro::MDTransform ( UINT4  state[4],
UC  block[64] 
)

См. определение в файле string_utilities.cpp строка 615

Перекрестные ссылки nitro::exception::code(), Decode(), MDTransformF(), MDTransformG(), MDTransformH(), MDTransformI() и nitro::exception::what().

Используется в MDUpdate().

        {
                try
                {
                        UINT4                   a = state[ 0 ] , b = state[ 1 ] , c = state[ 2 ] , d = state[ 3 ] , x[ 16 ];
                         
                        Decode( x , block , 64 );
                        MDTransformF( state , x );
                        MDTransformG( state , x );
                        MDTransformH( state , x );
                        MDTransformI( state , x );
                         
                        state[ 0 ] += a;
                        state[ 1 ] += b;
                        state[ 2 ] += c;
                        state[ 3 ] += d;
                        // Обнуляем чувствительную информацию
                        memset( ( POINTER ) x , 0 , sizeof( x ) );
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "MDTransform( UINT4 state[ 4 ] , UC block[ 64 ] )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "MDTransform( UINT4 state[ 4 ] , UC block[ 64 ] )::An error occured while encoding string to base64" ) , 1 ) );
                }
        }

Граф вызовов:

void nitro::MDTransformF ( UINT4  s[4],
UINT4  x[16] 
)

См. определение в файле string_utilities.cpp строка 530

Перекрестные ссылки FF, S11, S12, S13 и S14.

Используется в MDTransform().

        {
                FF(s[0], s[1], s[2], s[3], x[ 0], S11, 0xd76aa478);     //  1
                FF(s[3], s[0], s[1], s[2], x[ 1], S12, 0xe8c7b756);     //  2
                FF(s[2], s[3], s[0], s[1], x[ 2], S13, 0x242070db);     //  3
                FF(s[1], s[2], s[3], s[0], x[ 3], S14, 0xc1bdceee);     //  4
                FF(s[0], s[1], s[2], s[3], x[ 4], S11, 0xf57c0faf);     //  5
                FF(s[3], s[0], s[1], s[2], x[ 5], S12, 0x4787c62a);     //  6
                FF(s[2], s[3], s[0], s[1], x[ 6], S13, 0xa8304613);     //  7
                FF(s[1], s[2], s[3], s[0], x[ 7], S14, 0xfd469501);     //  8
                FF(s[0], s[1], s[2], s[3], x[ 8], S11, 0x698098d8);     //  9
                FF(s[3], s[0], s[1], s[2], x[ 9], S12, 0x8b44f7af);     // 10
                FF(s[2], s[3], s[0], s[1], x[10], S13, 0xffff5bb1);     // 11
                FF(s[1], s[2], s[3], s[0], x[11], S14, 0x895cd7be);     // 12
                FF(s[0], s[1], s[2], s[3], x[12], S11, 0x6b901122);     // 13
                FF(s[3], s[0], s[1], s[2], x[13], S12, 0xfd987193);     // 14
                FF(s[2], s[3], s[0], s[1], x[14], S13, 0xa679438e);     // 15
                FF(s[1], s[2], s[3], s[0], x[15], S14, 0x49b40821);     // 16
        }

void nitro::MDTransformG ( UINT4  s[4],
UINT4  x[16] 
)

См. определение в файле string_utilities.cpp строка 551

Перекрестные ссылки GG, S21, S22, S23 и S24.

Используется в MDTransform().

        {
                GG(s[0], s[1], s[2], s[3], x[ 1], S21, 0xf61e2562);     // 17
                GG(s[3], s[0], s[1], s[2], x[ 6], S22, 0xc040b340);     // 18
                GG(s[2], s[3], s[0], s[1], x[11], S23, 0x265e5a51);     // 19
                GG(s[1], s[2], s[3], s[0], x[ 0], S24, 0xe9b6c7aa);     // 20
                GG(s[0], s[1], s[2], s[3], x[ 5], S21, 0xd62f105d);     // 21
                GG(s[3], s[0], s[1], s[2], x[10], S22, 0x02441453);     // 22
                GG(s[2], s[3], s[0], s[1], x[15], S23, 0xd8a1e681);     // 23
                GG(s[1], s[2], s[3], s[0], x[ 4], S24, 0xe7d3fbc8);     // 24
                GG(s[0], s[1], s[2], s[3], x[ 9], S21, 0x21e1cde6);     // 25
                GG(s[3], s[0], s[1], s[2], x[14], S22, 0xc33707d6);     // 26
                GG(s[2], s[3], s[0], s[1], x[ 3], S23, 0xf4d50d87);     // 27
                GG(s[1], s[2], s[3], s[0], x[ 8], S24, 0x455a14ed);     // 28
                GG(s[0], s[1], s[2], s[3], x[13], S21, 0xa9e3e905);     // 29
                GG(s[3], s[0], s[1], s[2], x[ 2], S22, 0xfcefa3f8);     // 30
                GG(s[2], s[3], s[0], s[1], x[ 7], S23, 0x676f02d9);     // 31
                GG(s[1], s[2], s[3], s[0], x[12], S24, 0x8d2a4c8a);     // 32
        }

void nitro::MDTransformH ( UINT4  s[4],
UINT4  x[16] 
)

См. определение в файле string_utilities.cpp строка 572

Перекрестные ссылки HH, S31, S32, S33 и S34.

Используется в MDTransform().

        {
                HH(s[0], s[1], s[2], s[3], x[ 5], S31, 0xfffa3942);     // 33
                HH(s[3], s[0], s[1], s[2], x[ 8], S32, 0x8771f681);     // 34
                HH(s[2], s[3], s[0], s[1], x[11], S33, 0x6d9d6122);     // 35
                HH(s[1], s[2], s[3], s[0], x[14], S34, 0xfde5380c);     // 36
                HH(s[0], s[1], s[2], s[3], x[ 1], S31, 0xa4beea44);     // 37
                HH(s[3], s[0], s[1], s[2], x[ 4], S32, 0x4bdecfa9);     // 38
                HH(s[2], s[3], s[0], s[1], x[ 7], S33, 0xf6bb4b60);     // 39
                HH(s[1], s[2], s[3], s[0], x[10], S34, 0xbebfbc70);     // 40
                HH(s[0], s[1], s[2], s[3], x[13], S31, 0x289b7ec6);     // 41
                HH(s[3], s[0], s[1], s[2], x[ 0], S32, 0xeaa127fa);     // 42
                HH(s[2], s[3], s[0], s[1], x[ 3], S33, 0xd4ef3085);     // 43
                HH(s[1], s[2], s[3], s[0], x[ 6], S34, 0x04881d05);     // 44
                HH(s[0], s[1], s[2], s[3], x[ 9], S31, 0xd9d4d039);     // 45
                HH(s[3], s[0], s[1], s[2], x[12], S32, 0xe6db99e5);     // 46
                HH(s[2], s[3], s[0], s[1], x[15], S33, 0x1fa27cf8);     // 47
                HH(s[1], s[2], s[3], s[0], x[ 2], S34, 0xc4ac5665);     // 48
        }

void nitro::MDTransformI ( UINT4  s[4],
UINT4  x[16] 
)

См. определение в файле string_utilities.cpp строка 593

Перекрестные ссылки II, S41, S42, S43 и S44.

Используется в MDTransform().

        {
                II(s[0], s[1], s[2], s[3], x[ 0], S41, 0xf4292244);     // 49
                II(s[3], s[0], s[1], s[2], x[ 7], S42, 0x432aff97);     // 50
                II(s[2], s[3], s[0], s[1], x[14], S43, 0xab9423a7);     // 51
                II(s[1], s[2], s[3], s[0], x[ 5], S44, 0xfc93a039);     // 52
                II(s[0], s[1], s[2], s[3], x[12], S41, 0x655b59c3);     // 53
                II(s[3], s[0], s[1], s[2], x[ 3], S42, 0x8f0ccc92);     // 54
                II(s[2], s[3], s[0], s[1], x[10], S43, 0xffeff47d);     // 55
                II(s[1], s[2], s[3], s[0], x[ 1], S44, 0x85845dd1);     // 56
                II(s[0], s[1], s[2], s[3], x[ 8], S41, 0x6fa87e4f);     // 57
                II(s[3], s[0], s[1], s[2], x[15], S42, 0xfe2ce6e0);     // 58
                II(s[2], s[3], s[0], s[1], x[ 6], S43, 0xa3014314);     // 59
                II(s[1], s[2], s[3], s[0], x[13], S44, 0x4e0811a1);     // 60
                II(s[0], s[1], s[2], s[3], x[ 4], S41, 0xf7537e82);     // 61
                II(s[3], s[0], s[1], s[2], x[11], S42, 0xbd3af235);     // 62
                II(s[2], s[3], s[0], s[1], x[ 2], S43, 0x2ad7d2bb);     // 63
                II(s[1], s[2], s[3], s[0], x[ 9], S44, 0xeb86d391);     // 64
        }

void nitro::MDUpdate ( MD5_CTX *  context,
UC *  input,
std::size_t  inputLen 
)

См. определение в файле string_utilities.cpp строка 646

Перекрестные ссылки nitro::MD5_CTX::buffer, nitro::exception::code(), nitro::MD5_CTX::count, MDTransform(), nitro::MD5_CTX::state и nitro::exception::what().

Используется в nitro::Encoders::md5() и MDFinal().

        {
                try
                {
                        UI index, partLen;
                        std::size_t i;
                        // Подсчитываем число байт по модулю 64.
                        index = (UI)((context->count[0] >> 3) & 0x3F);
                        // Модифицируем число бит.
                        if ((context->count[0] += ((UINT4)inputLen << 3))
                                < ((UINT4)inputLen << 3))
                                context->count[1]++;
                        context->count[1] += ((UINT4)inputLen >> 29);
                        partLen = 64 - index;
                        // Выполняем преобразование столько раз, сколько возможно.
                        if( ( UI )inputLen >= partLen )
                        {
                                memcpy( ( POINTER )&context->buffer[ index ] , ( POINTER )input , partLen );
                        MDTransform (context->state, context->buffer);
                        for( i = partLen ; i + 63 < inputLen ; i += 64)
                                MDTransform(context->state, &input[i]);
                                index = 0;
                        }
                        else
                                i = 0;
                        // Ввод остатка буфера
                        memcpy((POINTER)&context->buffer[index], (POINTER)&input[i],inputLen-i);
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "MDUpdate( MD5_CTX * context , UC * input , UI inputLen )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "MDUpdate( MD5_CTX * context , UC * input , UI inputLen ))::An error occured while encoding string to base64" ) , 1 ) );
                }
        }

Граф вызовов:

const std::size_t nitro::QUOTE_WAS_FOUND (  ) 

Используется в nitro::CSVFile::ReadRecord().

const std::size_t nitro::READ_DATA (  ) 

Используется в nitro::CSVFile::ReadRecord().

const std::size_t nitro::START_FIELD (  ) 

Используется в nitro::CSVFile::ReadRecord().

static LogStream nitro::stdlog ( "./system.log"  ,
SYNC_LOGGING   
) [static]
const std::size_t nitro::TRY_READ_NEXT (  ) 

Используется в nitro::CSVFile::ReadRecord().

template<class file_func_type , class directory_func_type >
void nitro::WalkThroughDirectory ( const std::string &  FolderPath,
file_func_type  FileFunc,
directory_func_type  DirectoryFunc,
const bool  Recursive = true 
)

Функция пробегает по всем вложенным директориям.

Аргументы:
FolderPath - Путь к сканируемой директории, концевой слэш может отсутствовать.
FileFunc - Функция, вызываемая для каждого найденного файла.
DirectoryFunc - Функция, вызываемая для каждой директории.
Recursive - Если true, то директории будут обходиться рекурсивно.
Исключения:
nitro::exception Кидает исключение этого типа с описанием ошибки.
Автор:
Додонов А.А.

См. определение в файле file_utilities.h строка 598

Перекрестные ссылки nitro::FSPath::AddEndSlash(), nitro::exception::code(), nitro::DirectoryAbstraction::FindFirst(), nitro::DirectoryAbstraction::FindNext(), nitro::DirectoryAbstraction::GetName(), nitro::DirectoryAbstraction::IsDirectory(), nitro::DirectoryAbstraction::IsDots() и nitro::exception::what().

Используется в CollectDirectoriesFromDirectory() и CollectFilesFromDirectory().

        {
                try
                {
                        nitro::DirectoryAbstraction             FileFinder;

                        std::size_t                                             Again( FileFinder.FindFirst( FolderPath ) );

                        while( Again == 0 )
                        {
                                if( FileFinder.IsDots() )
                                {
                                        Again = FileFinder.FindNext();
                                        continue;
                                }
                                
                                if( FileFinder.IsDirectory() )
                                {
                                        DirectoryFunc( nitro::FSPath::AddEndSlash( FolderPath ) + FileFinder.GetName() );

                                        if( Recursive )
                                        {
                                                WalkThroughDirectory( nitro::FSPath::AddEndSlash( FolderPath ) + FileFinder.GetName() , FileFunc , DirectoryFunc , Recursive );
                                        }
                                }
                                else
                                {
                                        FileFunc( nitro::FSPath::AddEndSlash( FolderPath ) + FileFinder.GetName() );
                                }

                                Again = FileFinder.FindNext();
                        }
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "template< class file_func_type , class directory_func_type >void WalkThroughDirectory( const std::string & FolderPath , file_func_type FileFunc , directory_func_type DirectoryFunc , const bool Recursive = true )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "template< class file_func_type , class directory_func_type >void WalkThroughDirectory( const std::string & FolderPath , file_func_type FileFunc , directory_func_type DirectoryFunc , const bool Recursive = true )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:


Переменные

const std::size_t nitro::ASYNC_LOGGING = 0 [static]

Асинхронное логирование.

Автор:
Додонов А.А.

См. определение в файле log_stream.h строка 47

const std::size_t nitro::DECIMAL = 10

Режим преобразований в десятичной системе счисления.

Автор:
Додонов А.А.

См. определение в файле string_utilities.h строка 1855

Используется в nitro::Converters::atoi() и nitro::Converters::itoa().

Allocator *ActiveAllocator & nitro::DefaultAllocator

См. определение в файле allocator.cpp строка 8

const std::size_t nitro::EXCEPTION_MESSAGE_LENGTH = 1024

См. определение в файле exception.h строка 36

Используется в nitro::exception::exception().

const std::size_t nitro::FA_FILE_APPEND = 16

Открытие файла в на запись с добавлением в конец.

Заметки:
Хотя бы один из флагов на чтение/запись должен всегда присутствовать.
Автор:
Додонов А.А.

См. определение в файле file_abstraction.h строка 149

Используется в nitro::FileAbstraction::Open() и nitro::LogStream::Reset().

const std::size_t nitro::FA_FILE_BEGIN = 0

Режим поиска позиции курсора в файле. Курсор устанавливается от начала файла.

Автор:
Додонов А.А.

См. определение в файле file_abstraction.h строка 49

Используется в nitro::CSVFile::AppendRecord(), nitro::File::FileSize(), nitro::UnTARAbstraction::GetCountOfFiles(), nitro::UnTARAbstraction::GotoFirstFile(), nitro::FileAbstraction::Open(), nitro::CSVFile::ReadRecord() и nitro::FileAbstraction::Seek().

const std::size_t nitro::FA_FILE_BINARY = 1

Открытие файла в бинарном режиме.

Автор:
Додонов А.А.

См. определение в файле file_abstraction.h строка 85

Используется в nitro::File::ForceCreateFile(), nitro::UnTARAbstraction::OpenFile(), nitro::CSVFile::OpenFile(), nitro::LogStream::Reset(), nitro::File::SaveBinDataToFile(), nitro::XMLFile::SaveXML() и nitro::UnZIPAbstraction::UnZIPFile().

const std::size_t nitro::FA_FILE_CURRENT = 1

Режим поиска позиции курсора в файле. Курсор устанавливается от текущей позиции курсора.

Автор:
Додонов А.А.

См. определение в файле file_abstraction.h строка 61

Используется в nitro::UnTARAbstraction::GetCountOfFiles(), nitro::FileAbstraction::Seek() и nitro::UnTARAbstraction::SetReadCursor().

const std::size_t nitro::FA_FILE_END = 2

Режим поиска позиции курсора в файле. Курсор устанавливается от конца файла.

Автор:
Додонов А.А.

См. определение в файле file_abstraction.h строка 73

Используется в nitro::CSVFile::AppendRecord(), nitro::File::FileSize(), nitro::FileAbstraction::Open() и nitro::FileAbstraction::Seek().

const std::size_t nitro::FA_FILE_READ = 4

Открытие файла в на чтение. Файл должен существовать.

Заметки:
Хотя бы один из флагов на чтение/запись должен всегда присутствовать.
Автор:
Додонов А.А.

См. определение в файле file_abstraction.h строка 117

Используется в nitro::File::LoadBinDataFromFile(), nitro::FileAbstraction::Open(), nitro::UnTARAbstraction::OpenFile(), nitro::CSVFile::OpenFile() и nitro::FileAbstraction::Read().

const std::size_t nitro::FA_FILE_TEXT = 2

Открытие файла в текстовом режиме.

Заметки:
В данный момент не используется.
Автор:
Додонов А.А.

См. определение в файле file_abstraction.h строка 101

const std::size_t nitro::FA_FILE_TRUNCATE = 32

Удаление содержимого файла при открытии.

Заметки:
Хотя бы один из флагов на чтение/запись должен всегда присутствовать.
Автор:
Додонов А.А.

См. определение в файле file_abstraction.h строка 165

Используется в nitro::FileAbstraction::Open(), nitro::File::SaveBinDataToFile(), nitro::XMLFile::SaveXML() и nitro::UnZIPAbstraction::UnZIPFile().

const std::size_t nitro::FA_FILE_WRITE = 8

Открытие файла в на запись.

Заметки:
Хотя бы один из флагов на чтение/запись должен всегда присутствовать.
Автор:
Додонов А.А.

См. определение в файле file_abstraction.h строка 133

Используется в nitro::File::ForceCreateFile(), nitro::FileAbstraction::Open(), nitro::UnTARAbstraction::OpenFile(), nitro::CSVFile::OpenFile(), nitro::LogStream::Reset(), nitro::File::SaveBinDataToFile(), nitro::XMLFile::SaveXML(), nitro::UnZIPAbstraction::UnZIPFile() и nitro::FileAbstraction::Write().

const std::size_t nitro::HEXADECIMAL = 16

Режим преобразований в шестнадцатиричной системе счисления.

Автор:
Додонов А.А.

См. определение в файле string_utilities.h строка 1867

Используется в nitro::Converters::atoi() и nitro::Converters::itoa().

См. определение в файле mvc_core.cpp строка 556

const std::size_t nitro::OCTAL = 8

Режим преобразований в восьмеричной системе счисления.

Автор:
Додонов А.А.

См. определение в файле string_utilities.h строка 1843

Используется в nitro::Converters::atoi(), nitro::UnTARAbstraction::ExtractFile(), nitro::UnTARAbstraction::GetCountOfFiles(), nitro::Converters::itoa() и nitro::UnTARAbstraction::SetReadCursor().

UC nitro::PADDING[64] [static]
Инициализатор
 {0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
        0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
        0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
        0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
        0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
                                                        0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
                                                        0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
                                                        0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 }

См. определение в файле string_utilities.cpp строка 447

Используется в MDFinal().

См. определение в файле memory_handler.cpp строка 118

const std::size_t nitro::SYNC_LOGGING = 1 [static]

Синхронное логирование.

Автор:
Додонов А.А. Синхронное логирование.
Dodonov A.A.

См. определение в файле log_stream.h строка 59

Используется в nitro::LogStream::Reset().


Generated by  doxygen 1.6.1