Here is a brief but full overview of features of the library:
- Containers:
block.h
,map.h
,quiet_hash_map.h
,quiet_list.h
,quiet_map.h
,quiet_ring.h
,quiet_vector.h
,string.h
,vector.h
- Definitions:
constants.h
,types.h
- Encoding library:
encoding.h
- Mathematics:
fft.h
,gauss.h
- File utilities:
file.h
,mapping.h
- Hash algorithms:
fnv1a.h
,md5.h
- Networking:
ip.h
,tcp.h
,udp.h
- Databases:
n2st_database.h
,s2st_database.h
- Neuronal networks:
neuro.h
- High-performance computing:
parallel.h
,matrix.h
- RAII wrapper:
resource.h
- Source and sink abstractions:
sink.h
,source.h
- Cross-platform versions of standard C functions:
str.h
,print.h
Installation was designed to be super-easy and super-flexible at the same time.
Easy way: templates and inlines will work right out of the box. To use non-template and non-inline methods, include ironic.cpp
to your project.
Flexible way: there is a way to reduce compile time and compile parts Ironic library with different options, but for this a little theory is needed. The code is divided into three groups:
- Inline - it's implementation shall always be present in each
.cpp
file. - Template - it's implementation shall always be present and used in one or more
.cpp
files. Note thattemplate class ir::EXAMPLE<int>
is also an "usage" and will force the compiler to compile all methods ofEXAMPLE<int>
class. - Non-inline and non-template - it's implementation shell always be present in one
.cpp
file.
So the modes of compilation and correspondent macros are:
#define IR_INCLUDE 'n'
will include no implementations. The compiler might complain aboutinline function is not implemented
or equivalent warning.#define IR_INCLUDE 'i'
will include only implementation of inline functions.#define IR_INCLUDE 't'
will include implementation of inline and template functions (default behavior).#define IR_INCLUDE 'a'
will include include all implementations.
Also if you define IR_EXCLUDE_%EXAMPLE%
the %EXAMPLE%
implementation will be not included. But if you define IR_EXCLUDE
, the compiler will include only implementations marked with IR_INLCUDE_%EXAMPLE%
.
The code is tested for Windows x86 and x64, Linux x64 and Linux ARMv7.
For some classes Natvis files are provided. Include these files to your Visual Studio project and enjoy debugging.
Doxygen documentation is provided. I would recommend to start with Modules page.