I don"t know if this is more efficient or not, but it looks cleaner. Define `_DEBUG_MANCALC_OFFSETS` to use the previous offset calculation code.
Fortune for naka's current commit: Small blessing − 小吉
Main return value is either: 0 (success), PROG_RET_UNMAP_HAYSTACK_N_FAILED(n) for first haystack unmap failure, PROG_RET_UNMAP_NEEDLE_FAILED if haystacks unmapped okay (m_rval was previsouly 0). (After `m_rval` is set to non-zero, it keeps that value even if subsequent errors accumulate.)
Fortune for naka's current commit: Small blessing − 小吉
TRACE() is no longer a no-op in release builds. This may be expensive since each call to `_t_fprintf()` does an atomic read. TODO: Migrate true debug-only messages to `dprintf()` instead of `TRACE()`; maybe find a way to make `_t_fprintf()` more efficient.
Fortune for naka's current commit: Future blessing − 末吉
Added `FEATURES` section of Makefile: `_FEATURE_PARALLEL` - Use multithreaded processing (currently unimplemented.)
Fortune for naka's current commit: Future small blessing − 末小吉
Deprecated `PROG_RET_MAP_HAYSTACK_FAILED`
XXX: Currently `PROG_RET_MATCH_HAYSTACK_N_FAILED(n)` returns `n` verbatim (casted to `int`). Maybe we should ensure the number is nonzero in the macro? Or rework haystack numbers to start at 0 and have this macro add 1 to `n`? The former seems easier.
Fortune for naka's current commit: Middle blessing − 中吉
Added main TODOs in main(), regarding setting up threadpool, dispatches, consolidation, process return value on match fails, etc.
Fortune for naka's current commit: Small blessing − 小吉
Added `map_handle_err()` for easier error reporting and handling
Added `map_error_str()` to convert a non-`MAP_SUCCESS` `map_result_t` into an error message
Fortune for naka's current commit: Small blessing − 小吉
Add TODO() for unimplemented functions
Add unimplemented function prototype `v_in(v,r1,r2)`. If comparing versions via range is needed in the future, we can implement this. It is trivially implemented to comparing bswap"d raws (big endian comparisons), so we could make an endian-aware raw comparison for this, or we could compare components. Too much boilerplate for now, and i don"t think such a function would be useful, so leaving it dead.
Fortune for naka's current commit: Curse − 凶
Fix bug involving _mixin producing conflicting symbols: now using `gnu_inilne` (macro"d to `force_inline`), instead of `always_inline`
Fortune for naka's current commit: Blessing − 吉
TODO: Move them out of header and into seperate TU "version.c"
version_t holds version components. `v_rawtoc()`, `v_ctoraw()` to create from/convert to the format used by `VERSION()` macro and friends. Punning this union between the raw (u32, used by the macros) and the componant struct (`v_comp`) is possible on little endian machines but discouraged.
Fortune for naka's current commit: Half blessing − 半吉
the macro uses GCC builtins to guarantee generation of `bswap*` instructions.
Integer types are supported from u/i16 to u/i128
Fix bug in VERSION macro expansion with internal `#undef`"d macros.
Fortune for naka's current commit: Half blessing − 半吉