Home

Awesome

Mini Spin-X Library

Overview

Mini Spin-X is a cut down version of a "core" library I have been developing over the years to support my various coding projects, licensed under MIT. It has bunch of useful stuff like math library, xml parsing, loading/saving image files, file system, loading 3D assets, etc. for developing small programs. I have compiled it on different platforms, but because my main development environment is MSVC in Windows I only very occasionally check e.g. Linux/GCC. The library doesn't use STL but provides some alternatives e.g. for containers and has only few dependencies to external libs included in sxp_extlibs/ dir. Everything should be included and just compile as is without need to download other libs. MSVC project/solution files can be found in build/

Files & Dirs

sxp_src/core/ - Low-level core components

File/DirDescription
class.hGeneric class introspection and object management.
config.hThe library configuration file.
containers.hCollection of containers (e.g. array, list, deque, hash_map, etc.)
core.hThe most fundamental omnipresent core stuff. Always included either directly or indirectly.
crypto.hCryptographic functions (md5, sha256).
cstr.hLow-level c-string functions.
enum.incUsed to define enums with reflection.
expression.hMath expression parsing.
functor.hFunctor implementations.
inet.hNetwork stuff.
iterators.hFree iterators (e.g. for intrusive singly-linked lists.
main.hFor defining platform agnostic main().
memory.hMemory management classes.
meta.hMeta-programming stuff.
node_graph.hClasses for generic node graph.
preprocessor.hPreprocessor file parsing.
sort.hSorting functions.
str.hString management classes.
streams.hStream library (abstract writing/reading data).
utils.hJust a bucket of misc "utility" stuff.
xml.hXML parsing.
zip.hZIP file streams.

sxp_src/core/fsys/ - File system

File/DirDescription
cipher_fsys.hExtremely poor-security streams.
fsys.hFile system classes.
zip_fsys.hZIP file system implementation (read files straight from ZIP file).

sxp_src/core/math/ - Math library

File/DirDescription
bit_math.hBit twiddling hacks.
color.hColor classes (RGB/XYZ/YIQ/HSV) and functions.
fast_math.hFast-math hacks.
geo3.h3D geometry processing (calculating convex hull, bounding box)
math.hTemplated linear algebra classes (vector, matrix, quaternion, complex).
math_adv.h"Advanced" math.
monte_carlo.hSome Monte-Carlo sampling functions.
numeric.hNumeric type traits.
optics.hOptics functions (BRDF, reflections, etc.)
parametric.hParametric surfaces and lines (Bezier, Hermite, etc.)
simd_math.hSIMD-optimized linear algebra classes.
tform3.hHigher level 3D transform related classes (camera, affine transforms).
prim2/prim2.h2D primitives.
prim2/prim2_isect.h2D primitive intersection functions.
prim3/prim3.h3D primitives.
prim3/prim3_angle.h3D primitive angle functions.
prim3/prim3_bvol.h3D primitive bounding volume functions.
prim3/prim3_dist.h3D primitive distance functions.
prim3/prim3_isect.h3D primitive intersection functions.

sxp_src/core/mp/ - Multiprocessing library

File/DirDescription
mp.hAbstracted low-level multiprocessing funcs (atomics, threads, etc.)
mp_fiber.hFiber lib for co-operative multitasking.
mp_job_queue.hLight weight job queue.
mp_memory.hThread-safe memory classes.
mp_msg_queue.hThread-safe message queue for interthread communication.

sxp_src/core_engine/ - Higher "engine" level core components

File/DirDescription
mesh.hClasses for loading and managing 3D meshes.
texture.hClasses for loading and managing textures.
track_set.hClasses for loading and managing animation tracks.
loaders/Loaders for asset files (used by mesh.h, texture.h and track_set.h).

sxp_src/platform/ - Platform specific implementations

File/DirDescription
linux/Core component implementations for Linux/GCC (file system, SIMD, multithreading, network, etc.)
posix/Core component implementations for Posix
win/Core component implementations for Windows

License

Mini Spin-X Library is licensed under MIT license. See LICENSE for details.