9 #ifndef __pianod__querylist__
10 #define __pianod__querylist__
29 explicit impossible (
void) : invalid_argument (
"impossible") { };
90 class Queries:
public std::vector<DetailList> {
Nodes for the filter parse tree.
Definition: filter.h:133
Track data filter.
Definition: filter.h:38
Field
Fields on which comparisons can be done by the filter.
Definition: filter.h:44
Permuted filter, like Filter but constructed from a string.
Definition: filter.h:258
Media sources mark the available fields (array index) to true to indicate they are capable of searchi...
Definition: querylist.h:44
bool andCapable
May query with 'AND' semantics.
Definition: querylist.h:56
EnumeratedArray< Filter::Field, bool > fieldInGeneralSearch
Fields that can't be properly searched on, but are part of Field::Search searches.
Definition: querylist.h:52
EnumeratedArray< Filter::Field, bool > canExactCompare
Definition: querylist.h:48
EnumeratedArray< Filter::Field, bool > canMatchBeginning
Definition: querylist.h:49
EnumeratedArray< Filter::Field, bool > canSubstringMatch
Definition: querylist.h:50
EnumeratedArray< Filter::Field, bool > participatesInFuzzy
Fields searched by permuted filters, i.e., 'like'.
Definition: querylist.h:47
EnumeratedArray< Filter::Field, Preference > fieldPreference
Relative field preferences: higher is better.
Definition: querylist.h:54
A list of queries representing a filter expression or portion thereof.
Definition: querylist.h:80
float quality(void) const
Specificity of the collection of searches.
Definition: querylist.cpp:45
unsigned preference(const Constraints &con) const
Field Preference of searches.
Definition: querylist.cpp:35
Information about how a query should be performed by a source.
Definition: querylist.h:64
Filter::Field filterField
Specificity of the search; more is better.
Definition: querylist.h:68
SearchMethod searchMethod
Method of comparison.
Definition: querylist.h:71
Filter::Field searchField
Field filtered on.
Definition: querylist.h:70
float quality
Definition: querylist.h:67
Details(Filter::Field filter_field, Filter::Field field, SearchMethod method, const char *val)
Create a new query and calculate its quality.
Definition: querylist.cpp:18
std::string value
Value to search for.
Definition: querylist.h:72
A adapter to convert filters into a list of queries for a source.
Definition: querylist.h:97
SearchMethod findMethodForField(SearchMethod requestedMethod, Filter::Field field)
Determine the best method of querying for a field, taking into account the source's capabilities.
Definition: querylist.cpp:87
Queries interpretAnd(const Filter::Operation *filter)
Definition: querylist.cpp:158
const Constraints & capabilities
Definition: querylist.h:99
Queries interpret(const Filter::Operation *filter)
Definition: querylist.cpp:188
Queries interpretFuzzy(const PermutedFilter &filter)
Build a query directly from a permuted filter.
Definition: querylist.cpp:224
Details interpretComparison(const Filter::Operation *filter)
Definition: querylist.cpp:109
A list of queries representing a filter expression or portion thereof.
Definition: querylist.h:90
friend class List
Definition: querylist.h:91
float quality(void) const
Specificity of the collection of searches.
Definition: querylist.cpp:74
unsigned preference(const Constraints &con) const
Field Preference of searches.
Definition: querylist.cpp:60
Exception indicating a query is impossible to perform on a source.
Definition: querylist.h:27
impossible(void)
Definition: querylist.h:29
Filter-to-query converter.
Definition: filter.h:29
search_methods_t
Manners in which fields may be queried for a source.
Definition: querylist.h:34
@ SubstringMatch
Definition: querylist.h:38
@ Fuzzy
Definition: querylist.h:39
@ SearchMethodNone
Definition: querylist.h:35
@ ExactCompare
Definition: querylist.h:36
@ MatchBeginning
Definition: querylist.h:37
enum Query::search_methods_t SearchMethod
Manners in which fields may be queried for a source.
int8_t Preference
Definition: querylist.h:31
Convert a filter into a list of queries based on a list of capabilities.