<p>neels <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/25346">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  neels: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">add osmo_stat_item_get_group_by_name_idxname()<br><br>Add "missing" API for looking up a stat_item_group by its index-name.<br>A subsequent patch, which adds stat_items to the CTRL interface, will<br>use this to look up stat item groups by object name.<br><br>In stat item groups, there are group names, having a number of indexes<br>denoting different objects. An object can have, besides the index, also<br>a name that is equivalent to the index.<br><br>Apologies for the weird function name, it's still the best one I<br>could come up with: "group_by_name" refers to the group name, and<br>"idxname" refers to the name that the object index is associated with.<br><br>We already have osmo_stat_item_get_group_by_name_idx().<br>Other contestants for name of this new function were:<br><br>- osmo_stat_item_get_group_by_name_name()<br>  because there is a "name" instead of "idx", but I find it confusing.<br><br>- osmo_stat_item_get_group_by_name_idx_name()<br>  but I find that the last "name" should be closer to the "idx".<br><br>Related: SYS#5542<br>Change-Id: Ia1a77a1e4657ba624dd4f4bf7ad274e7751d0141<br>---<br>M include/osmocom/core/stat_item.h<br>M src/stat_item.c<br>2 files changed, 21 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/core/stat_item.h b/include/osmocom/core/stat_item.h</span><br><span>index 332bbe9..402a7ae 100644</span><br><span>--- a/include/osmocom/core/stat_item.h</span><br><span>+++ b/include/osmocom/core/stat_item.h</span><br><span>@@ -97,6 +97,7 @@</span><br><span> </span><br><span> struct osmo_stat_item_group *osmo_stat_item_get_group_by_name_idx(</span><br><span>    const char *name, const unsigned int idx);</span><br><span style="color: hsl(120, 100%, 40%);">+struct osmo_stat_item_group *osmo_stat_item_get_group_by_name_idxname(const char *group_name, const char *idx_name);</span><br><span> </span><br><span> const struct osmo_stat_item *osmo_stat_item_get_by_name(</span><br><span>     const struct osmo_stat_item_group *statg, const char *name);</span><br><span>diff --git a/src/stat_item.c b/src/stat_item.c</span><br><span>index 55aa951..87cbfea 100644</span><br><span>--- a/src/stat_item.c</span><br><span>+++ b/src/stat_item.c</span><br><span>@@ -333,6 +333,26 @@</span><br><span>         return NULL;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Search for item group based on group name and index's name.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] name Name of stats_item_group we want to find.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] idx_name Index of the group we want to find, by the index's name (osmo_stat_item_group->name).</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns pointer to group, if found; NULL otherwise. */</span><br><span style="color: hsl(120, 100%, 40%);">+struct osmo_stat_item_group *osmo_stat_item_get_group_by_name_idxname(const char *group_name, const char *idx_name)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  struct osmo_stat_item_group *statg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ llist_for_each_entry(statg, &osmo_stat_item_groups, list) {</span><br><span style="color: hsl(120, 100%, 40%);">+               if (!statg->desc || !statg->name)</span><br><span style="color: hsl(120, 100%, 40%);">+                       continue;</span><br><span style="color: hsl(120, 100%, 40%);">+             if (strcmp(statg->desc->group_name_prefix, group_name))</span><br><span style="color: hsl(120, 100%, 40%);">+                 continue;</span><br><span style="color: hsl(120, 100%, 40%);">+             if (strcmp(statg->name, idx_name))</span><br><span style="color: hsl(120, 100%, 40%);">+                 continue;</span><br><span style="color: hsl(120, 100%, 40%);">+             return statg;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+     return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! Search for item based on group + item name</span><br><span>  *  \param[in] statg group in which to search for the item</span><br><span>  *  \param[in] name name of item to search within \a statg</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/25346">change 25346</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmocore/+/25346"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ia1a77a1e4657ba624dd4f4bf7ad274e7751d0141 </div>
<div style="display:none"> Gerrit-Change-Number: 25346 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>