29 #include <initializer_list>
36 namespace tensor_init {
43 template <
typename T,
size_t D>
45 using type = std::initializer_list<
54 template <
typename T,
size_t D>
59 static constexpr
size_t value = 0;
70 static constexpr
size_t value(
const L& list) {
71 if (list.size() == 0) {
75 for (
const auto&
value : list) {
78 "Input contains ragged nested sequences"
79 "(nested lists with unequal sizes or shapes).");
89 static constexpr
size_t value(
const L& list) {
94 template <
typename L,
size_t... D>
100 template <
typename L>
106 while (shape.size() > (last_dim + 1) && shape[last_dim] != 0) {
109 shape.resize(last_dim + 1);
113 template <
typename T,
typename L>
118 template <
typename T,
typename L>
119 void NestedCopy(T&& iter,
const std::initializer_list<L>& list) {
120 for (
const auto& value : list) {
125 template <
typename T,
size_t D>
#define LogError(...)
Definition: Logging.h:67
Definition: SizeVector.h:79
int64_t NumElements() const
Definition: SizeVector.cpp:127
void NestedCopy(T &&iter, const L &list)
Definition: TensorInit.h:114
SizeVector InferShape(const L &list)
Definition: TensorInit.h:101
typename NestedInitializerImpl< T, D >::type NestedInitializerList
Definition: TensorInit.h:55
std::vector< T > ToFlatVector(const SizeVector &shape, const tensor_init::NestedInitializerList< T, D > &nested_list)
Definition: TensorInit.h:126
SizeVector InitializerShape(const L &list, std::index_sequence< D... >)
Definition: TensorInit.h:95
Definition: PinholeCameraIntrinsic.cpp:35
Definition: TensorInit.h:58
static constexpr size_t value
Definition: TensorInit.h:59
static constexpr size_t value(const L &list)
Definition: TensorInit.h:89
Definition: TensorInit.h:68
static constexpr size_t value(const L &list)
Definition: TensorInit.h:70
T type
Definition: TensorInit.h:51
Definition: TensorInit.h:44
std::initializer_list< typename NestedInitializerImpl< T, D - 1 >::type > type
Definition: TensorInit.h:46