Open3D (C++ API)  0.17.0
Loading...
Searching...
No Matches
SizeVector.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 <cstddef>
11#include <string>
12#include <vector>
13
16
17namespace open3d {
18namespace core {
19
20class SizeVector;
21
31class DynamicSizeVector : public SmallVector<utility::optional<int64_t>, 4> {
32public:
35
37 const std::initializer_list<utility::optional<int64_t>>& dim_sizes);
38
39 DynamicSizeVector(const std::vector<utility::optional<int64_t>>& dim_sizes);
40
42
43 explicit DynamicSizeVector(int64_t n, int64_t initial_value = 0);
44
45 template <class InputIterator>
46 DynamicSizeVector(InputIterator first, InputIterator last)
47 : super_t(first, last) {}
48
49 DynamicSizeVector(const SizeVector& dim_sizes);
50
52
54
56
57 std::string ToString() const;
58
59 bool IsDynamic() const;
60
61 // required for pybind
62 void shrink_to_fit() {}
63};
64
69class SizeVector : public SmallVector<int64_t, 4> {
70public:
73
74 SizeVector(const std::initializer_list<int64_t>& dim_sizes);
75
76 SizeVector(const std::vector<int64_t>& dim_sizes);
77
78 SizeVector(const SizeVector& other);
79
80 explicit SizeVector(int64_t n, int64_t initial_value = 0);
81
82 template <class InputIterator>
83 SizeVector(InputIterator first, InputIterator last)
84 : super_t(first, last) {}
85
87
89
90 int64_t NumElements() const;
91
92 int64_t GetLength() const;
93
94 std::string ToString() const;
95
96 void AssertCompatible(const DynamicSizeVector& dsv,
97 const std::string msg = "") const;
98
99 bool IsCompatible(const DynamicSizeVector& dsv) const;
100
101 operator std::vector<int64_t>() const {
102 return std::vector<int64_t>(begin(), end());
103 }
104
105 // required for pybind
107};
108
109} // namespace core
110} // namespace open3d
Definition SizeVector.h:31
DynamicSizeVector(InputIterator first, InputIterator last)
Definition SizeVector.h:46
bool IsDynamic() const
Definition SizeVector.cpp:81
SizeVector ToSizeVector() const
Definition SizeVector.cpp:40
DynamicSizeVector & operator=(const DynamicSizeVector &v)
Definition SizeVector.cpp:51
void shrink_to_fit()
Definition SizeVector.h:62
std::string ToString() const
Definition SizeVector.cpp:61
DynamicSizeVector()
Definition SizeVector.h:34
Definition SizeVector.h:69
bool IsCompatible(const DynamicSizeVector &dsv) const
Definition SizeVector.cpp:149
void shrink_to_fit()
Definition SizeVector.h:106
void AssertCompatible(const DynamicSizeVector &dsv, const std::string msg="") const
Definition SizeVector.cpp:136
SizeVector()
Definition SizeVector.h:72
int64_t NumElements() const
Definition SizeVector.cpp:108
SizeVector(InputIterator first, InputIterator last)
Definition SizeVector.h:83
SizeVector & operator=(const SizeVector &v)
Definition SizeVector.cpp:98
int64_t GetLength() const
Definition SizeVector.cpp:124
std::string ToString() const
Definition SizeVector.cpp:132
Definition SmallVector.h:1261
iterator begin()
Definition SmallVector.h:301
iterator end()
Definition SmallVector.h:303
Definition Optional.h:259
Definition PinholeCameraIntrinsic.cpp:16