The Fluent interface

These classes participate in the various method chaining and operator overloading techniques used for the Deephaven C++ Client’s fluent interface.

Many of these classes are not named explicitly in client code. Rather they just exist as intermediate values or as the result of various overloaded operators. Consider the following code fragment:

TableHandle table = ...;
auto [symbol, price] = table.getCols<StrCol, NumCol>("Symbol", "Price");
auto t2 = t1.where(symbol == "AAPL" && price < 50.0).tail(5);

In this code, the fluent expression symbol == "AAPL" && price < 50.0 happens to have the type BooelanExpression. However that type is not explicitly spelled out in the code and many programs would never need to explicitly name that type. Rather, most programs start with a TableHandle and various column types ( e.g. StrCol, NumCol, and DateTimeCol) and perform various method calls and overloaded operators on them.