summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-12-19 14:54:46 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-12-19 18:01:45 +0100
commitfcec8f75e7984a4ae9e5030b7b20047aa51bdb77 (patch)
tree5796996dad319bd668f2aeaef0dd835e116f1706 /eval
parent2f0402fb28f53f8682d05d9b97ee082562e2861b (diff)
Inline DenseTensorAddressCombiner::combine
Diffstat (limited to 'eval')
-rw-r--r--eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.cpp53
-rw-r--r--eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.h41
2 files changed, 35 insertions, 59 deletions
diff --git a/eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.cpp b/eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.cpp
index fc77c0a954d..ef2a56d4582 100644
--- a/eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.cpp
+++ b/eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.cpp
@@ -6,31 +6,6 @@
namespace vespalib::tensor {
-using Address = DenseTensorAddressCombiner::Address;
-
-namespace {
-
-class AddressReader
-{
-private:
- const Address &_address;
- size_t _idx;
-
-public:
- AddressReader(const Address &address)
- : _address(address),
- _idx(0)
- {}
- Address::value_type nextLabel() {
- return _address[_idx++];
- }
- bool valid() {
- return _idx < _address.size();
- }
-};
-
-}
-
DenseTensorAddressCombiner::~DenseTensorAddressCombiner() { }
DenseTensorAddressCombiner::DenseTensorAddressCombiner(const eval::ValueType &lhs,
@@ -59,34 +34,6 @@ DenseTensorAddressCombiner::DenseTensorAddressCombiner(const eval::ValueType &lh
_combinedAddress.resize(_ops.size());
}
-bool
-DenseTensorAddressCombiner::combine(const CellsIterator &lhsItr,
- const CellsIterator &rhsItr)
-{
- uint32_t index(0);
- AddressReader lhsReader(lhsItr.address());
- AddressReader rhsReader(rhsItr.address());
- for (const auto &op : _ops) {
- switch (op) {
- case AddressOp::LHS:
- _combinedAddress[index] = lhsReader.nextLabel();
- break;
- case AddressOp::RHS:
- _combinedAddress[index] = rhsReader.nextLabel();
- break;
- case AddressOp::BOTH:
- Address::value_type lhsLabel = lhsReader.nextLabel();
- Address::value_type rhsLabel = rhsReader.nextLabel();
- if (lhsLabel != rhsLabel) {
- return false;
- }
- _combinedAddress[index] = lhsLabel;
- }
- index++;
- }
- return true;
-}
-
eval::ValueType
DenseTensorAddressCombiner::combineDimensions(const eval::ValueType &lhs,
const eval::ValueType &rhs)
diff --git a/eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.h b/eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.h
index dd1fc6572a9..37fad083dc1 100644
--- a/eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.h
+++ b/eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.h
@@ -21,24 +21,53 @@ public:
using Address = DenseTensorCellsIterator::Address;
private:
- enum class AddressOp {
- LHS,
- RHS,
- BOTH
- };
+ enum class AddressOp { LHS, RHS, BOTH };
using CellsIterator = DenseTensorCellsIterator;
std::vector<AddressOp> _ops;
Address _combinedAddress;
+ class AddressReader
+ {
+ private:
+ const Address &_address;
+ uint32_t _idx;
+ public:
+ AddressReader(const Address &address) : _address(address), _idx(0) {}
+ Address::value_type nextLabel() { return _address[_idx++]; }
+ };
public:
DenseTensorAddressCombiner(const eval::ValueType &lhs, const eval::ValueType &rhs);
~DenseTensorAddressCombiner();
- bool combine(const CellsIterator &lhsItr, const CellsIterator &rhsItr);
const Address &address() const { return _combinedAddress; }
+ bool combine(const CellsIterator &lhsItr, const CellsIterator &rhsItr) {
+ uint32_t index(0);
+ AddressReader lhsReader(lhsItr.address());
+ AddressReader rhsReader(rhsItr.address());
+ for (const auto &op : _ops) {
+ switch (op) {
+ case AddressOp::LHS:
+ _combinedAddress[index] = lhsReader.nextLabel();
+ break;
+ case AddressOp::RHS:
+ _combinedAddress[index] = rhsReader.nextLabel();
+ break;
+ case AddressOp::BOTH:
+ Address::value_type lhsLabel = lhsReader.nextLabel();
+ Address::value_type rhsLabel = rhsReader.nextLabel();
+ if (lhsLabel != rhsLabel) {
+ return false;
+ }
+ _combinedAddress[index] = lhsLabel;
+ }
+ index++;
+ }
+ return true;
+ }
+
static eval::ValueType combineDimensions(const eval::ValueType &lhs, const eval::ValueType &rhs);
};