From: Junio C Hamano <gitster@pobox.com> To: "ZheNing Hu via GitGitGadget" <gitgitgadget@gmail.com> Cc: git@vger.kernel.org, Jeff King <peff@peff.net>, Hariom Verma <hariom18599@gmail.com>, Christian Couder <christian.couder@gmail.com>, ZheNing Hu <adlternative@gmail.com> Subject: Re: [PATCH v3 2/2] [GSOC] ref-filter: introduce enum atom_type Date: Thu, 13 May 2021 08:21:15 +0900 [thread overview] Message-ID: <xmqqk0o3edxw.fsf@gitster.g> (raw) In-Reply-To: <43400cac58e74a2acab15ace929481a9efb7978f.1620821464.git.gitgitgadget@gmail.com> (ZheNing Hu via GitGitGadget's message of "Wed, 12 May 2021 12:11:04 +0000") "ZheNing Hu via GitGitGadget" <gitgitgadget@gmail.com> writes: > +/* > + * The enum atom_type is used as the coordinates of valid_atom entry. Usually we do not say "coordinates" when we talk about X of an array element A[X]. "... used as an index in the valid_atom[] array." perhaps. > + * In the atom parsing stage, it will be passed to used_atom.atom_type > + * as the identifier of the atom type. We can judge the type of used_atom You seem to like the verb "judge" (it was also seen in the proposed log message for 1/2) and tend to overuse it when we use other verbs; in this particular case, probably the right verb is to "check". > + * entry by `if (used_atom[i].atom_type == ATOM_*)`. > + */ > +enum atom_type { > + ATOM_REFNAME, > +... > + ATOM_ELSE, > +}; > + > @@ -119,6 +169,7 @@ static struct ref_to_worktree_map { > * array. > */ > static struct used_atom { > + enum atom_type atom_type; > const char *name; > cmp_type type; > info_source source; OK. > @@ -506,47 +557,47 @@ static struct { > int (*parser)(const struct ref_format *format, struct used_atom *atom, > const char *arg, struct strbuf *err); > } valid_atom[] = { > - { "refname", SOURCE_NONE, FIELD_STR, refname_atom_parser }, > ... > - { "else", SOURCE_NONE }, > + [ATOM_REFNAME] = { "refname", SOURCE_NONE, FIELD_STR, refname_atom_parser }, > ... > + [ATOM_ELSE] = { "else", SOURCE_NONE }, Makes sense. > @@ -628,6 +679,7 @@ static int parse_ref_filter_atom(const struct ref_format *format, > at = used_atom_cnt; > used_atom_cnt++; > REALLOC_ARRAY(used_atom, used_atom_cnt); > + used_atom[at].atom_type = i; Makes sense. > used_atom[at].name = xmemdupz(atom, ep - atom); > used_atom[at].type = valid_atom[i].cmp_type; > used_atom[at].source = valid_atom[i].source; > @@ -652,7 +704,7 @@ static int parse_ref_filter_atom(const struct ref_format *format, > return -1; > if (*atom == '*') > need_tagged = 1; > - if (!strcmp(valid_atom[i].name, "symref")) > + if (i == ATOM_SYMREF) > need_symref = 1; > return at; > } Nice. > @@ -965,14 +1017,15 @@ static void grab_common_values(struct atom_value *val, int deref, struct expand_ > > for (i = 0; i < used_atom_cnt; i++) { > const char *name = used_atom[i].name; > + enum atom_type atom_type = used_atom[i].atom_type; > struct atom_value *v = &val[i]; > if (!!deref != (*name == '*')) > continue; > if (deref) > name++; > - if (!strcmp(name, "objecttype")) > + if (atom_type == ATOM_OBJECTTYPE) > v->s = xstrdup(type_name(oi->type)); > - else if (starts_with(name, "objectsize")) { > + else if (atom_type == ATOM_OBJECTSIZE) { > if (used_atom[i].u.objectsize.option == O_SIZE_DISK) { > v->value = oi->disk_size; > v->s = xstrfmt("%"PRIuMAX, (uintmax_t)oi->disk_size); Replacing !strcmp() with comparison with ATOM_* like the above is the best solution for this step, but I wonder if this part (or any other part that this patch touches) would benefit from using a switch statement on atom_type. Something to think about in the future, after the dust settles. Thanks.
next prev parent reply other threads:[~2021-05-12 23:32 UTC|newest] Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-05-08 15:22 [PATCH 0/2] [GSOC][RFC] " ZheNing Hu via GitGitGadget 2021-05-08 15:22 ` [PATCH 1/2] [GSOC] ref-filter: add objectsize to used_atom ZheNing Hu via GitGitGadget 2021-05-08 15:22 ` [PATCH 2/2] [GSOC][RFC] ref-filter: introduce enum atom_type ZheNing Hu via GitGitGadget 2021-05-09 6:21 ` Christian Couder 2021-05-09 8:26 ` Junio C Hamano 2021-05-09 13:44 ` ZheNing Hu 2021-05-09 13:40 ` ZheNing Hu 2021-05-10 15:03 ` [PATCH v2 0/2] " ZheNing Hu via GitGitGadget 2021-05-10 15:03 ` [PATCH v2 1/2] [GSOC] ref-filter: add objectsize to used_atom ZheNing Hu via GitGitGadget 2021-05-10 15:03 ` [PATCH v2 2/2] [GSOC] ref-filter: introduce enum atom_type ZheNing Hu via GitGitGadget 2021-05-11 2:14 ` Junio C Hamano 2021-05-11 5:51 ` Christian Couder 2021-05-11 6:12 ` Junio C Hamano 2021-05-11 12:53 ` ZheNing Hu 2021-05-11 12:37 ` ZheNing Hu 2021-05-11 13:05 ` Junio C Hamano 2021-05-11 12:18 ` ZheNing Hu 2021-05-12 12:11 ` [PATCH v3 0/2] [GSOC][RFC] " ZheNing Hu via GitGitGadget 2021-05-12 12:11 ` [PATCH v3 1/2] [GSOC] ref-filter: add objectsize to used_atom ZheNing Hu via GitGitGadget 2021-05-12 23:11 ` Junio C Hamano 2021-05-13 9:04 ` ZheNing Hu 2021-05-12 12:11 ` [PATCH v3 2/2] [GSOC] ref-filter: introduce enum atom_type ZheNing Hu via GitGitGadget 2021-05-12 23:21 ` Junio C Hamano [this message] 2021-05-13 9:25 ` ZheNing Hu 2021-05-13 15:15 ` [PATCH v4 0/2] [GSOC][RFC] " ZheNing Hu via GitGitGadget 2021-05-13 15:15 ` [PATCH v4 1/2] [GSOC] ref-filter: add objectsize to used_atom ZheNing Hu via GitGitGadget 2021-05-13 15:15 ` [PATCH v4 2/2] [GSOC] ref-filter: introduce enum atom_type ZheNing Hu via GitGitGadget
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=xmqqk0o3edxw.fsf@gitster.g \ --to=gitster@pobox.com \ --cc=adlternative@gmail.com \ --cc=christian.couder@gmail.com \ --cc=git@vger.kernel.org \ --cc=gitgitgadget@gmail.com \ --cc=hariom18599@gmail.com \ --cc=peff@peff.net \ --subject='Re: [PATCH v3 2/2] [GSOC] ref-filter: introduce enum atom_type' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).