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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RoseLeDark.Collections.Missings" Version="0.55.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RoseLeDark.Collections.Missings" Version="0.55.5" />
                    
Directory.Packages.props
<PackageReference Include="RoseLeDark.Collections.Missings" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RoseLeDark.Collections.Missings --version 0.55.5
                    
#r "nuget: RoseLeDark.Collections.Missings, 0.55.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RoseLeDark.Collections.Missings@0.55.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RoseLeDark.Collections.Missings&version=0.55.5
                    
Install as a Cake Addin
#tool nuget:?package=RoseLeDark.Collections.Missings&version=0.55.5
                    
Install as a Cake Tool

📘 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 traversal
  • Current element access
  • IsBegin, 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, FillN
  • Copy, Move
  • Min, Max, Clamp
  • MinElement, MaxElement, MinMaxElement
  • LexicographicalCompare

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

  • ITuple
  • Pair<T1, T2> : ITuple
  • Triple<T1, T2, T3> : ITuple
  • Quad<T1, T2, T3, T4> : ITuple
  • Tuple : ITuple
  • TupleList<T> where T : ITuple

🧱 Cache & RAID Subsystem (Future Release)

  • Cache
  • CacheMirrored
  • CacheStripped

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:

  • BitUtils
  • Layout (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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.

Version Downloads Last Updated
0.55.5 88 7/13/2026
0.50.0 108 7/2/2026
0.12.22 94 7/1/2026
0.11.4 96 7/1/2026
0.10.15 97 6/30/2026
0.10.12 95 6/30/2026
0.9.66 102 6/23/2026
0.9.64 101 6/23/2026
0.9.5 114 6/18/2026
0.8.1 113 6/4/2026
0.7.0 104 6/3/2026
0.5.0 125 5/28/2026

## [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 !!!