Skip to content

Commit 8e4cc7c

Browse files
committed
Merge pull request #120 from ros2/use_variadic_macros
Use variadic macros
2 parents b84caa8 + 383f7c8 commit 8e4cc7c

File tree

1 file changed

+27
-27
lines changed

1 file changed

+27
-27
lines changed

rclcpp/include/rclcpp/macros.hpp

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@
1919
*
2020
* Use in the private section of the class.
2121
*/
22-
#define RCLCPP_DISABLE_COPY(Class) \
23-
Class(const Class &) = delete; \
24-
Class & operator=(const Class &) = delete;
22+
#define RCLCPP_DISABLE_COPY(...) \
23+
__VA_ARGS__(const __VA_ARGS__ &) = delete; \
24+
__VA_ARGS__ & operator=(const __VA_ARGS__ &) = delete;
2525

2626
/* Defines aliases and static functions for using the Class with smart pointers.
2727
*
2828
* Use in the public section of the class.
2929
* Make sure to include <memory> in the header when using this.
3030
*/
31-
#define RCLCPP_SMART_PTR_DEFINITIONS(Class) \
32-
RCLCPP_SHARED_PTR_DEFINITIONS(Class) \
33-
RCLCPP_WEAK_PTR_DEFINITIONS(Class) \
34-
RCLCPP_UNIQUE_PTR_DEFINITIONS(Class)
31+
#define RCLCPP_SMART_PTR_DEFINITIONS(...) \
32+
RCLCPP_SHARED_PTR_DEFINITIONS(__VA_ARGS__) \
33+
RCLCPP_WEAK_PTR_DEFINITIONS(__VA_ARGS__) \
34+
RCLCPP_UNIQUE_PTR_DEFINITIONS(__VA_ARGS__)
3535

3636
/* Defines aliases and static functions for using the Class with smart pointers.
3737
*
@@ -42,44 +42,44 @@
4242
* Use in the public section of the class.
4343
* Make sure to include <memory> in the header when using this.
4444
*/
45-
#define RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE(Class) \
46-
RCLCPP_SHARED_PTR_DEFINITIONS(Class) \
47-
RCLCPP_WEAK_PTR_DEFINITIONS(Class) \
48-
__RCLCPP_UNIQUE_PTR_ALIAS(Class)
45+
#define RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE(...) \
46+
RCLCPP_SHARED_PTR_DEFINITIONS(__VA_ARGS__) \
47+
RCLCPP_WEAK_PTR_DEFINITIONS(__VA_ARGS__) \
48+
__RCLCPP_UNIQUE_PTR_ALIAS(__VA_ARGS__)
4949

50-
#define __RCLCPP_SHARED_PTR_ALIAS(Class) using SharedPtr = std::shared_ptr<Class>;
50+
#define __RCLCPP_SHARED_PTR_ALIAS(...) using SharedPtr = std::shared_ptr<__VA_ARGS__>;
5151

52-
#define __RCLCPP_MAKE_SHARED_DEFINITION(Class) \
52+
#define __RCLCPP_MAKE_SHARED_DEFINITION(...) \
5353
template<typename ... Args> \
54-
static std::shared_ptr<Class> \
54+
static std::shared_ptr<__VA_ARGS__> \
5555
make_shared(Args && ... args) \
5656
{ \
57-
return std::make_shared<Class>(std::forward<Args>(args) ...); \
57+
return std::make_shared<__VA_ARGS__>(std::forward<Args>(args) ...); \
5858
}
5959

6060
/// Defines aliases and static functions for using the Class with shared_ptrs.
61-
#define RCLCPP_SHARED_PTR_DEFINITIONS(Class) \
62-
__RCLCPP_SHARED_PTR_ALIAS(Class) \
63-
__RCLCPP_MAKE_SHARED_DEFINITION(Class)
61+
#define RCLCPP_SHARED_PTR_DEFINITIONS(...) \
62+
__RCLCPP_SHARED_PTR_ALIAS(__VA_ARGS__) \
63+
__RCLCPP_MAKE_SHARED_DEFINITION(__VA_ARGS__)
6464

65-
#define __RCLCPP_WEAK_PTR_ALIAS(Class) using WeakPtr = std::weak_ptr<Class>;
65+
#define __RCLCPP_WEAK_PTR_ALIAS(...) using WeakPtr = std::weak_ptr<__VA_ARGS__>;
6666

6767
/// Defines aliases and static functions for using the Class with weak_ptrs.
68-
#define RCLCPP_WEAK_PTR_DEFINITIONS(Class) __RCLCPP_WEAK_PTR_ALIAS(Class)
68+
#define RCLCPP_WEAK_PTR_DEFINITIONS(...) __RCLCPP_WEAK_PTR_ALIAS(__VA_ARGS__)
6969

70-
#define __RCLCPP_UNIQUE_PTR_ALIAS(Class) using UniquePtr = std::unique_ptr<Class>;
70+
#define __RCLCPP_UNIQUE_PTR_ALIAS(...) using UniquePtr = std::unique_ptr<__VA_ARGS__>;
7171

72-
#define __RCLCPP_MAKE_UNIQUE_DEFINITION(Class) \
72+
#define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) \
7373
template<typename ... Args> \
74-
static std::unique_ptr<Class> \
74+
static std::unique_ptr<__VA_ARGS__> \
7575
make_unique(Args && ... args) \
7676
{ \
77-
return std::unique_ptr<Class>(new Class(std::forward<Args>(args) ...)); \
77+
return std::unique_ptr<__VA_ARGS__>(new __VA_ARGS__(std::forward<Args>(args) ...)); \
7878
}
7979
/// Defines aliases and static functions for using the Class with unique_ptrs.
80-
#define RCLCPP_UNIQUE_PTR_DEFINITIONS(Class) \
81-
__RCLCPP_UNIQUE_PTR_ALIAS(Class) \
82-
__RCLCPP_MAKE_UNIQUE_DEFINITION(Class)
80+
#define RCLCPP_UNIQUE_PTR_DEFINITIONS(...) \
81+
__RCLCPP_UNIQUE_PTR_ALIAS(__VA_ARGS__) \
82+
__RCLCPP_MAKE_UNIQUE_DEFINITION(__VA_ARGS__)
8383

8484
#define RCLCPP_INFO(Args) std::cout << Args << std::endl;
8585

0 commit comments

Comments
 (0)