diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2019-10-28 04:58:04 +0100 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2019-11-23 07:58:47 +0000 |
commit | 823073aa911bbc218804774e6bfe9ad80310596c (patch) | |
tree | f7ee3b91209eb861ede4a29d2fe336d08a3b111c /tests/context/context_test.c | |
parent | df22b006333d67a17b6627fba3ce468a11daa8b1 (diff) |
utils.h: add OSMO_NAME_C_IMPL() macro
Provide a common implementation for foo_name_c() functions that base on
foo_name_buf() functions.
char *foo_name_c(void *ctx, example_t arg)
{
OSMO_NAME_C_IMPL(ctx, 64, "ERROR", foo_name_buf, arg)
}
Rationale: the most efficient way of composing strings that have optional parts
or require loops for composition is by writing to a ready char[], and this in
turn is easiest done by using OSMO_STRBUF_* API. Using such a basic name string
implementation which typically returns a length, I often want a more convenient
version that returns a char*, which can just be inlined in a "%s" string format
-- crucially: skipping string composition when inlined in a LOGP(). This common
implementation allows saving code dup, only the function signature is needed.
Why not include the function signature in the macro? The two sets of varargs
(1: signature args, 2: function call args) are hard to do. Also, having an
explicit signature is good for readability and code grepping / ctags.
Upcoming uses: in libosmocore in the mslookup (D-GSM) implementation
(osmo_mslookup_result_name_c()), and in osmo_msc's codec negotiation
implementation (sdp_audio_codecs_name_c(), sdp_msg_name_c(), ...).
I54b6c0810f181259da307078977d9ef3d90458c9 (libosmocore)
If3ce23cd5bab15e2ab4c52ef3e4c75979dffe931 (osmo-msc)
Change-Id: Ida5ba8d9640ea641aafef0236800f6d489d3d322
Diffstat (limited to 'tests/context/context_test.c')
0 files changed, 0 insertions, 0 deletions