Open3D (C++ API)  0.18.0+5c982c7
TensorKey.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - Open3D: www.open3d.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2023 www.open3d.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include "open3d/utility/Logging.h"
12 
13 namespace open3d {
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 open3d
Definition: Tensor.h:32
TensorKey is used to represent single index, slice or advanced indexing on a Tensor.
Definition: TensorKey.h:26
int64_t GetStart() const
Definition: TensorKey.cpp:155
std::string ToString() const
Convert TensorKey to a string representation.
Definition: TensorKey.cpp:131
static TensorKey Index(int64_t index)
Definition: TensorKey.cpp:133
int64_t GetIndex() const
Definition: TensorKey.cpp:147
Tensor GetIndexTensor() const
Definition: TensorKey.cpp:185
int64_t GetStop() const
Definition: TensorKey.cpp:162
static TensorKey Slice(utility::optional< int64_t > start, utility::optional< int64_t > stop, utility::optional< int64_t > step)
Definition: TensorKey.cpp:137
TensorKeyMode
Definition: TensorKey.h:67
TensorKeyMode GetMode() const
Returns TensorKey mode.
Definition: TensorKey.cpp:129
static TensorKey IndexTensor(const Tensor &index_tensor)
Definition: TensorKey.cpp:143
~TensorKey()
Definition: TensorKey.h:68
TensorKey InstantiateDimSize(int64_t dim_size) const
Definition: TensorKey.cpp:176
int64_t GetStep() const
Definition: TensorKey.cpp:169
constexpr utility::nullopt_t None
Definition: TensorKey.h:20
Definition: PinholeCameraIntrinsic.cpp:16
Definition: Optional.h:149
Definition: Optional.h:148