filter_item.h 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /************************************************************************************
  2. * *
  3. * Copyright (c) 2014 - 2018 Axel Menzel <info@rttr.org> *
  4. * *
  5. * This file is part of RTTR (Run Time Type Reflection) *
  6. * License: MIT License *
  7. * *
  8. * Permission is hereby granted, free of charge, to any person obtaining *
  9. * a copy of this software and associated documentation files (the "Software"), *
  10. * to deal in the Software without restriction, including without limitation *
  11. * the rights to use, copy, modify, merge, publish, distribute, sublicense, *
  12. * and/or sell copies of the Software, and to permit persons to whom the *
  13. * Software is furnished to do so, subject to the following conditions: *
  14. * *
  15. * The above copyright notice and this permission notice shall be included in *
  16. * all copies or substantial portions of the Software. *
  17. * *
  18. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
  19. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
  20. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
  21. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
  22. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, *
  23. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE *
  24. * SOFTWARE. *
  25. * *
  26. *************************************************************************************/
  27. #ifndef RTTR_FILTER_ITEM_H_
  28. #define RTTR_FILTER_ITEM_H_
  29. #include "rttr/detail/base/core_prerequisites.h"
  30. #include "rttr/enum_flags.h"
  31. namespace rttr
  32. {
  33. /*!
  34. * The \ref filter_item enum is used to filter the search for certain members in \ref type "types".
  35. *
  36. * Combine the enum value together with the bitwise OR operator.
  37. *
  38. * \remark In order to get a return, you must specify **filter_item::instance_item** or **filter_item::static_item**
  39. * along with an accessor **filter_item::public_access** or **filter_item::non_public_access**.
  40. *
  41. * \see \ref type::get_properties(filter_items) const
  42. */
  43. enum class filter_item
  44. {
  45. /*!
  46. * \brief Includes all members in the search, which needs an instance to be invoked.
  47. */
  48. instance_item = 1,
  49. /*!
  50. * \brief Includes all static members in the search.
  51. * Static members doesn't need any instance for invoking.
  52. */
  53. static_item = 2,
  54. /*!
  55. * \brief Includes all public specified members in the search.
  56. *
  57. * \see access_levels
  58. */
  59. public_access = 4,
  60. /*!
  61. * \brief Includes all non public (*private* or *protected*) members in the search.
  62. *
  63. * \see access_levels
  64. */
  65. non_public_access = 8,
  66. /*!
  67. * \brief Returns all members declared for the current type;
  68. * inherited members are not returned.
  69. */
  70. declared_only = 16
  71. };
  72. RTTR_DECLARE_FLAGS(filter_items, filter_item)
  73. RTTR_DECLARE_ENUM_FLAGS_OPERATORS(filter_items)
  74. } // end namespace rttr
  75. #endif // RTTR_FILTER_ITEM_H_