GATE
Introduction

Preamble

The GATE project is a C based library framework that shall provide platform-independent implementations of lower-level auxiliary functions. While most C libraries are only targeting Windows and Linux platforms, GATE code is designed to run within other operating systems with no or limited C standard library implementation.

The GATE C++ libraries are a thin layer of C++ classes around the C based implementation to simplify usage of lower-level C functions. Using a C API within C++ code allows code sharing of C++ logic between incompatible compilers (e.g. MSVC++ and g++).

GATE is also an interface study where I add all kinds of features I was missing in Win32 or POSIX like:

  • C-based object interfaces
  • unified streaming
  • coroutines
  • delegates
  • data containers, fields and dictionaries

Supported platforms

  • Windows API beginning with NT4
  • Windows CE (CE 5+)
  • Windows RT (experimental)
  • POSIX
  • Linux (GLIBC, MUSL-LIBC)
  • BSD (NetBSD, FreeBSD, OpenBSD)
  • Android (experimental)
  • FreeRTOS (experimental)
  • UEFI Bootservices (experimental)
  • DOS (experimental)
  • WebAssembly-Emscripten (experimental)

GATE libraries are designed with the concept of mandatory and optional features. Mandatory features are available on all platforms and are only depending on memory allocation support. Everything else that needs operating system support (or a native platform implementation) is only provided, if the platform supports it. GATE ensures that the entry points are available on all platforms, but they will return a NOT_IMPLEMENTED error at runtime when they are used. This allows application to compile function calls also on platform where they are not completely implemented.

This feature was a main goal to overcome problems I found with other libraries that still could not be compiled on a target platform due to a single function that I never wanted to invoke.

Supported compilers

  • MSVC
  • GCC
  • CLANG
  • WATCOM