You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Replace internal-only DataStructures containers with the standard library (std migration, stage 1) #59
Follow-up to #50 / #58. First of three stages replacing RakNet's homegrown DataStructures::* containers (Source/include/mafianet/ds_*.h) with the C++ standard library. This stage touches only containers that never appear in a public signature, so it is API-neutral and can land on its own.
Scope
Containers whose only consumers are inside the library:
Container
Consumers
Likely replacement
DataStructures::RangeList
reliability_layer.{h,cpp} (ack ranges)
std::vector of ranges, or keep a small purpose-built type
no DataStructures:: use left outside their own headers (connection_graph2.h includes but does not use WeightedGraph)
delete after confirming
Out of scope here and in every stage:MemoryPool, ThreadsafeAllocatingQueue and Page are allocators wired to rakMalloc/file-and-line tracking, not containers; Table is the in-memory database behind the SQL plugins. They stay.
Approach
One container per commit, each landing green on the full suite (ctest -L unit and -L integration, Linux Debug and Release in Docker since the reliability layer is involved).
Before replacing, check for semantics the standard type lacks: RemoveAtIndexFast swap-removal, explicit capacity on the ring-buffer Queue, comparator function pointers on OrderedList, RangeList merge behaviour.
The reliability layer is performance-sensitive: record before/after numbers from the loopback throughput integration tests and the hermetic ReliabilityLayer harness in the PR.
Delete each ds_*.h once its last consumer is gone; ds_weighted_graph.h, ds_tree.h and the Huffman factory look deletable immediately.
Acceptance
No DataStructures:: use of the listed containers remains under Source/.
Public headers are byte-for-byte unchanged in their declarations (verified by diffing include/mafianet/*.h signatures).
Full suite green on Linux (Debug, Release), macOS, Windows.
Throughput numbers recorded in the PR, no regression beyond noise.
Tracking: this is stage 1 of three. Stage 2: #60. Stage 3 (API break): #61.
Activity
refactor(ds): std container migration stage 1 (#59)