Skip to content

This is a dependency-free cross-platform C++ library with various general-purpose utilities, which aims to abstract away platform-specific code and provide a simple and easy-to-use interface.

License

Notifications You must be signed in to change notification settings

NextLegacy/BoilingHotWater

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BoilingHotWater

Pretty accurate representation of the disk utilization :)

made with 🔥 by @Sivery

Abstract

This is a dependency-free cross-platform C++ library with various general-purpose utilities, which aims to abstract away platform-specific code and provide a simple and easy-to-use interface.

It's worth mentioning that it is currently under development; consequently, eveything is subject to change and may not work as intendent, furthermore, the only supported platform currently is Windows.

Originally, I wrote this library for my game engine, TeaPot, hence the name BoilingHotWater. I decided to split it off into its own repository to facilitate its use in future projects of mine.

This is pretty much just here so that I can get my hand on various concepts and algorithms and implement them by myself to get a good look and understanding of how they work; I thought: before I throw in a bunch of libraris on my projects, I may as well, for the sake of learning a thing or two, reinvent the wheel in the process.

Feel free to grab code snippets or the whole library if you find it useful, but keep in mind that it is still under development and may not be suitable for production use.

Table of Contents

Currently Supported Platforms

  • Windows
  • Linux
  • MacOS
  • Web (via Emscripten)

Features

A quick overview of partially implemented and planed features:

  • Reflection
  • Entity Component System
  • Threading
  • Random Number Generation (Xoshiro256**)
  • Serialization (JSON)
  • Logging (subject to change)
  • File Handling (gets the job done, but is not recommended at its current state)
  • String Utilities
  • Time
  • Math (Vector, Matrix, Quaternion, etc.)
  • Networking
  • ... and more to come!

Examples

There are currently no examples, apart from my game engine TeaPot, that utilize this library.

Build and Install

CMake

This library uses CMake as its build system.

To build and Install the library, you can run the following commands:

# Explicitly specify a build directory.
cmake -B build

# Optionally, you can specify the install directory. By default this will be set to "/usr/local" on UNIX, and "<SystemDrive>/Program Files/<ProjectName>" on Windows
cmake -B build -D CMAKE_INSTALL_PREFIX=PATH_TO_INSTALL_DIR

# Build the library in Release mode. The Library will be installed in the install directory.
cmake --build build --target INSTALL --config Release

# Use the custom target INSTALL_EMSCRIPTEN to install the library for web.
cmake --build build --target INSTALL_EMSCRIPTEN

afterwards, you can link the library to your project by adding the following to your CMakeLists.txt:

find_package(BoilingHotWater REQUIRED)
target_link_libraries(<your-target> PUBLIC BoilingHotWater::BoilingHotWater)

make sure to set the BoilingHotWater_DIR to the install directory if you have specified a custom install directory. You may do this trough the folwing ways:

# Set the BoilingHotWater_DIR environment variable to the install directory
cmake -D BoilingHotWater_DIR=PATH_TO_INSTALL_DIR

or

set(BoilingHotWater_DIR PATH_TO_INSTALL_DIR)

or

list(APPEND CMAKE_PREFIX_PATH path/to/BoilingHotWater/install)

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

This is a dependency-free cross-platform C++ library with various general-purpose utilities, which aims to abstract away platform-specific code and provide a simple and easy-to-use interface.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •