pw_tokenizer: Custom tokenization macro support
- Make the pw::tokenizer::EncodeArgs function and pw_tokenizer_ArgTypes
typedef public.
- Update the pw::tokenizer::EncodedMessage class to make it simpler to
use. Also, use memcpy instead of aliasing the token.
Change-Id: Ic99930ccf3e002e4fbef5112f6b2d37c910e6ee9
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/39984
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
diff --git a/pw_tokenizer/tokenize_to_global_handler.cc b/pw_tokenizer/tokenize_to_global_handler.cc
index 78b79a0..5ac2755 100644
--- a/pw_tokenizer/tokenize_to_global_handler.cc
+++ b/pw_tokenizer/tokenize_to_global_handler.cc
@@ -20,18 +20,14 @@
namespace tokenizer {
extern "C" void _pw_tokenizer_ToGlobalHandler(pw_tokenizer_Token token,
- _pw_tokenizer_ArgTypes types,
+ pw_tokenizer_ArgTypes types,
...) {
- EncodedMessage encoded;
- encoded.token = token;
-
va_list args;
va_start(args, types);
- const size_t encoded_bytes = EncodeArgs(types, args, encoded.args);
+ EncodedMessage encoded(token, types, args);
va_end(args);
- pw_tokenizer_HandleEncodedMessage(reinterpret_cast<const uint8_t*>(&encoded),
- sizeof(encoded.token) + encoded_bytes);
+ pw_tokenizer_HandleEncodedMessage(encoded.data_as_uint8(), encoded.size());
}
} // namespace tokenizer