SIGN IN SIGN UP

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