EHS
Loading...
Searching...
No Matches
About

Much like boost.io this library is a replacement of the standard C/C++ libraries. It provides most features needed when designing applications in a cross-platform manner. The goal for this project is for it to be compiled and run on anything which means embedded hardware support.

This project does not fully follow the C++ standard.

Features

  • Audio IO/Processing/Manipulation
  • Image Processing/Manipulation
  • Databases
  • 3D Model & Mesh Processing/Manipulation
  • File IO
  • Basic File Monitoring
  • Console IO
  • 2/3/4D Vectors
  • 2x2/3x3/4x4 Matrices
  • Hardware/Software Level Math Functions
  • Smart Pointers
  • Threads
  • Mutexes
  • Semaphores
  • CPU information and features at runtime
  • HTTP(S) Socket Layer
  • ICMP & ICMPv6 Socket
  • TCP Socket
  • UDP Socket
  • COM (Serial) IO
  • UTF_8/16/32 Character Encoding
  • Spotify Integration
  • Twitch Integration
  • Json Parsing/Writing
  • User Friendly HID Input
  • Heap Garbage Collector
  • Linked List
  • Array
  • Vector
  • Asynchronous Task System
  • URI Parsing
  • USB (WIP)
  • Base64
  • SHA256

Supported Architectures

  • AMD64
  • AARCH64

Supported Operating Systems

  • Windows
  • Linux

Compiling/Building/Installing

Linux

Prerequisites

  • Arch Linux: sudo pacman -S gcc nasm cmake alsa-lib libxcb xcb-util-cursor
  • Debian Linux: sudo apt install gcc nasm cmake libasound2-dev libxcb1-dev libxcb-xinput-dev libxcb-cursor-dev

For building on the Raspberry Pi instead of the Netwide Assembler (NASM), GCC's Assembler is used.

Building

cmake -DCMAKE_BUILD_TYPE=Release -DLINUX_WINDOW_SYSTEM:STRING=XCB /path/to/source

The LINUX_WINDOW_SYSTEM variable in the first step can be either XCB for the X Window System or Wayland for the Wayland Window System. Wayland support is currently not fully supported yet, use only XCB.

Compiling

cmake --build /path/to/build --config Release

Installing

sudo cmake --install /path/to/build --prefix /usr/local

Windows

Prerequisites

vcpkg install - Use this command in the directory where vcpkg.json is located to download/install dependencies.

Building

cmake -A x64 -DCMAKE_BUILD_TYPE=Release /path/to/source

Compiling

cmake --build /path/to/build --config Release

Installing

cmake --install /path/to/build --prefix "C:/Program Files/EHS"

This will require the terminal to be running in administrator mode.

Simple Example

#include <ehs/EHS.h>
#include <ehs/io/Console.h>
int main()
{
// Simple identifying meta-data for the logger.
ehs::Initialize("Simple Example App", "Release", {1, 0, 0});
ehs::Console::Write_8("How old are you?"); // Write to the console in UTF_8 character encoding.
ehs::Str_8 response = ehs::Console::Read_8(); // Read from the console in UTF_8 character encoding.
if (!response.IsNum())
{
ehs::Console::Clear(); // Clear the console's buffer.
return main(); // Repeat process if given response is not a number.
}
ehs::UInt_8 age = response.ToDecimal<ehs::UInt_8>(); // Converts the string number into a number based primitive.
ehs::Console::Write("Your age is " + ehs::Str_8::FromNum(age) + "."); // Write the console with the age converted back to string.
return 0;
}
int main()
Definition StrToHash.cpp:5
static void Write_8(const Str_8 &str, const bool newLine=true)
Definition Console.cpp:224
static Str_8 Read_8(const UInt_64 bufferSize=1024)
Definition Console.cpp:460
static void Clear()
Clears the console.
Definition Console.cpp:549
static Str< Char_8, UInt_64 > FromNum(const SInt_64 num)
Definition Str.h:1399
bool IsNum() const
Definition Str.h:1166
I ToDecimal() const
Definition Str.h:1293
unsigned char UInt_8
Definition Types.h:43
EHS_LIB_IO void Initialize(Str_8 appName, Str_8 appVerId, const Version &appVer)
Definition EHS.cpp:34
EHS_LIB_IO void Uninitialize()
Definition EHS.cpp:85
Str< Char_8, UInt_64 > Str_8
Definition Str.h:1953