DDC 0.12.0
Loading...
Searching...
No Matches
pdi.cpp
1// Copyright (C) The DDC development team, see COPYRIGHT.md file
2//
3// SPDX-License-Identifier: MIT
4
5#include <cstring>
6#include <string>
7#include <utility>
8#include <vector>
9
10#include <pdi.h>
11
12#include "pdi.hpp"
13
14namespace ddc {
15
16char const* PdiEvent::store_name(std::string&& name)
17{
18 return m_names.emplace_back(std::move(name)).c_str();
19}
20
21char const* PdiEvent::store_name(std::string const& name)
22{
23 return m_names.emplace_back(name).c_str();
24}
25
26PdiEvent::PdiEvent(std::string const& event_name) : m_event_name(event_name) {}
27
28PdiEvent::~PdiEvent() noexcept
29{
30 PDI_event(m_event_name.c_str());
31 for (std::string const& one_name : m_names) {
32 PDI_reclaim(one_name.c_str());
33 }
34}
35
36PdiEvent& PdiEvent::with(std::string const& name, char const* const c_string)
37{
38 PDI_share(store_name(name + "_size"), store_scalar(std::strlen(c_string)), PDI_OUT);
39 PDI_share(store_name(name), c_string, PDI_OUT);
40 return *this;
41}
42
43} // namespace ddc
~PdiEvent() noexcept
Definition pdi.cpp:28
PdiEvent(std::string const &event_name)
Definition pdi.cpp:26
The top-level namespace of DDC.