GCC Code Coverage Report


Directory: ./
File: include/pinocchio/bindings/python/utils/deprecation.hpp
Date: 2024-08-27 18:20:05
Exec Total Coverage
Lines: 9 12 75.0%
Branches: 0 0 -%

Line Branch Exec Source
1 //
2 // Copyright (c) 2020 INRIA
3 //
4
5 #ifndef __pinocchio_python_utils_deprecation_hpp__
6 #define __pinocchio_python_utils_deprecation_hpp__
7
8 #include <Python.h>
9 #include <boost/python.hpp>
10 #include <string>
11
12 namespace pinocchio
13 {
14 namespace python
15 {
16 template<class Policy = boost::python::default_call_policies>
17 struct deprecated_warning_policy : Policy
18 {
19 120 deprecated_warning_policy(const std::string & warning_message = "")
20 : Policy()
21 120 , m_warning_message(warning_message)
22 {
23 120 }
24
25 template<class ArgumentPackage>
26 bool precall(ArgumentPackage const & args) const
27 {
28 PyErr_WarnEx(PyExc_UserWarning, m_warning_message.c_str(), 1);
29 return static_cast<const Policy *>(this)->precall(args);
30 }
31
32 typedef typename Policy::result_converter result_converter;
33 typedef typename Policy::argument_package argument_package;
34
35 protected:
36 const std::string m_warning_message;
37 };
38
39 template<class Policy = boost::python::default_call_policies>
40 struct deprecated_member : deprecated_warning_policy<Policy>
41 {
42 80 deprecated_member(
43 const std::string & warning_message = "This class member has been marked as deprecated and "
44 "will be removed in a future release.")
45 80 : deprecated_warning_policy<Policy>(warning_message)
46 {
47 80 }
48 };
49
50 template<class Policy = boost::python::default_call_policies>
51 struct deprecated_function : deprecated_warning_policy<Policy>
52 {
53 40 deprecated_function(
54 const std::string & warning_message =
55 "This function has been marked as deprecated and will be removed in a future release.")
56 40 : deprecated_warning_policy<Policy>(warning_message)
57 {
58 40 }
59 };
60 } // namespace python
61 } // namespace pinocchio
62
63 #endif // ifndef __pinocchio_python_utils_deprecation_hpp__
64