Skip to content

JarkkoPFC/mini_sxp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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/Dir Description
class.h Generic class introspection and object management.
config.h The library configuration file.
containers.h Collection of containers (e.g. array, list, deque, hash_map, etc.)
core.h The most fundamental omnipresent core stuff. Always included either directly or indirectly.
crypto.h Cryptographic functions (md5, sha256).
cstr.h Low-level c-string functions.
enum.inc Used to define enums with reflection.
expression.h Math expression parsing.
functor.h Functor implementations.
inet.h Network stuff.
iterators.h Free iterators (e.g. for intrusive singly-linked lists.
main.h For defining platform agnostic main().
memory.h Memory management classes.
meta.h Meta-programming stuff.
node_graph.h Classes for generic node graph.
preprocessor.h Preprocessor file parsing.
sort.h Sorting functions.
str.h String management classes.
streams.h Stream library (abstract writing/reading data).
utils.h Just a bucket of misc "utility" stuff.
xml.h XML parsing.
zip.h ZIP file streams.

sxp_src/core/fsys/ - File system

File/Dir Description
cipher_fsys.h Extremely poor-security streams.
fsys.h File system classes.
zip_fsys.h ZIP file system implementation (read files straight from ZIP file).

sxp_src/core/math/ - Math library

File/Dir Description
bit_math.h Bit twiddling hacks.
color.h Color classes (RGB/XYZ/YIQ/HSV) and functions.
fast_math.h Fast-math hacks.
geo3.h 3D geometry processing (calculating convex hull, bounding box)
math.h Templated linear algebra classes (vector, matrix, quaternion, complex).
math_adv.h "Advanced" math.
monte_carlo.h Some Monte-Carlo sampling functions.
numeric.h Numeric type traits.
optics.h Optics functions (BRDF, reflections, etc.)
parametric.h Parametric surfaces and lines (Bezier, Hermite, etc.)
simd_math.h SIMD-optimized linear algebra classes.
tform3.h Higher level 3D transform related classes (camera, affine transforms).
prim2/prim2.h 2D primitives.
prim2/prim2_isect.h 2D primitive intersection functions.
prim3/prim3.h 3D primitives.
prim3/prim3_angle.h 3D primitive angle functions.
prim3/prim3_bvol.h 3D primitive bounding volume functions.
prim3/prim3_dist.h 3D primitive distance functions.
prim3/prim3_isect.h 3D primitive intersection functions.

sxp_src/core/mp/ - Multiprocessing library

File/Dir Description
mp.h Abstracted low-level multiprocessing funcs (atomics, threads, etc.)
mp_fiber.h Fiber lib for co-operative multitasking.
mp_job_queue.h Light weight job queue.
mp_memory.h Thread-safe memory classes.
mp_msg_queue.h Thread-safe message queue for interthread communication.

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

File/Dir Description
mesh.h Classes for loading and managing 3D meshes.
texture.h Classes for loading and managing textures.
track_set.h Classes 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/Dir Description
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.