Crate nstd

Crate nstd 

Source
Expand description

crates.io

§About

NSTD is a library that is meant to be cross-platform, and fairly safe (any function that can fail will return an error code indicating if it has or hasn’t) while having a plethora of features and functionality. The goal is to have one API for any platform, any language, and any use case.

§Platform support

The core module can be used ANYWHERE. It doesn’t rely on ANY other libraries, including standard libraries (except for the headers stddef.h and stdint.h). Other modules will work on most platforms and have been tested to build for Windows, macOS, Linux, and Redox.

§Module overview

  • nstd - Cross platform CFFI based library.
    • alloc - Heap allocation.
      • allocator - Custom vtable struct for memory allocation.
      • heap - Similar to Rust’s Box.
    • audio - Audio I/O.
      • def - Common audio-related types.
      • device - An audio I/O device handle.
      • host - A platform’s audio host.
      • player - An audio player.
      • queue - A queue for audio streams.
      • stream - An audio I/O stream.
    • collections - Collection types.
      • bit_mask - Customizable bit mask with a small memory footprint.
      • rc - Shared memory through a reference counter.
      • stack - A growable and shrinkable stack array type.
    • core - Contains modules that don’t require an operating system to be used.
      • char_types - Functions specific to character types.
      • cstr - C string examination.
      • def - Commonly used typedefs.
      • float_types - Functions specific to floating point types.
      • int_types - Functions specific to integer types.
      • math - Low level math.
      • platform - Platform identification.
      • pointer - Pointer type.
      • range - Range types.
      • slice - View into a memory.
      • str - UTF-8 string slice type.
    • env - Environment specific functionality and identification.
    • events - Event loops.
      • def - Common types that are used by the event system.
      • device_id - Type used to identify a device.
      • window_id - Type used to identify a window.
    • fs - File system.
      • file - File I/O.
    • gl - Low level graphics library.
      • buffer - GPU VRAM buffers.
      • command - Device commands.
        • buffer - GPU Command buffers.
        • encoder - GPU Command encoders.
      • def - Commonly used graphics related types.
      • device - Module for working with graphics devices.
        • handle - A handle to a graphics device.
        • info - Information about a graphics device.
      • instance - An instance of wgpu.
      • render - Rendering.
        • pass - Contains functions for working with a render pass.
        • pipeline - A rendering pipeline.
      • shader - GPU shader programs.
        • module - Shader modules.
      • state - The graphics library’s state machine.
      • surface - Interaction with the display’s surface.
        • config - The surface’s configuration.
        • texture - Surface textures.
      • texture - Module for working with textures.
        • format - A texture’s data format.
        • view - Texture views.
    • gui - Graphical user interface library.
      • display - A display/monitor handle.
      • window - Windows and forms.
    • image - Raw image data IO.
    • input - Keyboard/Mouse input.
      • key - Keyboard types.
      • mouse - Mouse types.
    • io - Standard I/O.
      • input_stream - Input stream type.
      • io_stream - Stream type for both input and output.
      • output_stream - Output stream type.
      • stderr - The standard error stream.
      • stdin - The standard input stream.
      • stdout - The standard output stream.
      • stream - Base stream type.
    • math - High level math.
    • net - Networking.
      • tcp - TCP networking.
      • udp - UDP networking.
    • os - Operating system specific functionality.
      • linux - OS support for Linux.
        • alloc - Low level memory allocation for Linux.
      • windows - OS support for Windows.
        • alloc - Low level memory allocation for Windows.
          • heap - Windows heap management.
        • def - Commonly used Windows typedefs.
        • io - Windows standard I/O.
        • thread - Thread support for Windows.
    • proc - Process management.
    • rand - Random value generation.
    • string - Dynamically sized UTF-8 encoded string.
    • thread - Threading API.
    • time - Library for getting system times.
    • vec - A dynamically sized array.

§How to build

cargo build --release --features ""

Where after “–features”, inside the quotation marks, you would list each module seperated by spaces and prefixed with “nstd_”, though the nstd_os module is a bit different, and has it’s own features such as nstd_os_alloc which can be enabled seperately, nstd_os is not required. nstd_core is built by default. For building nstd as a C library, you should also use the “clib” feature, to build the module for C ABI.

Example:

cargo build --release --features "clib nstd_alloc nstd_os nstd_os_io nstd_string"

Alternatively you can also use

cargo build --release --all-features

to build with all modules.

Modules§

allocnstd_alloc
Low level heap memory allocation APIs.
audionstd_audio
Audio I/O.
collectionsnstd_collections
Contains types for storing sorted or unsorted collections of data.
corenstd_core
Provides core functionality for nstd.
envnstd_env
Environment specific functionality and identification.
eventsnstd_events
Types and functions for handling nstd events.
fsnstd_fs
Directory management & file I/O.
glnstd_gl
Low level graphics library.
guinstd_gui
Graphical user interface library.
imagenstd_image
Raw image data IO.
inputnstd_input
Keyboard/Mouse input.
ionstd_io
Standard I/O.
mathnstd_math
High level math.
netnstd_net
Networking I/O.
osnstd_os
Operating system specific functionality.
procnstd_proc
Process management.
randnstd_rand
Random value generation.
stringnstd_string
Dynamically sized UTF-8 encoded string.
threadnstd_thread
Threading API.
timenstd_time
Library for getting system times.
vecnstd_vec
A dynamically sized array.