This PR is a step towards extensible value types in DAPHNE. Ultimately, we want to support a rich set of custom value types and reuse/instantiate the existing kernels for them without extra implementation effort. Enabling this requires, besides other things, making some pieces of the code base more general.
This PR addresses one concrete example: elementwise unary and binary operations. Currently one quickly runs into C++ compilation problems when instantiating these kernels for non-numeric value types (e.g., string or any custom non-numeric value type in the future).
The PR contains two commits (see the commit messages for more details):
The first one introduces compile-time info that specifies which unary/binary op codes should work with which value types.
The second one removes the existing workarounds for string ops (StringEqOp, ConcatOp) and uses the originally intended elementwise binary ops (EwEqOp, EwConcatOp) instead. Doing that becomes possible through the first commit.
The commits in this PR are intended to be rebased and merged, to better reflect the individual changes.
As this PR makes some general (but simple) changes to the elementwise unary/binary kernels, I'd like to make everyone interested aware. Comments are welcome, but I'm not asking for a detailed review. This PR can be merged after the v0.3 release.
This PR is a step towards extensible value types in DAPHNE. Ultimately, we want to support a rich set of custom value types and reuse/instantiate the existing kernels for them without extra implementation effort. Enabling this requires, besides other things, making some pieces of the code base more general.
This PR addresses one concrete example: elementwise unary and binary operations. Currently one quickly runs into C++ compilation problems when instantiating these kernels for non-numeric value types (e.g., string or any custom non-numeric value type in the future).
The PR contains two commits (see the commit messages for more details):
StringEqOp
,ConcatOp
) and uses the originally intended elementwise binary ops (EwEqOp
,EwConcatOp
) instead. Doing that becomes possible through the first commit.The commits in this PR are intended to be rebased and merged, to better reflect the individual changes.
As this PR makes some general (but simple) changes to the elementwise unary/binary kernels, I'd like to make everyone interested aware. Comments are welcome, but I'm not asking for a detailed review. This PR can be merged after the v0.3 release.