Event Horizon Suite
Go to file
2024-02-01 01:25:58 -08:00
.gitea/workflows First commit. 2024-01-31 22:28:19 -08:00
include/ehs First commit. 2024-01-31 22:28:19 -08:00
src First commit. 2024-01-31 22:28:19 -08:00
.gitignore First commit. 2024-01-31 22:28:19 -08:00
CMakeLists.txt First commit. 2024-01-31 22:28:19 -08:00
README.md Fixed Readme. 2024-02-01 01:25:58 -08:00

Compiling

Prerequisites

Windows

Linux

  • Arch Linux: sudo pacman -S gcc cmake
  • Debian Linux: sudo apt install gcc cmake

Building

Linux

  1. cmake -DCMAKE_BUILD_TYPE=Release -DLINUX_WINDOW_SYSTEM:STRING=XCB /path/to/source
  2. cmake --build /path/to/build --config Release

Simple Example

#include <ehs/EHS.h>
#include <ehs/io/Console.h>

void LogRaised(const ehs::Log& log)
{
    ehs::Array<ehs::Str_8> tags = log.GetTags(); // Retrieves the tags from the log such as line number, function, etc...

    ehs::Str_8 result = "{";

    for (ehs::UInt_32 i = 0; i < tags.Size(); ++i)
    {
        result += tags[i];
        if (i != tags.Size() - 1)
            result += ", ";
    }

    result += "} (" + ehs::Str_8::FromNum(log.GetCode()) + "): " + log.GetMsg(); // Adds the error code and message from the log.

    ehs::Console::Write_8(result);
}

ehs::SInt_32 Main(ehs::Str_8* appName, ehs::Str_8* appVerId, ehs::Version* appVer)
{
	// Simple identifying meta-data for the logger.
	*appName = "Simple Example App"; // The application's name
	*appVerId = "Release"; // The app's version prefix; i.e. Alpha, Beta or Release as an example.
	*appVer = {1, 0, 0}; // The app's version major, minor and patch number.
	
	ehs::Console::Attach(); // Attach to the console.
	
	ehs::Log::SetCallback(LogRaised); // Sets the log callback function for outputting the information to console.
	
	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(appName, appVerId, appVer); // 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;
}