Nucleus is a cross-platform C library for Windows 10, Cygwin, Linux, and macOS protecting from compiler and operating system idiosyncracies.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
buildsystem
ci/appveyor
demo
dependencies
documentation
library
test
.gitignore
.gitmodules
.travis.yml
CMakeLists.txt
COPYING
LICENSE
LICENSE.md
README.md
appveyor.yml

README.md

Nucleus

Nucleus is a cross-platform C library for Windows 10, Cygwin, Linux, and macOS protecting from compiler and operating system idiosyncracies. It provides aggregate, annotation, atomic operation, concurrency, command-line, file system, memory management, and Unicode functionality, and more.

Nucleus is made available publicly under the MIT license on Github.

Build instructions

Download or checkout the source code from https://github.com/primordialmachine/nucleus. See below for build instructions for some of the individual environments.

*The following build instructions and build options pertain to all products from the Nucleus series. All products accept the build options described here. The description of additional build options specific to a product are described in its documentation. The name of this product in the build system is Nucleus.

The above build instructions perform in-source builds. However, it is recommended to perform out-of-source builds instead. For more information on out-of-source builds can be found here.

Documentation

The documentation of Nucleus is in the process of being converted to Markdown for being directly available on Github.

Nucleus Annotations Module

The Nucleus Annotations module provides annotations for functions, parameters, and expressions.

Reference

The following annotations are currently available.

Nucleus Memory Module

The Nucleus Memory Module provides functionality to allocate and deallocate memory blocks, as well as valuation and manipulation of memory blocks and their contents.

For the purpose of this documentation, any consecutive - possibly empty - sequence of Bytes starting at some address is called a memory block. As usual with C, a pointer p to the first Byte of a memory block increment by 1 will point to the second Byte, a pointer p to the second Byte increment by 1 will point to the third Byte an so on. The number of Byte variables of a memory block is the size of a memory region. The Nucleus memory module provides functionality to allocate and deallocate memory blocks, as well as valutation and manipulation of memory blocks and their contents.

The tasks of allocation and deallocation of memory blocks, valuation and manipulation of memory blocks and their contents are in C frequently performed over memory blocks of which their sizes are specified in terms of array semantics: The memory block is considered as an array and it size is specified as its number of elements and the size, in Bytes, of an element. Consequently, each function taking a specification of a size of a memory block as a single value, is accompanied by function taking the specification of the size of the memory block as two values. In this API, you You can easily find the related functions:

  • The functions taking the size, in Bytes, do not include the word Array in their function names,
  • the functions taking the number of elements and the element size, in Bytes, include the word Array somewhere in their function names.

The Array-functions do not only exist for convenience, but also for safety: These function fail if the multiplication of the number of elements and the element size would overflow.

Reference

Nucleus Floating Point Module

The Nucleus Floating Point Module provides functionality to evaluate and generate single, double, and quadruple precision floating point values.

Reference

Nucleus Hash Module

The Nucleus Hash provides functionality to compute hash values from boolean values, numeric values, pointer values, and Byte array values as well hash value combinators.

Reference

Nucleus Atomic Module

The Nucleus Atomic Module provides atomic operations.

Reference

Nucleus File System Module

The Nucleus File System Module provides functionality related to the filesystem.

Reference

Nucleus Collections Module DRAFT

The Nucleus Collections Module provides collections e.g. arrays, deques. Any collection provided supports Its documentation can be found here.

Reference

Continuous Integrations Status Maxtrix

master
Travis Build Status
AppVeyor Build status