ThreadsafeException.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2 
3  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4  * Atlanta, Georgia 30332-0415
5  * All Rights Reserved
6  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7 
8  * See LICENSE for the license information
9 
10  * -------------------------------------------------------------------------- */
11 
20 #pragma once
21 
22 #include <gtsam/config.h> // for GTSAM_USE_TBB
23 
24 #include <gtsam/dllexport.h>
25 #include <string>
26 #include <typeinfo>
27 #include <exception>
28 #include <optional>
29 
30 #ifdef GTSAM_USE_TBB
31 #include <tbb/tbb_allocator.h>
32 #include <tbb/scalable_allocator.h>
33 #include <iostream>
34 #endif
35 
36 namespace gtsam {
37 
39 template<class DERIVED>
41 public std::exception
42 {
43 private:
44  typedef std::exception Base;
45 #ifdef GTSAM_USE_TBB
46 protected:
47  typedef std::basic_string<char, std::char_traits<char>,
48  tbb::tbb_allocator<char> > String;
49  typedef tbb::tbb_allocator<char> Allocator;
50 #else
51 protected:
52  typedef std::string String;
53  typedef std::allocator<char> Allocator;
54 #endif
55 
56 protected:
57  bool dynamic_;
58  mutable std::optional<String> description_;
59 
62  dynamic_(false) {
63  }
64 
67  Base(other), dynamic_(false) {
68  }
69 
71  ThreadsafeException(const std::string& description) :
72  dynamic_(false), description_(
73  String(description.begin(), description.end())) {
74  }
75 
77  ~ThreadsafeException() noexcept override {
78  }
79 
80 public:
81  const char* what() const noexcept override {
82  return description_ ? description_->c_str() : "";
83  }
84 };
85 
87 class GTSAM_EXPORT RuntimeErrorThreadsafe: public ThreadsafeException<RuntimeErrorThreadsafe> {
88 public:
90  RuntimeErrorThreadsafe(const std::string& description) :
92  }
93 };
94 
96 class OutOfRangeThreadsafe: public ThreadsafeException<OutOfRangeThreadsafe> {
97 public:
99  OutOfRangeThreadsafe(const std::string& description) :
101  }
102 };
103 
106  InvalidArgumentThreadsafe> {
107 public:
111  }
112 };
113 
115 class CholeskyFailed : public gtsam::ThreadsafeException<CholeskyFailed>
116 {
117 public:
118  CholeskyFailed() noexcept {}
119  ~CholeskyFailed() noexcept override {}
120 };
121 
122 } // namespace gtsam
std::optional< String > description_
Optional description.
InvalidArgumentThreadsafe(const std::string &description)
Construct with a string describing the exception.
std::allocator< char > Allocator
~ThreadsafeException() noexcept override
Default destructor doesn&#39;t have the noexcept.
OutOfRangeThreadsafe(const std::string &description)
Construct with a string describing the exception.
bool dynamic_
Whether this object was moved.
ThreadsafeException(const ThreadsafeException &other)
Copy constructor is protected - may only be created from derived classes.
Thread-safe runtime error exception.
Base exception type that uses tbb_allocator if GTSAM is compiled with TBB.
RuntimeErrorThreadsafe(const std::string &description)
Construct with a string describing the exception.
Thread-safe invalid argument exception.
traits
Definition: chartTesting.h:28
ThreadsafeException(const std::string &description)
Construct with description string.
~CholeskyFailed() noexcept override
static EIGEN_DEPRECATED const end_t end
Thread-safe out of range exception.
Indicate Cholesky factorization failure.
ThreadsafeException()
Default constructor is protected - may only be created from derived classes.
const char * what() const noexcept override


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:39:57