Commit Graph
5 Commits
Author SHA1 Message Date
J. Nick Koston bdc4a54613 Address review: const ref args, revert lock migration
- TriggerForwarder::operator() now takes const Ts&... to avoid
  copies of non-trivial types (e.g., std::string).
- Revert lock to trigger-based pattern: LockStateForwarder holds
  two pointers (automation + lock), exceeding sizeof(void*) which
  would cause Callback::create to heap-allocate.
- Remove forwarder_extra_args from API since lock was the only user.
2026-03-25 15:10:10 -10:00
J. Nick Koston 9be87f66c3 Accept custom forwarder types, migrate number and lock
Replace bool_filter with generic forwarder parameter that accepts
any struct type. Components can define their own forwarders with
custom fields (e.g., LockStateForwarder needs both automation and
lock entity pointers).

Migrates number (NumberStateTrigger) and lock (LockStateTrigger)
to prove the API is flexible enough for diverse patterns.
2026-03-25 14:23:35 -10:00
J. Nick Koston c127cacb9a Use template forwarder structs for callback deduplication
Replace per-site lambda generation with TriggerForwarder<Ts...>,
TriggerOnTrueForwarder, and TriggerOnFalseForwarder structs. The
compiler generates one operator() per forwarder type shared across
all call sites, avoiding flash duplication from unique lambdas.

Also cleans up API: replaces condition/callback_args with
bool_filter using TRIGGER_ON_TRUE/TRIGGER_ON_FALSE constants.
2026-03-25 14:16:30 -10:00
J. Nick Koston 6c905bd036 Add unit tests for trigger callback lambda generation
Tests the lambda output format for all variations used by
build_callback_automation: no args, typed args, conditions,
multiple args, and empty capture.
2026-03-25 14:09:10 -10:00
J. Nick Koston 48b5cae6c4 [api] Use StringRef for user service string arguments (#13974) 2026-03-02 10:32:44 +13:00