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>
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>
52 
53 template <size_t... I1, size_t... 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 <>
62 template <>
64 template <class... 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