ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
TensorKey.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <Logging.h>
11 #include <Optional.h>
12 
13 namespace cloudViewer {
14 namespace core {
15 
16 // Avoids circular include.
17 class Tensor;
18 
19 // Same as utility::nullopt. Provides a similar Python slicing API.
21 
26 class TensorKey {
27 public:
37  static TensorKey Index(int64_t index);
38 
53 
65  static TensorKey IndexTensor(const Tensor& index_tensor);
66 
69 
71  TensorKeyMode GetMode() const;
72 
74  std::string ToString() const;
75 
76 public:
79  int64_t GetIndex() const;
80 
83  int64_t GetStart() const;
84 
87  int64_t GetStop() const;
88 
91  int64_t GetStep() const;
92 
104  TensorKey InstantiateDimSize(int64_t dim_size) const;
105 
108  Tensor GetIndexTensor() const;
109 
110 private:
111  class Impl;
112  class IndexImpl;
113  class SliceImpl;
114  class IndexTensorImpl;
115  std::shared_ptr<Impl> impl_;
116  TensorKey(const std::shared_ptr<Impl>& impl);
117 };
118 
119 } // namespace core
120 } // namespace cloudViewer
TensorKey is used to represent single index, slice or advanced indexing on a Tensor.
Definition: TensorKey.h:26
std::string ToString() const
Convert TensorKey to a string representation.
Definition: TensorKey.cpp:132
TensorKeyMode GetMode() const
Returns TensorKey mode.
Definition: TensorKey.cpp:130
TensorKey InstantiateDimSize(int64_t dim_size) const
Definition: TensorKey.cpp:177
static TensorKey IndexTensor(const Tensor &index_tensor)
Definition: TensorKey.cpp:144
Tensor GetIndexTensor() const
Definition: TensorKey.cpp:186
static TensorKey Index(int64_t index)
Definition: TensorKey.cpp:134
static TensorKey Slice(utility::optional< int64_t > start, utility::optional< int64_t > stop, utility::optional< int64_t > step)
Definition: TensorKey.cpp:138
constexpr utility::nullopt_t None
Definition: TensorKey.h:20
Generic file read and write utility for python interface.