Additional projects

cguard

C code needs explicit result propagation and reliable lexical cleanup without C++ RAII.

Header-only result types and optional compiler-backed scope guards make status and ownership transitions visible.

Stablev2.0.0MITC99
Last verified
Not audited against current README/docs
Platform scope
Portable C99; integration depends on caller-provided adapters

What it solves

C code needs explicit result propagation and reliable lexical cleanup without C++ RAII.

How it works

1Operation2explicit result3caller checks status4value or error

Use it when

Return typed parse results
Attach cleanup to a lexical scope
Dismiss a guard after ownership transfer

Quick Start

#include <cguard/result.h>
RESULT_DEFINE(parse_result_t, int);
parse_result_t r=parse_result_t_ok(42);
/* Expected: r.status is success and r.value is 42. */

Engineering evidence

  • Public headers, examples, tests and a local verification document are present

Known limits

  • Scope cleanup requires the supported compiler ABI
  • Cleanup does not run through longjmp, abort, reset, hard fault or power loss
  • Borrowed result messages keep their original lifetime