gtsam
base
base/utilities.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <gtsam/dllexport.h>
4
5
#include <iostream>
6
#include <random>
7
#include <sstream>
8
#include <string>
9
14
static
std::mt19937_64
kRandomNumberGenerator
(42);
15
16
namespace
gtsam
{
23
struct
GTSAM_EXPORT
RedirectCout
{
25
RedirectCout
() : ssBuffer_(), coutBuffer_(
std
::cout.rdbuf(ssBuffer_.rdbuf())) {}
26
28
std::string
str
()
const
;
29
31
~
RedirectCout
();
32
33
private
:
34
std::stringstream
ssBuffer_
;
35
std::streambuf*
coutBuffer_
;
36
};
37
38
}
// namespace gtsam
39
40
namespace
gtsam
{
41
// Adapted from https://stackoverflow.com/a/32223343/9151520
42
// An adaptation of boost::mp11::index_sequence
43
template
<
size_t
... Ints>
44
struct
index_sequence
{
45
using
type
=
index_sequence
;
46
using
value_type
=
size_t
;
47
static
constexpr
std::size_t
size
() noexcept {
return
sizeof
...(Ints); }
48
};
49
namespace
detail
{
50
template
<
class
Sequence1,
class
Sequence2>
51
struct
_merge_and_renumber
;
52
53
template
<
size_t
... I1,
size_t
... I2>
54
struct
_merge_and_renumber
<
index_sequence
<I1...>,
index_sequence
<I2...>>
55
:
index_sequence
<I1..., (sizeof...(I1) + I2)...> {};
56
}
// namespace detail
57
template
<
size_t
N>
58
struct
make_index_sequence
:
detail::_merge_and_renumber
<typename make_index_sequence<N / 2>::type,
59
typename make_index_sequence<N - N / 2>::type> {};
60
template
<>
61
struct
make_index_sequence
<0> :
index_sequence
<> {};
62
template
<>
63
struct
make_index_sequence
<1> :
index_sequence
<0> {};
64
template
<
class
...
T
>
65
using
index_sequence_for
=
make_index_sequence
<
sizeof
...(T)>;
66
}
// namespace gtsam
gtsam::RedirectCout
Definition:
base/utilities.h:23
detail
Definition:
testSerializationNonlinear.cpp:69
gtsam::RedirectCout::coutBuffer_
std::streambuf * coutBuffer_
Definition:
base/utilities.h:35
gtsam::index_sequence< I1...,(sizeof...(I1)+I2)... >::value_type
size_t value_type
Definition:
base/utilities.h:46
gtsam::RedirectCout::ssBuffer_
std::stringstream ssBuffer_
Definition:
base/utilities.h:34
gtsam::RedirectCout::RedirectCout
RedirectCout()
constructor – redirect stdout buffer to a stringstream buffer
Definition:
base/utilities.h:25
gtsam::detail::_merge_and_renumber
Definition:
base/utilities.h:51
gtsam::make_index_sequence
Definition:
base/utilities.h:58
Eigen::Triplet
A small structure to hold a non zero as a triplet (i,j,value).
Definition:
SparseUtil.h:162
size_t
std::size_t size_t
Definition:
wrap/pybind11/include/pybind11/detail/common.h:509
gtsam::index_sequence
Definition:
base/utilities.h:44
gtsam
traits
Definition:
ABC.h:17
gtsam::index_sequence::size
static constexpr std::size_t size() noexcept
Definition:
base/utilities.h:47
kRandomNumberGenerator
static std::mt19937_64 kRandomNumberGenerator(42)
Global default pseudo-random number generator object. In wrappers we can access std::mt19937_64 via g...
std
Definition:
BFloat16.h:88
gtsam.examples.ShonanAveragingCLI.str
str
Definition:
ShonanAveragingCLI.py:115
gtsam
Author(s):
autogenerated on Wed May 28 2025 03:08:41