diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-12-19 14:54:46 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-12-19 18:01:45 +0100 |
commit | fcec8f75e7984a4ae9e5030b7b20047aa51bdb77 (patch) | |
tree | 5796996dad319bd668f2aeaef0dd835e116f1706 /eval | |
parent | 2f0402fb28f53f8682d05d9b97ee082562e2861b (diff) |
Inline DenseTensorAddressCombiner::combine
Diffstat (limited to 'eval')
-rw-r--r-- | eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.cpp | 53 | ||||
-rw-r--r-- | eval/src/vespa/eval/tensor/dense/dense_tensor_address_combiner.h | 41 |
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); }; |