RoseLeDark.Collections.Missings
0.55.5
dotnet add package RoseLeDark.Collections.Missings --version 0.55.5
NuGet\Install-Package RoseLeDark.Collections.Missings -Version 0.55.5
<PackageReference Include="RoseLeDark.Collections.Missings" Version="0.55.5" />
<PackageVersion Include="RoseLeDark.Collections.Missings" Version="0.55.5" />
<PackageReference Include="RoseLeDark.Collections.Missings" />
paket add RoseLeDark.Collections.Missings --version 0.55.5
#r "nuget: RoseLeDark.Collections.Missings, 0.55.5"
#:package RoseLeDark.Collections.Missings@0.55.5
#addin nuget:?package=RoseLeDark.Collections.Missings&version=0.55.5
#tool nuget:?package=RoseLeDark.Collections.Missings&version=0.55.5
📘 SystemEx.Collections.Generic
A low‑level extension framework for .NET providing STL‑style iterators, traversal interfaces, random‑access iteration, advanced generic data structures, fixed‑size buffers, maps, multimaps, and a modular cache/RAID subsystem.
Designed for deterministic, high‑performance, byte‑level applications without external dependencies.
✨ Overview
This library extends the .NET collection ecosystem with:
- Iterator interfaces inspired by C++ STL
- Generic algorithms (Distance, Find, LowerBound, Reverse, Rotate, etc.)
- Advanced collection types (Map, MultiMap, SortedMap, Deque, Queue, Stack, Array, FixedArray, FixedMap)
- Node‑based traversal structures
- Deterministic, fixed‑size memory containers
- Cache and RAID‑style memory layouts
- Utility modules for comparison, endian‑aware random, bit operations, and layout validation
All components are allocation‑controlled, predictable, and engine‑oriented.
📦 Installation
NuGet
dotnet add package RoseLeDark.Collections.Missings
Manual
- Clone the repository
- Add the project reference
- Import the namespaces:
using SystemEx.Collections.Generic;
using SystemEx.Utils;
🧩 Iterator System
The library provides a full iterator hierarchy:
ITerator<T>IForwardIterator<T>IBidirectionalIterator<T>IRandomAccessIterator<T>- Node‑based iterators for tree and list structures
These iterators support:
Forward(),Back(),Advance(n)Clone()for safe traversalCurrentelement accessIsBegin,IsEnd- Structural traversal via
Node,NodeChain,NodeRange,NodeSlice,GroupNode,StarNode
🧮 Generic Algorithms
Located under SystemEx.Utils.Iterator and SystemEx.Utils:
Distance(first, last)Find(first, last, value, cmp)LowerBound(first, last, value, cmp)UpperBound(first, last, value, cmp)Reverse(first, last)Rotate(first, middle, last)ForEach(first, last, action)Swap,Fill,FillNCopy,MoveMin,Max,ClampMinElement,MaxElement,MinMaxElementLexicographicalCompare
These algorithms behave similarly to STL equivalents, but are implemented in pure C# with zero allocations.
📚 Collections
Core Types
Vector<T>FixedVector<T>Deque<T>Queue<T>Stack<T>BinQueue<T>Set<T>MultiSet<T>UnorderedMultiSet<T>UnorderedSet<T>
Map System
Map<TKey, TValue>MultiMap<TKey, TValue>SortedMap<TKey, TValue>FixedMap<TKey, TValue>IMap,ISortedMap,INode,ITraverse
Tuple & Pair Types
ITuplePair<T1, T2>:ITupleTriple<T1, T2, T3>:ITupleQuad<T1, T2, T3, T4>:ITupleTuple:ITupleTupleList<T>where T :ITuple
🧱 Cache & RAID Subsystem (Future Release)
CacheCacheMirroredCacheStripped
These provide deterministic, fixed‑size memory layouts suitable for:
- engine subsystems
- device memory staging
- zero‑copy pipelines
- shared memory regions
🛠 Utilities
Located under SystemEx.Utils:
BitUtilsLayout(struct layout validation)Random(endian‑aware random generation)Utils(general helpers)CompareResult+CompFunc<T>
📁 Project Structure
SystemEx/
├─ Device/ [ namespace SystemEx.Device ]
│ ├─ IKernel.cs
│ ├─ RamKernel.cs
│ ├─ Interop/ [ namespace SystemEx.Device.Interop ]
│ │ ├─ IDeviceSharedBackend.cs
│ │ ├─ RamKernelLoader.cs
│ │ └─ RamSharedBackend.cs
│ └─ Memory/
│ ├─ DeviceBuffer.cs
│ └─ DeviceSharedBuffer.cs
├─ Base [ namespace SystemEx ]
│ ├─ Buffer.cs
│ ├─ FlexSpan.cs
│ ├─ IComparableEx.cs
│ ├─ IRange.cs
│ ├─ Math.cs
│ ├─ NumberRange.cs
│ ├─ NumberRangeIterrator.cs
│ ├─ NumberRangeStepper.cs
│ └─Triple.cs
├─ Collections/
│ └─ Generic/ [ namespace SystemEx.Collections.Generic ]
│ ├─ Vector.cs
│ ├─ BinQueue.cs
│ ├─ Cache.cs
│ ├─ Cluster.cs
| ├─ ContainerFlexSpan.cs
│ ├─ Deque.cs
│ ├─ Find.cs
│ ├─ FixedVector.cs
│ ├─ FixedMap.cs
│ ├─ GroupNode.cs
│ ├─ Map.cs
│ ├─ MirroredCache.cs
│ ├─ MultiMap.cs
│ ├─ MultiSet.cs
│ ├─ MultiTupleMap.cs
│ ├─ Node.cs
│ ├─ NodeChain.cs
│ ├─ NodeRange.cs
│ ├─ NodeSlice.cs
│ ├─ Pair.cs
│ ├─ PriorityQueue.cs
│ ├─ Quad.cs
│ ├─ Queue.cs
│ ├─ Set.cs
│ ├─ SortedMap.cs
│ ├─ SortedMultiMap.cs
│ ├─ SortedMultiTupleMap.cs
│ ├─ SortedTupleList.cs
│ ├─ SortedTupleMap.cs
│ ├─ Stack.cs
│ ├─ StarNode.cs
│ ├─ StrippedCache.cs
│ ├─ Triple.cs
│ ├─ Tuple.cs
│ ├─ TupleMap.cs
│ ├─ TypeBuffer.cs
│ └─ TupleList.cs
├─ Drawing/ [ namespace SystemEx.Drawing ]
| ├─ Canvas.cs
| ├─ ColorHDR.cs
| ├─ ColorHSV.cs
| ├─ ColorR8G8B8.cs
| ├─ ColorR10G10B10.cs
| ├─ ColorR16G16B16.cs
| ├─ ... CMY, NCol, XYZ, YUV
| ├─ Light.cs
| └─ Colors.cs
├─ IO/ [ namespace SystemEx.IO ]
| ├─ CachStream.cs
| └─ WriteStream.cs
├─ Random/ [ namespace SystemEx.Random ]
| ├─ Isaac32Engine.cs
| └─ Randx.cs
├─ Numeric/ [ namespace SystemEx.Numeric ]
| ├─ vec{2,3,4]f.cs
| ├─ vec{2,3,4]d.cs
| ├─ vec{2,3,4]i.cs
| ├─ quadf.cs
| ├─ quadd.cs
| ├─ m44f.cs
| ├─ m44d.cs
| ├─ DQuadv.cs
| ├─ AxisAngle.cs
| └─ Projection.cs
├─ Utils/ [ namespace SystemEx.Utils ]
│ ├─ Algorithm.cs
│ ├─ BitUtils.cs
│ ├─ Conversion.cs
│ ├─ Layout.cs
│ └─ Random.cs
├─ LICENSE.md
├─ CHANGELOG.md
├─ RoseLeDark.Collections.Missings.png
├─ RoseLeDark.Collections.Missings.svg
└─ README.md
📝 License
Licensed under the European Union Public Licence (EUPL) v1.2.
See the LICENSE.md file for details.
🚧 Status
Active development.
More iterator types, algorithms, and data structures will be added as needed.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
## [0.55.05] - 13.07.2026 -> Lacking
### CAUTION Very Important
- Marked all Array<T> types as obsolate !!! and:
- Add `Vector<T> : IContainerEx<T>`: A dynamic Vector implementation that supports optional auto-growth, indexed access, insertion, removal, traversal, and basic search operations. see c++ std::vector<T>
- Add `ref struct Set<T, TContainer>`:Defines a sorting action used by the Set wrapper. See c++ std::flat_set
- Add `ref struct Find<T, TContainer> where TContainer : IContainerEx<T>`: Provides search operations over a container implementing <see cref="IContainerEx{T}"/>. This struct performs non‑modifying lookups such as first/last occurrence, existence checks and counting matches.
for replace and easyble use. See Example: Example\VectorSet.cs and Example\VectorFind.cs
### Added
- Added `Half16`, a fully deterministic IEEE‑754 binary16 implementation with complete bit‑level arithmetic.
- Added `Blake3Hasher` (testing).
- Added new conversion helpers for all basic primitive types (`ToUInt`, `ToInt`, `ToUShort`, …), including offset‑based variants that allow reading values from a `byte[]` starting at a specific index.
- Added `IComparableEx<T>`, providing a strongly typed comparison contract compatible with `IComparable<T>` via integer‑backed `CompareResult`.
- Added `IHashable<T>`, a minimal interface for deterministic byte‑level serialization used by SystemEx hashing algorithms.
- Added fully documented `HashFactory` with support for attribute‑driven hash algorithm selection (`HashAlgorithmAttribute`) and automatic hasher instantiation via `Activator`.
- Added namespace `SystemEx.Numeric` containing the following numeric types:
- `vec2f`, `vec2d`, `vec2i`
- `vec3f`, `vec3d`, `vec3i`
- `vec4f`, `vec4d`, `vec4i`
- `quadf`, `quadd`
- `mat44f`, `mat44d`
- `rect`
- `plane`
- Added `GetEndian()` to the `Conversion` utilities to detect the system’s native endianness, allowing conversions to swap endianness only when necessary (e.g., inside `ToBytes(Endian endian)`).
### Changed
- Removed the `Endian` parameter from `IHash.Compute` and `IHash.ComputeLong`. Endianness is now defined solely by the hash object’s constructor.
- `RamSharedBackend.ReciveFromHardwareBuffer` now returns a copied buffer instead of the internal backend buffer to improve memory safety and prevent unintended external modifications.
### Deprecated – Hashable (scheduled for removal in version 0.60)
- The abstract base class Hashable has been marked as obsolete and is scheduled for complete removal in SystemEx 0.60.
- The class‑based hashing system is no longer recommended and has been superseded by the new attribute‑driven hashing architecture based on:
- IHashable<T> for deterministic byte serialization
- HashFactory for algorithm selection and hash computation
- The new hashing pipeline supports both classes and structs, avoids inheritance constraints, and provides a cleaner, more modular design.
- Marked all Array<T> types as obsolate !!!