TPIE - The Templated Portable I/O Environment
The TPIE (Templated Portable I/O Environment) library is a tool box providing efficient and convenient tools to ease the implementation of algorithms and data structures on very large sets of data.
Project status
As of 2021, this project does not see much development, but it is used heavily in production. There has not been a TPIE release for a long time, but the master branch is very stable and is unlikely to see major breaking changes.
Table of Contents
Documentation
For help, installation, usage and documentation, visit the TPIE homepage; the API documentation is also hosted there and on GitHub pages.
Dependencies
TPIE has a mandatory dependency on the Boost library and requires a C++ compiler that supports the 14 standard (e.g. GNU 7+ and Clang 10+). Furthermore, optionally TPIE can use the Snappy, LZ4, and ZSTD compression algorithms, if available.
Usage
Building TPIE is done entirely with CMake.
In your project
Assuming this repository is cloned into the external/tpie folder of your project, then add TPIE as a subdirectory in your own CMakeLists.txt.
add_subdirectory (external/tpie tpie)
TPIE is then linked to each target executable of choice.
add_executable(<target> <source>)
target_link_libraries(<target> tpie)
set_target_properties(<target> PROPERTIES CXX_STANDARD 14)
Then build your project with CMake. For other ways to install TPIE, see Compiling and installing TPIE in the documentation.
Unit tests
To compile the entire project and run the unit tests execute the following commands.
# Compile entire TPIE project
mkdir build
cd build
cmake -D CXX_STANDARD 14 ..
# Compile tests
make
# Run unit tests
ctest
Examples
The example/helloworld.cpp provides a rudementary example for how to use TPIE, assuming it has been installed. The apps/ folder includes multiple non-trivial examples. To compile and run any of the CMake enabled examples in apps execute the following commands
# CMake
mkdir build
cd build
cmake -D CXX_STANDARD 14 ..
# Compile
cd apps/<app>/
make
# Run
./<app>
License
The software and documentation files in this repository are provided under the LGPL 3.0 License.