Replace hardcoded bit sizes with named constants in Bit<T> methods#111
Replace hardcoded bit sizes with named constants in Bit<T> methods#111
Conversation
Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: #106
- Replace hardcoded 32 values with BitsSize field in PartialWrite and PartialRead methods - This makes the code generic and work correctly for different numeric types - All tests pass after the change Fixes #106 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
|
Get fresh version from default branch and double check all other similar places. |
|
🤖 AI Work Session Started Starting automated work session at 2026-04-14T13:02:07.959Z The PR has been converted to draft mode while work is in progress. This comment marks the beginning of an AI work session. Please wait for the session to finish, and provide your feedback. |
Similarly to the C# fix (replacing 32 with BitsSize), replace the hardcoded magic number 8 with CHAR_BIT from <climits> in the C++ PartialWrite and PartialRead template functions, making the bit size calculation explicit and portable. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
📊 Context and tokens usage:
Total: (37.0K + 802.7K cached) input tokens, 5.3K output tokens, $0.458140 cost 🤖 Models used:
📎 Log file uploaded as Gist (699KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
🔄 Auto-restart triggered (iteration 1)Reason: CI failures detected Starting new session to address the issues. Auto-restart-until-mergeable mode is active. Will continue until PR becomes mergeable. |
Remove `#include <climits>` which Cppcheck flagged as "Include file not found" in Codacy Static Code Analysis. Replace `CHAR_BIT` with `std::numeric_limits<unsigned char>::digits` from `<limits>` (already included), which is semantically equivalent and avoids the missing-include warning. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
🔄 Auto-restart-until-mergeable Log (iteration 1)This log file contains the complete execution trace of the AI solution draft process. 💰 Cost: $0.247047📊 Context and tokens usage:
Total: (18.7K + 433.1K cached) input tokens, 3.1K output tokens, $0.247047 cost 🤖 Models used:
📎 Log file uploaded as Gist (1984KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
✅ Ready to mergeThis pull request is now ready to be merged:
Monitored by hive-mind with --auto-restart-until-mergeable flag |

Summary
Fixes #106 by replacing hardcoded magic numbers representing bit sizes with named constants in both the C# and C++ implementations.
Changes Made
C# (
csharp/Platform.Numbers/Bit[T].cs)PartialWrite: replaced32 + shift→BitsSize + shiftand32 + limit→BitsSize + limitPartialRead: replaced32 + shift→BitsSize + shiftand32 + limit→BitsSize + limitBitsSizeis already defined asNumericType<T>.BitsSize, making the operations generic for any numeric typeC++ (
cpp/Platform.Numbers/Bit.h)PartialWrite: replacedsizeof(T) * 8 + shift→sizeof(T) * CHAR_BIT + shiftand similarly forlimitPartialRead: same replacements#include <climits>forCHAR_BITWhy This Matters
The hardcoded values (
32in C#,8in C++) made the code implicitly assume specific type sizes, defeating the purpose of the genericBit<T>implementation. UsingBitsSize/CHAR_BITmakes the intent explicit and correct for all supported numeric types.Verification
IsPowerOfTwoTest(0)from main branch, unrelated to this PR)