qxLib
property.h
Go to the documentation of this file.
1 /**
2 
3  @file property.h
4  @author Khrapov
5  @date 7.08.2022
6  @copyright © Nick Khrapov, 2022. All right reserved.
7 
8 **/
9 #pragma once
10 
11 /**
12  @brief Fast C#-like getter
13  @param type - value type
14  @param name - value name
15 **/
16 #define QX_GETTER(type, name) \
17  const type& get_##name() const noexcept \
18  { \
19  return m_##name; \
20  }
21 
22 /**
23  @def QX_GETTER_REF
24  @brief Fast C#-like ref getter
25  @param type - value type
26  @param name - value name
27 **/
28 #define QX_GETTER_REF(type, name) \
29  type& get_##name() noexcept \
30  { \
31  return m_##name; \
32  }
33 //-V:QX_GETTER_REF:1003
34 
35 /**
36  @brief Fast C#-like setter
37  @param type - value type
38  @param name - value name
39 **/
40 #define QX_SETTER(type, name) \
41  void set_##name(const type& val) noexcept \
42  { \
43  m_##name = val; \
44  }
45 
46 /**
47  @brief A set of data member, getter and setter
48  @param type - data type
49  @param name - data name
50  @param ... - data default value
51 **/
52 #define QX_PROPERTY(type, name, ...) \
53 public: \
54  QX_GETTER(type, name); \
55  QX_SETTER(type, name); \
56  \
57 private: \
58  type m_##name = type(__VA_ARGS__)