X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Faction%2Flist-internal.hpp;h=607d5981887df3d8fceb1f958c9b9faab910c837;hb=10c9e48bf29b5d7736b5c8635afb50f7c422e1a4;hp=7282ab7e4599ebc58a90d94c8cfbc12715233e1b;hpb=28f23191dcbf047429d51950a337a57d7a3f866a;p=lttng-tools.git diff --git a/include/lttng/action/list-internal.hpp b/include/lttng/action/list-internal.hpp index 7282ab7e4..607d59818 100644 --- a/include/lttng/action/list-internal.hpp +++ b/include/lttng/action/list-internal.hpp @@ -8,8 +8,14 @@ #ifndef LTTNG_ACTION_LIST_INTERNAL_H #define LTTNG_ACTION_LIST_INTERNAL_H +#include +#include +#include #include +#include + +#include #include struct lttng_action; @@ -38,4 +44,54 @@ lttng_action_list_mi_serialize(const struct lttng_trigger *trigger, const struct mi_lttng_error_query_callbacks *error_query_callbacks, struct lttng_dynamic_array *action_path_indexes); +namespace lttng { +namespace ctl { +namespace details { +class action_list_operations { +public: + static lttng_action *get(const lttng_action *list, std::size_t index) noexcept + { + return lttng_action_list_borrow_mutable_at_index(list, index); + } + + static std::size_t size(const lttng_action *list) + { + unsigned int count; + const auto status = lttng_action_list_get_count(list, &count); + + if (status != LTTNG_ACTION_STATUS_OK) { + LTTNG_THROW_INVALID_ARGUMENT_ERROR( + "Failed to get action list element count"); + } + + return count; + } +}; + +class const_action_list_operations { +public: + static const lttng_action *get(const lttng_action *list, std::size_t index) noexcept + { + return lttng_action_list_get_at_index(list, index); + } + + static std::size_t size(const lttng_action *list) + { + return action_list_operations::size(list); + } +}; +} /* namespace details */ + +using action_list_view = utils::random_access_container_wrapper; + +using const_action_list_view = + utils::random_access_container_wrapper; + +} /* namespace ctl */ +} /* namespace lttng */ + #endif /* LTTNG_ACTION_LIST_INTERNAL_H */