docs: propose stable C ABI (declaration-only)
Establish sensorwatch's source-neutral C ABI as a declaration-only proposal so language bindings (Python/C++/Rust) have a stable contract to target before any native code exists. No implementation, CMake, or DLL ships here — the HWiNFO parser lands in a later PR, after the sanitizer + fuzz coverage the security standards require before shipping an untrusted-input parser. Picks up GPT-55's PR #7 and re-applies it on top of the hardened C standards and security model from #6/#8 (which #7 predated and conflicted with): - docs/C_ABI.md: the ABI spec — sw_/SW_ naming, opaque sw_session_t / sw_snapshot_t handles, explicit sw_error_t codes, caller-owned UTF-8 string buffers with a length-query pattern, immutable snapshots, a thread-safety contract, and an implementation security checklist that defers to SECURITY.md. - include/sensorwatch/sensorwatch.h: the declaration-only public header. Compiles clean from C (clang/gcc -std=c17) and C++ (g++ -std=c++17) under -Wall -Wextra -Werror -Wconversion -Wshadow. - docs/C_CODING_STANDARDS.md: point the existing ABI-spec forward-reference at C_ABI.md; switch the Naming table and Header-Organization section to the source-neutral sw_/SW_ prefix and the single public sensorwatch.h, keeping the hwi_ worked examples as labelled implementation sketches. - README.md, CONTRIBUTING.md: extend the existing native-core cross-links to point at the ABI proposal too (no duplicate bullets). Refinements over #7 for accuracy against the updated standards and the Python source: - The reading-type enum mirrors the parser faithfully: SW_READING_TYPE_NONE = 0 (HWiNFO "None"), 1..8 map 1:1, and SW_READING_TYPE_UNKNOWN = 255 for source codes outside the known range — rather than collapsing all three into a single 0 = UNKNOWN. - State the ABI calling convention (default __cdecl, never __stdcall) in the header, matching the standards' rule. Python suite unaffected (42 passed). Co-authored-by: Codex Reviewer <lcj.codex.review@proton.me> Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
C
Claude Coder committed
755061c5d845f089922fa9372984b69311c7df72
Parent: b251d8d