gtsam
Loading...
Searching...
No Matches
utilities.h
1#pragma once
2
3#include <gtsam/dllexport.h>
4
5#include <iostream>
6#include <random>
7#include <sstream>
8#include <string>
9
14static std::mt19937_64 kRandomNumberGenerator(42);
15
16namespace gtsam {
23struct GTSAM_EXPORT RedirectCout {
25 RedirectCout() : ssBuffer_(), coutBuffer_(std::cout.rdbuf(ssBuffer_.rdbuf())) {}
26
28 std::string str() const;
29
32
33private:
34 std::stringstream ssBuffer_;
35 std::streambuf* coutBuffer_;
36};
37
38} // namespace gtsam
39
40namespace gtsam {
41// Adapted from https://stackoverflow.com/a/32223343/9151520
42// An adaptation of boost::mp11::index_sequence
43template <size_t... Ints>
45 using type = index_sequence;
46 using value_type = size_t;
47 static constexpr std::size_t size() noexcept { return sizeof...(Ints); }
48};
49namespace detail {
50template <class Sequence1, class Sequence2>
52
53template <size_t... I1, size_t... I2>
55 : index_sequence<I1..., (sizeof...(I1) + I2)...> {};
56} // namespace detail
57template <size_t N>
58struct make_index_sequence : detail::_merge_and_renumber<typename make_index_sequence<N / 2>::type,
59 typename make_index_sequence<N - N / 2>::type> {};
60template <>
62template <>
64template <class... T>
65using index_sequence_for = make_index_sequence<sizeof...(T)>;
66} // namespace gtsam
STL namespace.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
For Python str().
Definition utilities.h:23
RedirectCout()
constructor – redirect stdout buffer to a stringstream buffer
Definition utilities.h:25
Definition utilities.h:44
Definition utilities.h:51
Definition utilities.h:59