From: Karthik Nayak Date: Tue, 05 Jan 2016 08:03:04 GMT Subject: [PATCH v3 05/15] ref-filter: introduce parsing functions for each valid atom Message-ID: <1451980994-26865-6-git-send-email-Karthik.188@gmail.com> In-Reply-To: <1451980994-26865-1-git-send-email-Karthik.188@gmail.com> Parsing atoms is done in populate_value(), this is repetitive and hence expensive. Introduce a parsing function which would let us parse atoms beforehand and store the required details into the 'used_atom' structure for further usage. Helped-by: Eric Sunshine Signed-off-by: Karthik Nayak --- ref-filter.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ref-filter.c b/ref-filter.c index 75ebd03..efa247a 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -36,6 +36,7 @@ static int need_color_reset_at_eol; static struct { const char *name; cmp_type cmp_type; + void (*parser)(struct used_atom *atom); } valid_atom[] = { { "refname" }, { "objecttype" }, @@ -154,6 +155,8 @@ int parse_ref_filter_atom(const char *atom, const char *ep) REALLOC_ARRAY(used_atom, used_atom_cnt); used_atom[at].name = xmemdupz(atom, ep - atom); used_atom[at].type = valid_atom[i].cmp_type; + if (valid_atom[i].parser) + valid_atom[i].parser(&used_atom[at]); if (*atom == '*') need_tagged = 1; if (!strcmp(used_atom[at].name, "symref")) -- 2.6.4