diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2018-11-17 15:32:37 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2018-11-17 16:28:53 +0100 |
commit | 9d99c8a46ad4c18de9250476e9145701060f42a1 (patch) | |
tree | a2b2f32221280a11c1a20e8fe805c58cb626514b | |
parent | bc935d439c07b22cfff1d25b0fc28d34bc26b110 (diff) | |
download | tracker-9d99c8a46ad4c18de9250476e9145701060f42a1.tar.gz |
libtracker-data: Add builtin way to convert a Expression to a string
The Expression element may be used in several places (eg. ArgList or
ExpressionList in functions) that may require them to be converted
to string, add a builtin toggle in the state so this can ben done
easily.
-rw-r--r-- | src/libtracker-data/tracker-sparql.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c index 2a0f100ee..e32a4f2b0 100644 --- a/src/libtracker-data/tracker-sparql.c +++ b/src/libtracker-data/tracker-sparql.c @@ -142,6 +142,8 @@ struct _TrackerSparql const gchar *expression_list_separator; TrackerPropertyType expression_type; guint type; + + gboolean convert_to_string; } current_state; }; @@ -4610,10 +4612,28 @@ static gboolean translate_Expression (TrackerSparql *sparql, GError **error) { + TrackerStringBuilder *str, *old; + gboolean convert_to_string; + /* Expression ::= ConditionalOrExpression */ + convert_to_string = sparql->current_state.convert_to_string; + sparql->current_state.convert_to_string = FALSE; + + if (convert_to_string) { + str = _append_placeholder (sparql); + old = tracker_sparql_swap_builder (sparql, str); + } + _call_rule (sparql, NAMED_RULE_ConditionalOrExpression, error); + if (convert_to_string) { + convert_expression_to_string (sparql, sparql->current_state.expression_type); + tracker_sparql_swap_builder (sparql, old); + } + + sparql->current_state.convert_to_string = convert_to_string; + return TRUE; } |