Re: [PATCH 3/6] lib: factor out prefix related code to its own file
Tomi Ollila writes: > > Good stuff! is this extra line above intentional ? > > (otherwise I did not find anything else, but I may have > got tired looking through the series ;/) > > Tomi Nope, good catch. Dropped the extra whitespace in git. d ___ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org
Re: [PATCH 3/6] lib: factor out prefix related code to its own file
On Sun, Dec 20 2020, David Bremner wrote: > Reduce the size of database.cc, and limit the scope of prefix_table, > make sure it's accessed via a well-defined internal API. > --- > lib/Makefile.local | 4 +- > lib/database-private.h | 7 ++ > lib/database.cc| 203 ++- > lib/prefix.cc | 210 + > 4 files changed, 229 insertions(+), 195 deletions(-) > create mode 100644 lib/prefix.cc > > diff --git a/lib/Makefile.local b/lib/Makefile.local > index 04418fa8..3aa9e80f 100644 > --- a/lib/Makefile.local > +++ b/lib/Makefile.local > @@ -60,7 +60,9 @@ libnotmuch_cxx_srcs = \ > $(dir)/regexp-fields.cc \ > $(dir)/thread.cc \ > $(dir)/thread-fp.cc \ > - $(dir)/features.cc > + $(dir)/features.cc \ > + $(dir)/prefix.cc > + Good stuff! is this extra line above intentional ? (otherwise I did not find anything else, but I may have got tired looking through the series ;/) Tomi > > libnotmuch_modules := $(libnotmuch_c_srcs:.c=.o) > $(libnotmuch_cxx_srcs:.cc=.o) > > diff --git a/lib/database-private.h b/lib/database-private.h > index 2d220811..c9bc712b 100644 > --- a/lib/database-private.h > +++ b/lib/database-private.h > @@ -277,4 +277,11 @@ _notmuch_database_parse_features (const void *ctx, const > char *features, unsigne > char * > _notmuch_database_print_features (const void *ctx, unsigned int features); > > +/* prefix.cc */ > +notmuch_status_t > +_notmuch_database_setup_standard_query_fields (notmuch_database_t *notmuch); > + > +notmuch_status_t > +_notmuch_database_setup_user_query_fields (notmuch_database_t *notmuch); > + > #endif > diff --git a/lib/database.cc b/lib/database.cc > index 4a477bd7..defa3062 100644 > --- a/lib/database.cc > +++ b/lib/database.cc > @@ -263,80 +263,6 @@ _notmuch_database_mode (notmuch_database_t *notmuch) > * same thread. > */ > > -/* With these prefix values we follow the conventions published here: > - * > - * https://xapian.org/docs/omega/termprefixes.html > - * > - * as much as makes sense. Note that I took some liberty in matching > - * the reserved prefix values to notmuch concepts, (for example, 'G' > - * is documented as "newsGroup (or similar entity - e.g. a web forum > - * name)", for which I think the thread is the closest analogue in > - * notmuch. This in spite of the fact that we will eventually be > - * storing mailing-list messages where 'G' for "mailing list name" > - * might be even a closer analogue. I'm treating the single-character > - * prefixes preferentially for core notmuch concepts (which will be > - * nearly universal to all mail messages). > - */ > - > -static const > -prefix_t prefix_table[] = { > -/* name term prefix flags */ > -{ "type", "T",NOTMUCH_FIELD_NO_FLAGS }, > -{ "reference", "XREFERENCE", NOTMUCH_FIELD_NO_FLAGS }, > -{ "replyto","XREPLYTO", NOTMUCH_FIELD_NO_FLAGS }, > -{ "directory", "XDIRECTORY", NOTMUCH_FIELD_NO_FLAGS }, > -{ "file-direntry", "XFDIRENTRY", NOTMUCH_FIELD_NO_FLAGS }, > -{ "directory-direntry", "XDDIRENTRY", NOTMUCH_FIELD_NO_FLAGS }, > -{ "body", "", NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROBABILISTIC }, > -{ "thread", "G",NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROCESSOR }, > -{ "tag","K",NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROCESSOR }, > -{ "is", "K",NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROCESSOR }, > -{ "id", "Q",NOTMUCH_FIELD_EXTERNAL }, > -{ "mid","Q",NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROCESSOR }, > -{ "path", "P",NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROCESSOR }, > -{ "property", "XPROPERTY",NOTMUCH_FIELD_EXTERNAL }, > -/* > - * Unconditionally add ':' to reduce potential ambiguity with > - * overlapping prefixes and/or terms that start with capital > - * letters. See Xapian document termprefixes.html for related > - * discussion. > - */ > -{ "folder", "XFOLDER:", NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROCESSOR }, > -{ "date", NULL, NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROCESSOR }, > -{ "query", NULL, NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROCESSOR }, > -{ "from", "XFROM",NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROBABILISTIC | > - NOTMUCH_FIELD_PROCESSOR }, > -{ "to", "XTO", NOTMUCH_FIELD_EXTERNAL | > - NOTMUCH_FIELD_PROBABILISTIC }, > -{
[PATCH 3/6] lib: factor out prefix related code to its own file
Reduce the size of database.cc, and limit the scope of prefix_table, make sure it's accessed via a well-defined internal API. --- lib/Makefile.local | 4 +- lib/database-private.h | 7 ++ lib/database.cc| 203 ++- lib/prefix.cc | 210 + 4 files changed, 229 insertions(+), 195 deletions(-) create mode 100644 lib/prefix.cc diff --git a/lib/Makefile.local b/lib/Makefile.local index 04418fa8..3aa9e80f 100644 --- a/lib/Makefile.local +++ b/lib/Makefile.local @@ -60,7 +60,9 @@ libnotmuch_cxx_srcs = \ $(dir)/regexp-fields.cc \ $(dir)/thread.cc \ $(dir)/thread-fp.cc \ - $(dir)/features.cc + $(dir)/features.cc \ + $(dir)/prefix.cc + libnotmuch_modules := $(libnotmuch_c_srcs:.c=.o) $(libnotmuch_cxx_srcs:.cc=.o) diff --git a/lib/database-private.h b/lib/database-private.h index 2d220811..c9bc712b 100644 --- a/lib/database-private.h +++ b/lib/database-private.h @@ -277,4 +277,11 @@ _notmuch_database_parse_features (const void *ctx, const char *features, unsigne char * _notmuch_database_print_features (const void *ctx, unsigned int features); +/* prefix.cc */ +notmuch_status_t +_notmuch_database_setup_standard_query_fields (notmuch_database_t *notmuch); + +notmuch_status_t +_notmuch_database_setup_user_query_fields (notmuch_database_t *notmuch); + #endif diff --git a/lib/database.cc b/lib/database.cc index 4a477bd7..defa3062 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -263,80 +263,6 @@ _notmuch_database_mode (notmuch_database_t *notmuch) * same thread. */ -/* With these prefix values we follow the conventions published here: - * - * https://xapian.org/docs/omega/termprefixes.html - * - * as much as makes sense. Note that I took some liberty in matching - * the reserved prefix values to notmuch concepts, (for example, 'G' - * is documented as "newsGroup (or similar entity - e.g. a web forum - * name)", for which I think the thread is the closest analogue in - * notmuch. This in spite of the fact that we will eventually be - * storing mailing-list messages where 'G' for "mailing list name" - * might be even a closer analogue. I'm treating the single-character - * prefixes preferentially for core notmuch concepts (which will be - * nearly universal to all mail messages). - */ - -static const -prefix_t prefix_table[] = { -/* nameterm prefix flags */ -{ "type", "T",NOTMUCH_FIELD_NO_FLAGS }, -{ "reference", "XREFERENCE", NOTMUCH_FIELD_NO_FLAGS }, -{ "replyto","XREPLYTO", NOTMUCH_FIELD_NO_FLAGS }, -{ "directory", "XDIRECTORY", NOTMUCH_FIELD_NO_FLAGS }, -{ "file-direntry", "XFDIRENTRY", NOTMUCH_FIELD_NO_FLAGS }, -{ "directory-direntry", "XDDIRENTRY", NOTMUCH_FIELD_NO_FLAGS }, -{ "body", "", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC }, -{ "thread", "G",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "tag","K",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "is", "K",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "id", "Q",NOTMUCH_FIELD_EXTERNAL }, -{ "mid","Q",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "path", "P",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "property", "XPROPERTY",NOTMUCH_FIELD_EXTERNAL }, -/* - * Unconditionally add ':' to reduce potential ambiguity with - * overlapping prefixes and/or terms that start with capital - * letters. See Xapian document termprefixes.html for related - * discussion. - */ -{ "folder", "XFOLDER:", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "date", NULL, NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "query", NULL, NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "from", "XFROM",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC | - NOTMUCH_FIELD_PROCESSOR }, -{ "to", "XTO", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC }, -{ "attachment", "XATTACHMENT", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC }, -{ "mimetype", "XMIMETYPE",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC }, -{ "subject","XSUBJECT", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC | - NOTMUCH_FIELD_PROCESSOR }, -}; - -static void -_setup_query_field_default
[PATCH 3/6] lib: factor out prefix related code to its own file
Reduce the size of database.cc, and limit the scope of prefix_table, make sure it's accessed via a well-defined internal API. --- lib/Makefile.local | 4 +- lib/database-private.h | 7 ++ lib/database.cc| 201 ++- lib/prefix.cc | 210 + 4 files changed, 228 insertions(+), 194 deletions(-) create mode 100644 lib/prefix.cc diff --git a/lib/Makefile.local b/lib/Makefile.local index 04418fa8..3aa9e80f 100644 --- a/lib/Makefile.local +++ b/lib/Makefile.local @@ -60,7 +60,9 @@ libnotmuch_cxx_srcs = \ $(dir)/regexp-fields.cc \ $(dir)/thread.cc \ $(dir)/thread-fp.cc \ - $(dir)/features.cc + $(dir)/features.cc \ + $(dir)/prefix.cc + libnotmuch_modules := $(libnotmuch_c_srcs:.c=.o) $(libnotmuch_cxx_srcs:.cc=.o) diff --git a/lib/database-private.h b/lib/database-private.h index 2d220811..c9bc712b 100644 --- a/lib/database-private.h +++ b/lib/database-private.h @@ -277,4 +277,11 @@ _notmuch_database_parse_features (const void *ctx, const char *features, unsigne char * _notmuch_database_print_features (const void *ctx, unsigned int features); +/* prefix.cc */ +notmuch_status_t +_notmuch_database_setup_standard_query_fields (notmuch_database_t *notmuch); + +notmuch_status_t +_notmuch_database_setup_user_query_fields (notmuch_database_t *notmuch); + #endif diff --git a/lib/database.cc b/lib/database.cc index e08d43ca..defa3062 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -263,80 +263,6 @@ _notmuch_database_mode (notmuch_database_t *notmuch) * same thread. */ -/* With these prefix values we follow the conventions published here: - * - * https://xapian.org/docs/omega/termprefixes.html - * - * as much as makes sense. Note that I took some liberty in matching - * the reserved prefix values to notmuch concepts, (for example, 'G' - * is documented as "newsGroup (or similar entity - e.g. a web forum - * name)", for which I think the thread is the closest analogue in - * notmuch. This in spite of the fact that we will eventually be - * storing mailing-list messages where 'G' for "mailing list name" - * might be even a closer analogue. I'm treating the single-character - * prefixes preferentially for core notmuch concepts (which will be - * nearly universal to all mail messages). - */ - -static const -prefix_t prefix_table[] = { -/* nameterm prefix flags */ -{ "type", "T",NOTMUCH_FIELD_NO_FLAGS }, -{ "reference", "XREFERENCE", NOTMUCH_FIELD_NO_FLAGS }, -{ "replyto","XREPLYTO", NOTMUCH_FIELD_NO_FLAGS }, -{ "directory", "XDIRECTORY", NOTMUCH_FIELD_NO_FLAGS }, -{ "file-direntry", "XFDIRENTRY", NOTMUCH_FIELD_NO_FLAGS }, -{ "directory-direntry", "XDDIRENTRY", NOTMUCH_FIELD_NO_FLAGS }, -{ "body", "", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC }, -{ "thread", "G",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "tag","K",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "is", "K",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "id", "Q",NOTMUCH_FIELD_EXTERNAL }, -{ "mid","Q",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "path", "P",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "property", "XPROPERTY",NOTMUCH_FIELD_EXTERNAL }, -/* - * Unconditionally add ':' to reduce potential ambiguity with - * overlapping prefixes and/or terms that start with capital - * letters. See Xapian document termprefixes.html for related - * discussion. - */ -{ "folder", "XFOLDER:", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "date", NULL, NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "query", NULL, NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, -{ "from", "XFROM",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC | - NOTMUCH_FIELD_PROCESSOR }, -{ "to", "XTO", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC }, -{ "attachment", "XATTACHMENT", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC }, -{ "mimetype", "XMIMETYPE",NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC }, -{ "subject","XSUBJECT", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROBABILISTIC | - NOTMUCH_FIELD_PROCESSOR }, -}; - -static void -_setup_query_field_default