Re: [PATCH 3/6] lib: factor out prefix related code to its own file

2020-12-20 Thread David Bremner
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

2020-12-20 Thread Tomi Ollila
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

2020-12-20 Thread David Bremner
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

2020-08-12 Thread David Bremner
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