Core#

yup_core is the foundation every other YUP module builds on. It provides strings and text, containers, memory management, files and streams, math, error handling, time, data interchange (var/JSON/XML), system information, and networking - the portable C++ backbone of the framework.

Modules covered: yup_core, yup_simd.

Note

Threading lives in yup_core too (Thread, CriticalSection, ThreadPool, lock-free FIFOs, …), but it is documented in its own Multithreading area to keep the audio/UI thread guidance together.

In this area#

  • Strings & text - String, StringArray, StringPairArray, Identifier, StringRef, character pointers, and Base64.

  • Containers - Array, OwnedArray, ReferenceCountedArray, HashMap, SortedSet, Span, AbstractFifo, and ListenerList.

  • Memory - HeapBlock, MemoryBlock, ReferenceCountedObject, WeakReference, smart pointers, Singleton, leak detection, and Atomic.

  • Files & streams - File, directory iteration, InputStream/OutputStream, memory streams, ZIP, and GZIP.

  • Results & error handling - Result and ResultValue<T> for fallible operations.

  • Maths - Range, NormalisableRange, Random, BigInteger, Expression, and statistics helpers.

  • Time - Time, RelativeTime, and PerformanceCounter.

  • Data interchange - var, DynamicObject, and JSON.

  • XML - the XmlElement / XmlDocument DOM and parser.

  • Serialization - the SerialisationTraits framework, BinaryArchive, and var/JSON conversion.

  • System & application - SystemStats, Uuid, ConsoleApplication, runtime permissions, and platform macros.

  • Networking - URL, WebInputStream, Socket, IPAddress, and NamedPipe.

Conventions#

  • American English throughout: Color, center, initialize.

  • Fluent, non-mutating variants: many types offer a mutating method plus a -ed/with* counterpart that returns a new value (e.g. String::trim()/trimmed, Range::withStart).

  • Result / ResultValue<T> for operations that can fail; assertions (jassert) for programming errors.

  • RAII everywhere: prefer the smart pointers and scope guards in Memory over manual new/delete.