Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR builds on top of the
Table
class in C++, definingt_view_config
: a unified declaration of what a view configuration object looks like, codified in C++ and then implemented in the binding language.By storing configuration variables (pivots, aggregates, filters, sorts, etc.) as primitive values, we can implement
view_config
in binding languages without having to construct abstractions that are only used in the engine (such ast_aggspec
andt_fterm
). This also encapsulates the primitive-to-abstraction conversion code insidet_view_config
, reducing the amount of binding code required to construct a view.C++ changes
t_view_config
and associated logict_view_config
for allView
objects, instead oft_config
make_view
andmake_context
into templated functions, as their signatures are now much less complex[tsl::ordered_map](https://github.com/Tessil/ordered-map)
in order to maintain aggregate ordering in the view configt_config
constructors, reorganize thet_config
header, removet_aggspec_recipe
JS changes
view_config
definition inperspective.js