[core] Add 'fill' method to ADT::tensor::Index (#198)
author박종현/동작제어Lab(SR)/Senior Engineer/삼성전자 <jh1302.park@samsung.com>
Wed, 9 May 2018 05:40:36 +0000 (14:40 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Wed, 9 May 2018 05:40:36 +0000 (14:40 +0900)
This commit adds 'fill' method (to ADT::tensor::Index class) which sets
all the indices as the given value.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
libs/core/include/nncc/core/ADT/tensor/Index.h
libs/core/src/nncc/core/ADT/tensor/Index.cpp
libs/core/src/nncc/core/ADT/tensor/Index.test.cpp

index ed68720..75b354b 100644 (file)
@@ -27,6 +27,9 @@ public:
   Index &resize(uint32_t size);
 
 public:
+  Index &fill(uint32_t index);
+
+public:
   uint32_t &at(uint32_t axis);
   uint32_t at(uint32_t axis) const;
 
index c2acde7..4433f1c 100644 (file)
@@ -1,5 +1,7 @@
 #include "nncc/core/ADT/tensor/Index.h"
 
+#include <algorithm>
+
 namespace nncc
 {
 namespace core
@@ -17,6 +19,12 @@ Index::Index(std::initializer_list<uint32_t> &&l) : _indices{l}
 uint32_t Index::rank(void) const { return _indices.size(); }
 Index &Index::resize(uint32_t size) { _indices.resize(size); }
 
+Index &Index::fill(uint32_t index)
+{
+  std::fill(_indices.begin(), _indices.end(), index);
+  return (*this);
+}
+
 uint32_t &Index::at(uint32_t axis) { return _indices.at(axis); }
 uint32_t Index::at(uint32_t axis) const { return _indices.at(axis); }
 
index d50def0..aec0791 100644 (file)
@@ -57,3 +57,15 @@ TEST(ADT_TENSOR_INDEX, copy)
     ASSERT_EQ(original.at(axis), copied.at(axis));
   }
 }
+
+TEST(ADT_TENSOR_INDEX, fill)
+{
+  nncc::core::ADT::tensor::Index index{1, 6};
+
+  index.fill(3);
+
+  ASSERT_EQ(index.rank(), 2);
+
+  ASSERT_EQ(index.at(0), 3);
+  ASSERT_EQ(index.at(1), 3);
+}