gtsam_points
Loading...
Searching...
No Matches
gtsam_migration.hpp
1// SPDX-FileCopyrightText: Copyright 2024 Kenji Koide
2// SPDX-License-Identifier: MIT
3#pragma once
4
5#include <memory>
6#include <optional>
7#include <gtsam/config.h>
8#include <gtsam/base/make_shared.h>
9#include <gtsam/base/Matrix.h>
10
11namespace gtsam_points {
12
13#if GTSAM_VERSION_NUMERIC >= 40300
14
15template <typename T>
16using shared_ptr = std::shared_ptr<T>;
17
18template <typename T>
19using weak_ptr = std::weak_ptr<T>;
20
21template <class T, class U>
22auto dynamic_pointer_cast(const std::shared_ptr<U>& sp) -> std::shared_ptr<T> {
23 return std::dynamic_pointer_cast<T>(sp);
24}
25
26template <typename T>
27using optional = std::optional<T>;
28
29using OptionalMatrixType = gtsam::Matrix*;
30using OptionalMatrixVecType = std::vector<gtsam::Matrix>*;
31
32constexpr auto NoneValue = nullptr;
33
34#else
35
36template <typename T>
37using shared_ptr = boost::shared_ptr<T>;
38
39template <typename T>
40using weak_ptr = boost::weak_ptr<T>;
41
42template <class T, class U>
43auto dynamic_pointer_cast(const boost::shared_ptr<U>& sp) -> boost::shared_ptr<T> {
44 return boost::dynamic_pointer_cast<T>(sp);
45}
46
47template <typename T>
48using optional = boost::optional<T>;
49
50using OptionalMatrixType = boost::optional<gtsam::Matrix&>;
51using OptionalMatrixVecType = boost::optional<std::vector<gtsam::Matrix>&>;
52constexpr auto NoneValue = boost::none;
53
54#endif
55
56} // namespace gtsam_points