include: add IWYU pragmas in private header files
[babeltrace.git] / include / babeltrace2 / trace-ir / event-class.h
CommitLineData
56e18c4c 1/*
0235b0db 2 * SPDX-License-Identifier: MIT
56e18c4c 3 *
0235b0db 4 * Copyright (C) 2010-2019 EfficiOS Inc. and Linux Foundation
56e18c4c
PP
5 */
6
0235b0db
MJ
7#ifndef BABELTRACE2_TRACE_IR_EVENT_CLASS_H
8#define BABELTRACE2_TRACE_IR_EVENT_CLASS_H
9
f38da6ca
SM
10/* IWYU pragma: private, include <babeltrace2/babeltrace.h> */
11
4fa90f32
PP
12#ifndef __BT_IN_BABELTRACE_H
13# error "Please include <babeltrace2/babeltrace.h> instead."
14#endif
15
d24d5663
PP
16#include <stdint.h>
17
3fadfbc0 18#include <babeltrace2/types.h>
b19ff26f 19
56e18c4c
PP
20#ifdef __cplusplus
21extern "C" {
22#endif
23
43c59509
PP
24/*!
25@defgroup api-tir-ev-cls Event class
26@ingroup api-tir
27
28@brief
29 Class of \bt_p_ev.
30
31An <strong><em>event class</em></strong> is the class of \bt_p_ev,
32which \bt_p_ev_msg contain:
33
34@image html trace-structure.png
35
36In the illustration above, notice that:
37
38- A \bt_stream is a conceptual \ref api-msg-seq "sequence of messages",
39 some of which are \bt_p_ev_msg.
40- An event message contains an \bt_ev.
41- An event is an instance of an event class.
42- The \ref api-tir-ev-prop-payload "payload field" of an event is an
43 instance of the \ref api-tir-ev-cls-prop-p-fc "payload field class"
44 which an event class contains.
45
46An event class is a \ref api-tir "trace IR" metadata object.
47
48An event class is a \ref api-fund-shared-object "shared object": get a
49new reference with bt_event_class_get_ref() and put an existing
50reference with bt_event_class_put_ref().
51
52Some library functions \ref api-fund-freezing "freeze" event classes on
53success. The documentation of those functions indicate this
54postcondition.
55
56The type of an event class is #bt_event_class.
57
58A \bt_stream_cls contains event classes. All the event classes of a
59given stream class have unique
60\ref api-tir-ev-cls-prop-id "numeric IDs". Borrow the stream class
61which contains an event class with bt_event_class_borrow_stream_class()
62or bt_event_class_borrow_stream_class_const().
63
64To create a default event class:
65
66<dl>
67 <dt>
68 If bt_stream_class_assigns_automatic_event_class_id() returns
69 #BT_TRUE (the default) for the stream class to use
70 </dt>
71 <dd>Use bt_event_class_create().</dd>
72
73 <dt>
74 If bt_stream_class_assigns_automatic_event_class_id() returns
75 #BT_FALSE for the stream class to use
76 </dt>
77 <dd>Use bt_event_class_create_with_id().</dd>
78</dl>
79
80<h1>Properties</h1>
81
82An event class has the following properties:
83
84<dl>
85 <dt>\anchor api-tir-ev-cls-prop-id Numeric ID</dt>
86 <dd>
87 Numeric ID, unique amongst the numeric IDs of the event class's
88 \bt_stream_cls's event classes.
89
90 Depending on whether or not the event class's stream class
91 automatically assigns event class IDs
92 (see bt_stream_class_assigns_automatic_event_class_id()),
93 set the event class's numeric ID on creation with
94 bt_event_class_create() or
95 bt_event_class_create_with_id().
96
97 You cannot change the numeric ID once the event class is created.
98
99 Get an event class's numeric ID with bt_event_class_get_id().
100 </dd>
101
102 <dt>\anchor api-tir-ev-cls-prop-name \bt_dt_opt Name</dt>
103 <dd>
104 Name of the event class.
105
106 Use bt_event_class_set_name() and bt_event_class_get_name().
107 </dd>
108
109 <dt>\anchor api-tir-ev-cls-prop-log-lvl \bt_dt_opt Log level</dt>
110 <dd>
111 Log level of the event class.
112
113 The event class's log level corresponds to the log level of the
114 tracer's original instrumentation point.
115
116 Use bt_event_class_set_log_level() and
117 bt_event_class_get_log_level().
118 </dd>
119
120 <dt>
121 \anchor api-tir-ev-cls-prop-emf-uri
122 \bt_dt_opt Eclipse Modeling Framework (EMF) URI
123 </dt>
124 <dd>
125 EMF URI of the event class.
126
127 Use bt_event_class_set_emf_uri() and
128 bt_event_class_get_emf_uri().
129 </dd>
130
131 <dt>
132 \anchor api-tir-ev-cls-prop-p-fc
133 \bt_dt_opt Payload field class
134 </dt>
135 <dd>
136 Payload \bt_fc of the event class.
137
138 The payload of an event class instance (\bt_ev) contains the
139 event's main data.
140
141 Use bt_event_class_set_payload_field_class()
142 bt_event_class_borrow_payload_field_class(),
143 and bt_event_class_borrow_payload_field_class_const().
144 </dd>
145
146 <dt>
147 \anchor api-tir-ev-cls-prop-sc-fc
148 \bt_dt_opt Specific context field class
149 </dt>
150 <dd>
151 Specific context \bt_fc of the event class.
152
153 The specific context of an event class instance (\bt_ev) contains
154 any contextual data of which the layout is specific to the
155 event's class and which does not belong to the payload.
156
157 Use bt_event_class_set_specific_context_field_class()
158 bt_event_class_borrow_specific_context_field_class(),
159 and bt_event_class_borrow_specific_context_field_class_const().
160 </dd>
161
162 <dt>
163 \anchor api-tir-ev-cls-prop-user-attrs
164 \bt_dt_opt User attributes
165 </dt>
166 <dd>
167 User attributes of the event class.
168
169 User attributes are custom attributes attached to an event class.
170
171 Use bt_event_class_set_user_attributes(),
172 bt_event_class_borrow_user_attributes(), and
173 bt_event_class_borrow_user_attributes_const().
174 </dd>
175</dl>
176*/
177
178/*! @{ */
179
180/*!
181@name Type
182@{
183
184@typedef struct bt_event_class bt_event_class;
185
186@brief
187 Event class.
188
189@}
190*/
191
192/*!
193@name Creation
194@{
195*/
196
197/*!
198@brief
199 Creates a default event class and adds it to the \bt_stream_cls
200 \bt_p{stream_class}.
201
202@attention
203 @parblock
204 Only use this function if
205
206 @code
207 bt_stream_class_assigns_automatic_event_class_id(stream_class)
208 @endcode
209
210 returns #BT_TRUE.
211
212 Otherwise, use bt_event_class_create_with_id().
213 @endparblock
214
215On success, the returned event class has the following property values:
216
217<table>
218 <tr>
219 <th>Property
220 <th>Value
221 <tr>
222 <td>\ref api-tir-ev-cls-prop-id "Numeric ID"
223 <td>Automatically assigned by \bt_p{stream_class}
224 <tr>
225 <td>\ref api-tir-ev-cls-prop-name "Name"
226 <td>\em None
227 <tr>
228 <td>\ref api-tir-ev-cls-prop-log-lvl "Log level"
229 <td>\em None
230 <tr>
231 <td>\ref api-tir-ev-cls-prop-emf-uri "EMF URI"
232 <td>\em None
233 <tr>
234 <td>\ref api-tir-ev-cls-prop-p-fc "Payload field class"
235 <td>\em None
236 <tr>
237 <td>\ref api-tir-ev-cls-prop-sc-fc "Specific context field class"
238 <td>\em None
239 <tr>
240 <td>\ref api-tir-ev-cls-prop-user-attrs "User attributes"
241 <td>Empty \bt_map_val
242</table>
243
244@param[in] stream_class
245 Stream class to add the created event class to.
246
247@returns
248 New event class reference, or \c NULL on memory error.
249
250@bt_pre_not_null{stream_class}
251@pre
252 <code>bt_stream_class_assigns_automatic_event_class_id(stream_class)</code>
253 returns #BT_TRUE.
254
255@bt_post_success_frozen{stream_class}
256
257@sa bt_event_class_create_with_id() &mdash;
258 Creates an event class with a specific numeric ID and adds it to a
259 stream class.
260*/
b19ff26f
PP
261extern bt_event_class *bt_event_class_create(
262 bt_stream_class *stream_class);
40f4ba76 263
43c59509
PP
264/*!
265@brief
266 Creates a default event class with the numeric ID \bt_p{id} and adds
267 it to the \bt_stream_cls \bt_p{stream_class}.
268
269@attention
270 @parblock
271 Only use this function if
272
273 @code
274 bt_stream_class_assigns_automatic_event_class_id(stream_class)
275 @endcode
276
277 returns #BT_FALSE.
278
279 Otherwise, use bt_event_class_create().
280 @endparblock
281
282On success, the returned event class has the following property values:
283
284<table>
285 <tr>
286 <th>Property
287 <th>Value
288 <tr>
289 <td>\ref api-tir-ev-cls-prop-id "Numeric ID"
290 <td>\bt_p{id}
291 <tr>
292 <td>\ref api-tir-ev-cls-prop-name "Name"
293 <td>\em None
294 <tr>
295 <td>\ref api-tir-ev-cls-prop-log-lvl "Log level"
296 <td>\em None
297 <tr>
298 <td>\ref api-tir-ev-cls-prop-emf-uri "EMF URI"
299 <td>\em None
300 <tr>
301 <td>\ref api-tir-ev-cls-prop-p-fc "Payload field class"
302 <td>\em None
303 <tr>
304 <td>\ref api-tir-ev-cls-prop-sc-fc "Specific context field class"
305 <td>\em None
306 <tr>
307 <td>\ref api-tir-ev-cls-prop-user-attrs "User attributes"
308 <td>Empty \bt_map_val
309</table>
310
311@param[in] stream_class
312 Stream class to add the created event class to.
313@param[in] id
314 Numeric ID of the event class to create and add to
315 \bt_p{stream_class}.
316
317@returns
318 New event class reference, or \c NULL on memory error.
319
320@bt_pre_not_null{stream_class}
321@pre
322 <code>bt_stream_class_assigns_automatic_event_class_id(stream_class)</code>
323 returns #BT_FALSE.
324@pre
325 \bt_p{stream_class} does not contain an event class with the numeric
326 ID \bt_p{id}.
327
328@bt_post_success_frozen{stream_class}
329
330@sa bt_event_class_create() &mdash;
331 Creates an event class with an automatic numeric ID and adds it to a
332 stream class.
333*/
b19ff26f
PP
334extern bt_event_class *bt_event_class_create_with_id(
335 bt_stream_class *stream_class, uint64_t id);
56e18c4c 336
43c59509 337/*! @} */
c6962c96 338
43c59509
PP
339/*!
340@name Stream class access
341@{
342*/
343
344/*!
345@brief
346 Borrows the \bt_stream_cls which contains the event class
347 \bt_p{event_class}.
c6962c96 348
43c59509
PP
349@param[in] event_class
350 Event class from which to borrow the stream class which contains it.
351
352@returns
353 Stream class which contains \bt_p{event_class}.
354
355@bt_pre_not_null{event_class}
356
357@sa bt_event_class_borrow_stream_class_const() &mdash;
358 \c const version of this function.
359*/
b19ff26f
PP
360extern bt_stream_class *bt_event_class_borrow_stream_class(
361 bt_event_class *event_class);
56e18c4c 362
43c59509
PP
363/*!
364@brief
365 Borrows the \bt_stream_cls which contains the event class
366 \bt_p{event_class} (\c const version).
367
368See bt_event_class_borrow_stream_class().
369*/
370extern const bt_stream_class *bt_event_class_borrow_stream_class_const(
371 const bt_event_class *event_class);
372
373/*! @} */
374
375/*!
376@name Properties
377@{
378*/
379
380/*!
381@brief
382 Returns the numeric ID of the event class \bt_p{event_class}.
383
384See the \ref api-tir-ev-cls-prop-id "numeric ID" property.
385
386@param[in] event_class
387 Event class of which to get the numeric ID.
388
389@returns
390 Numeric ID of \bt_p{event_class}.
391
392@bt_pre_not_null{event_class}
393
394@sa bt_event_class_create_with_id() &mdash;
395 Creates an event class with a specific numeric ID and adds it to a
396 stream class.
397*/
398extern uint64_t bt_event_class_get_id(const bt_event_class *event_class);
399
400/*!
401@brief
402 Status codes for bt_event_class_set_name().
403*/
d24d5663 404typedef enum bt_event_class_set_name_status {
43c59509
PP
405 /*!
406 @brief
407 Success.
408 */
d24d5663 409 BT_EVENT_CLASS_SET_NAME_STATUS_OK = __BT_FUNC_STATUS_OK,
43c59509
PP
410
411 /*!
412 @brief
413 Out of memory.
414 */
415 BT_EVENT_CLASS_SET_NAME_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
d24d5663
PP
416} bt_event_class_set_name_status;
417
43c59509
PP
418/*!
419@brief
420 Sets the name of the event class \bt_p{event_class} to
421 a copy of \bt_p{name}.
422
423See the \ref api-tir-ev-cls-prop-name "name" property.
424
425@param[in] event_class
426 Event class of which to set the name to \bt_p{name}.
427@param[in] name
428 New name of \bt_p{event_class} (copied).
429
430@retval #BT_EVENT_CLASS_SET_NAME_STATUS_OK
431 Success.
432@retval #BT_EVENT_CLASS_SET_NAME_STATUS_MEMORY_ERROR
433 Out of memory.
434
435@bt_pre_not_null{event_class}
436@bt_pre_hot{event_class}
437@bt_pre_not_null{name}
438
439@sa bt_event_class_get_name() &mdash;
440 Returns the name of an event class.
441*/
d24d5663 442extern bt_event_class_set_name_status bt_event_class_set_name(
d08300f5 443 bt_event_class *event_class, const char *name);
56e18c4c 444
43c59509
PP
445/*!
446@brief
447 Returns the name of the event class \bt_p{event_class}.
448
449See the \ref api-tir-ev-cls-prop-name "name" property.
450
451If \bt_p{event_class} has no name, this function returns \c NULL.
452
453@param[in] event_class
454 Event class of which to get the name.
455
456@returns
457 @parblock
458 Name of \bt_p{event_class}, or \c NULL if none.
459
460 The returned pointer remains valid as long as \bt_p{event_class}
461 is not modified.
462 @endparblock
463
464@bt_pre_not_null{event_class}
465
466@sa bt_event_class_set_name() &mdash;
467 Sets the name of an event class.
468*/
469extern const char *bt_event_class_get_name(const bt_event_class *event_class);
470
471/*!
472@brief
473 Event class log level enumerators.
474*/
475typedef enum bt_event_class_log_level {
476 /*!
477 @brief
478 System is unusable.
479 */
480 BT_EVENT_CLASS_LOG_LEVEL_EMERGENCY = 0,
481
482 /*!
483 @brief
484 Action must be taken immediately.
485 */
486 BT_EVENT_CLASS_LOG_LEVEL_ALERT = 1,
487
488 /*!
489 @brief
490 Critical conditions.
491 */
492 BT_EVENT_CLASS_LOG_LEVEL_CRITICAL = 2,
493
494 /*!
495 @brief
496 Error conditions.
497 */
498 BT_EVENT_CLASS_LOG_LEVEL_ERROR = 3,
499
500 /*!
501 @brief
502 Warning conditions.
503 */
504 BT_EVENT_CLASS_LOG_LEVEL_WARNING = 4,
505
506 /*!
507 @brief
508 Normal, but significant, condition.
509 */
510 BT_EVENT_CLASS_LOG_LEVEL_NOTICE = 5,
511
512 /*!
513 @brief
514 Informational message.
515 */
516 BT_EVENT_CLASS_LOG_LEVEL_INFO = 6,
517
518 /*!
519 @brief
520 Debugging information with system-level scope
521 (set of programs).
522 */
523 BT_EVENT_CLASS_LOG_LEVEL_DEBUG_SYSTEM = 7,
524
525 /*!
526 @brief
527 Debugging information with program-level scope
528 (set of processes).
529 */
530 BT_EVENT_CLASS_LOG_LEVEL_DEBUG_PROGRAM = 8,
531
532 /*!
533 @brief
534 Debugging information with process-level scope
535 (set of modules).
536 */
537 BT_EVENT_CLASS_LOG_LEVEL_DEBUG_PROCESS = 9,
538
539 /*!
540 @brief
541 Debugging information with module (executable/library) scope
542 (set of units).
543 */
544 BT_EVENT_CLASS_LOG_LEVEL_DEBUG_MODULE = 10,
545
546 /*!
547 @brief
548 Debugging information with compilation unit scope
549 (set of functions).
550 */
551 BT_EVENT_CLASS_LOG_LEVEL_DEBUG_UNIT = 11,
552
553 /*!
554 @brief
555 Debugging information with function-level scope.
556 */
557 BT_EVENT_CLASS_LOG_LEVEL_DEBUG_FUNCTION = 12,
558
559 /*!
560 @brief
561 Debugging information with function-level scope.
562 */
563 BT_EVENT_CLASS_LOG_LEVEL_DEBUG_LINE = 13,
564
565 /*!
566 @brief
567 Debugging-level message.
568 */
569 BT_EVENT_CLASS_LOG_LEVEL_DEBUG = 14,
570} bt_event_class_log_level;
571
572/*!
573@brief
574 Sets the log level of the event class \bt_p{event_class} to
575 \bt_p{log_level}.
576
577See the \ref api-tir-ev-cls-prop-log-lvl "log level" property.
578
579@param[in] event_class
580 Event class of which to set the log level to \bt_p{log_level}.
581@param[in] log_level
582 New log level of \bt_p{event_class}.
583
584@bt_pre_not_null{event_class}
585@bt_pre_hot{event_class}
586
587@sa bt_event_class_get_log_level() &mdash;
588 Returns the log level of an event class.
589*/
4cdfc5e8
PP
590extern void bt_event_class_set_log_level(bt_event_class *event_class,
591 bt_event_class_log_level log_level);
56e18c4c 592
43c59509
PP
593/*!
594@brief
595 Returns the log level of the event class \bt_p{event_class}.
596
597See the \ref api-tir-ev-cls-prop-log-lvl "log level" property.
598
599@param[in] event_class
600 Event class of which to get the log level.
601@param[out] log_level
602 <strong>If this function returns
603 #BT_PROPERTY_AVAILABILITY_AVAILABLE</strong>, \bt_p{*log_level} is
604 the log level of \bt_p{event_class}.
605
606@retval #BT_PROPERTY_AVAILABILITY_AVAILABLE
607 The log level of \bt_p{event_class} is available.
608@retval #BT_PROPERTY_AVAILABILITY_NOT_AVAILABLE
609 The log level of \bt_p{event_class} is not available.
610
611@bt_pre_not_null{event_class}
612@bt_pre_not_null{log_level}
613
614@sa bt_event_class_set_log_level() &mdash;
615 Sets the log level of an event class.
616*/
617extern bt_property_availability bt_event_class_get_log_level(
618 const bt_event_class *event_class,
619 bt_event_class_log_level *log_level);
620
621/*!
622@brief
623 Status codes for bt_event_class_set_emf_uri().
624*/
d24d5663 625typedef enum bt_event_class_set_emf_uri_status {
43c59509
PP
626 /*!
627 @brief
628 Success.
629 */
d24d5663 630 BT_EVENT_CLASS_SET_EMF_URI_STATUS_OK = __BT_FUNC_STATUS_OK,
43c59509
PP
631
632 /*!
633 @brief
634 Out of memory.
635 */
636 BT_EVENT_CLASS_SET_EMF_URI_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
d24d5663
PP
637} bt_event_class_set_emf_uri_status;
638
43c59509
PP
639/*!
640@brief
641 Sets the Eclipse Modeling Framework (EMF) URI of the event class
642 \bt_p{event_class} to a copy of \bt_p{emf_uri}.
643
644See the \ref api-tir-ev-cls-prop-emf-uri "EMF URI" property.
645
646@param[in] event_class
647 Event class of which to set the EMF URI to \bt_p{emf_uri}.
648@param[in] emf_uri
649 New EMF URI of \bt_p{event_class} (copied).
650
651@retval #BT_EVENT_CLASS_SET_EMF_URI_STATUS_OK
652 Success.
653@retval #BT_EVENT_CLASS_SET_EMF_URI_STATUS_MEMORY_ERROR
654 Out of memory.
655
656@bt_pre_not_null{event_class}
657@bt_pre_hot{event_class}
658@bt_pre_not_null{emf_uri}
659
660@sa bt_event_class_get_emf_uri() &mdash;
661 Returns the EMF URI of an event class.
662*/
d24d5663 663extern bt_event_class_set_emf_uri_status bt_event_class_set_emf_uri(
4cdfc5e8 664 bt_event_class *event_class, const char *emf_uri);
56e18c4c 665
43c59509
PP
666/*!
667@brief
668 Returns the Eclipse Modeling Framework (EMF) URI of the event
669 class \bt_p{event_class}.
670
671See the \ref api-tir-ev-cls-prop-emf-uri "EMF URI" property.
672
673If \bt_p{event_class} has no EMF URI, this function returns \c NULL.
674
675@param[in] event_class
676 Event class of which to get the EMF URI.
677
678@returns
679 @parblock
680 EMF URI of \bt_p{event_class}, or \c NULL if none.
681
682 The returned pointer remains valid as long as \bt_p{event_class}
683 is not modified.
684 @endparblock
685
686@bt_pre_not_null{event_class}
687
688@sa bt_event_class_set_emf_uri() &mdash;
689 Sets the EMF URI of an event class.
690*/
691extern const char *bt_event_class_get_emf_uri(
692 const bt_event_class *event_class);
693
694/*!
695@brief
696 Status codes for bt_event_class_set_payload_field_class() and
697 bt_event_class_set_specific_context_field_class().
698*/
d24d5663 699typedef enum bt_event_class_set_field_class_status {
43c59509
PP
700 /*!
701 @brief
702 Success.
703 */
d24d5663 704 BT_EVENT_CLASS_SET_FIELD_CLASS_STATUS_OK = __BT_FUNC_STATUS_OK,
43c59509
PP
705
706 /*!
707 @brief
708 Out of memory.
709 */
710 BT_EVENT_CLASS_SET_FIELD_CLASS_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
d24d5663
PP
711} bt_event_class_set_field_class_status;
712
43c59509
PP
713/*!
714@brief
715 Sets the payload \bt_fc of the event class
716 \bt_p{event_class} to \bt_p{field_class}.
717
718See the \ref api-tir-ev-cls-prop-p-fc "payload field class" property.
719
720@param[in] event_class
721 Event class of which to set the payload field class to
722 \bt_p{field_class}.
723@param[in] field_class
724 New payload field class of \bt_p{event_class}.
725
726@retval #BT_EVENT_CLASS_SET_FIELD_CLASS_STATUS_OK
727 Success.
728@retval #BT_EVENT_CLASS_SET_FIELD_CLASS_STATUS_MEMORY_ERROR
729 Out of memory.
730
731@bt_pre_not_null{event_class}
732@bt_pre_hot{event_class}
733@bt_pre_not_null{field_class}
734@bt_pre_is_struct_fc{field_class}
735@pre
736 \bt_p{field_class}, or any of its contained field classes,
737 is not already part of a \bt_stream_cls or of an event class.
738@pre
739 If any of the field classes recursively contained in
740 \bt_p{field_class} has a
741 \ref api-tir-fc-link "link to another field class", it must honor
742 the field class link rules.
743
744@bt_post_success_frozen{field_class}
745
746@sa bt_event_class_borrow_payload_field_class() &mdash;
747 Borrows the payload field class of an event class.
748@sa bt_event_class_borrow_payload_field_class_const() &mdash;
749 Borrows the payload field class of an event class
750 (\c const version).
751*/
752extern bt_event_class_set_field_class_status
753bt_event_class_set_payload_field_class(bt_event_class *event_class,
754 bt_field_class *field_class);
755
756/*!
757@brief
758 Borrows the payload \bt_fc from the event class \bt_p{event_class}.
759
760See the \ref api-tir-ev-cls-prop-p-fc "payload field class" property.
761
762If \bt_p{event_class} has no payload field class, this function
763returns \c NULL.
764
765@param[in] event_class
766 Event class from which to borrow the payload field class.
767
768@returns
769 \em Borrowed reference of the payload field class of
770 \bt_p{event_class}, or \c NULL if none.
771
772@bt_pre_not_null{event_class}
773
774@sa bt_event_class_set_payload_field_class() &mdash;
775 Sets the payload field class of an event class.
776@sa bt_event_class_borrow_payload_field_class_const() &mdash;
777 \c const version of this function.
778*/
779extern bt_field_class *bt_event_class_borrow_payload_field_class(
780 bt_event_class *event_class);
781
782/*!
783@brief
784 Borrows the payload \bt_fc from the event class \bt_p{event_class}
785 (\c const version).
786
787See bt_event_class_borrow_payload_field_class().
788*/
789extern const bt_field_class *bt_event_class_borrow_payload_field_class_const(
790 const bt_event_class *event_class);
791
792/*!
793@brief
794 Sets the specific context \bt_fc of the event class
795 \bt_p{event_class} to \bt_p{field_class}.
796
797See the \ref api-tir-ev-cls-prop-sc-fc "specific context field class"
798property.
799
800@param[in] event_class
801 Event class of which to set the specific context field class to
802 \bt_p{field_class}.
803@param[in] field_class
804 New specific context field class of \bt_p{event_class}.
805
806@retval #BT_EVENT_CLASS_SET_FIELD_CLASS_STATUS_OK
807 Success.
808@retval #BT_EVENT_CLASS_SET_FIELD_CLASS_STATUS_MEMORY_ERROR
809 Out of memory.
810
811@bt_pre_not_null{event_class}
812@bt_pre_hot{event_class}
813@bt_pre_not_null{field_class}
814@bt_pre_is_struct_fc{field_class}
815@pre
816 \bt_p{field_class}, or any of its contained field classes,
817 is not already part of a \bt_stream_cls or of an event class.
818@pre
819 If any of the field classes recursively contained in
820 \bt_p{field_class} has a
821 \ref api-tir-fc-link "link to another field class", it must honor
822 the field class link rules.
823
824@bt_post_success_frozen{field_class}
825
826@sa bt_event_class_borrow_specific_context_field_class() &mdash;
827 Borrows the specific context field class of an event class.
828@sa bt_event_class_borrow_specific_context_field_class_const() &mdash;
829 Borrows the specific context field class of an event class
830 (\c const version).
831*/
d24d5663 832extern bt_event_class_set_field_class_status
d08300f5 833bt_event_class_set_specific_context_field_class(bt_event_class *event_class,
b19ff26f 834 bt_field_class *field_class);
56e18c4c 835
43c59509
PP
836/*!
837@brief
838 Borrows the specific context \bt_fc from the event class
839 \bt_p{event_class}.
840
841See the \ref api-tir-ev-cls-prop-sc-fc "specific context field class"
842property.
843
844If \bt_p{event_class} has no specific context field class, this function
845returns \c NULL.
846
847@param[in] event_class
848 Event class from which to borrow the specific context field class.
849
850@returns
851 \em Borrowed reference of the specific context field class of
852 \bt_p{event_class}, or \c NULL if none.
853
854@bt_pre_not_null{event_class}
855
856@sa bt_event_class_set_specific_context_field_class() &mdash;
857 Sets the specific context field class of an event class.
858@sa bt_event_class_borrow_specific_context_field_class_const() &mdash;
859 \c const version of this function.
860*/
740faaf4
PP
861extern bt_field_class *
862bt_event_class_borrow_specific_context_field_class(bt_event_class *event_class);
863
43c59509
PP
864/*!
865@brief
866 Borrows the specific context \bt_fc from the event class
867 \bt_p{event_class} (\c const version).
56e18c4c 868
43c59509
PP
869See bt_event_class_borrow_specific_context_field_class().
870*/
871extern const bt_field_class *
872bt_event_class_borrow_specific_context_field_class_const(
873 const bt_event_class *event_class);
874
875/*!
876@brief
877 Sets the user attributes of the event class \bt_p{event_class} to
878 \bt_p{user_attributes}.
879
880See the \ref api-tir-ev-cls-prop-user-attrs "user attributes" property.
881
882@note
883 When you create a default event class with bt_event_class_create()
884 or bt_event_class_create_with_id(), the event class's initial user
885 attributes is an empty \bt_map_val. Therefore you can borrow it with
886 bt_event_class_borrow_user_attributes() and fill it directly instead
887 of setting a new one with this function.
888
889@param[in] event_class
890 Event class of which to set the user attributes to
891 \bt_p{user_attributes}.
892@param[in] user_attributes
893 New user attributes of \bt_p{event_class}.
894
895@bt_pre_not_null{event_class}
896@bt_pre_hot{event_class}
897@bt_pre_not_null{user_attributes}
898@bt_pre_is_map_val{user_attributes}
899
900@sa bt_event_class_borrow_user_attributes() &mdash;
901 Borrows the user attributes of an event class.
902*/
903extern void bt_event_class_set_user_attributes(
904 bt_event_class *event_class, const bt_value *user_attributes);
905
906/*!
907@brief
908 Borrows the user attributes of the event class \bt_p{event_class}.
909
910See the \ref api-tir-ev-cls-prop-user-attrs "user attributes" property.
911
912@note
913 When you create a default event class with bt_event_class_create()
914 or bt_event_class_create_with_id(), the event class's initial user
915 attributes is an empty \bt_map_val.
916
917@param[in] event_class
918 Event class from which to borrow the user attributes.
919
920@returns
921 User attributes of \bt_p{event_class} (a \bt_map_val).
922
923@bt_pre_not_null{event_class}
924
925@sa bt_event_class_set_user_attributes() &mdash;
926 Sets the user attributes of an event class.
927@sa bt_event_class_borrow_user_attributes_const() &mdash;
928 \c const version of this function.
929*/
930extern bt_value *bt_event_class_borrow_user_attributes(
740faaf4
PP
931 bt_event_class *event_class);
932
43c59509
PP
933/*!
934@brief
935 Borrows the user attributes of the event class \bt_p{event_class}
936 (\c const version).
937
938See bt_event_class_borrow_user_attributes().
939*/
940extern const bt_value *bt_event_class_borrow_user_attributes_const(
941 const bt_event_class *event_class);
942
943/*! @} */
944
945/*!
946@name Reference count
947@{
948*/
949
950/*!
951@brief
952 Increments the \ref api-fund-shared-object "reference count" of
953 the event class \bt_p{event_class}.
954
955@param[in] event_class
956 @parblock
957 Event class of which to increment the reference count.
958
959 Can be \c NULL.
960 @endparblock
961
962@sa bt_event_class_put_ref() &mdash;
963 Decrements the reference count of an event class.
964*/
965extern void bt_event_class_get_ref(const bt_event_class *event_class);
966
967/*!
968@brief
969 Decrements the \ref api-fund-shared-object "reference count" of
970 the event class \bt_p{event_class}.
971
972@param[in] event_class
973 @parblock
974 Event class of which to decrement the reference count.
975
976 Can be \c NULL.
977 @endparblock
978
979@sa bt_event_class_get_ref() &mdash;
980 Increments the reference count of an event class.
981*/
982extern void bt_event_class_put_ref(const bt_event_class *event_class);
983
984/*!
985@brief
986 Decrements the reference count of the event class
987 \bt_p{_event_class}, and then sets \bt_p{_event_class} to \c NULL.
988
989@param _event_class
990 @parblock
991 Event class of which to decrement the reference count.
992
993 Can contain \c NULL.
994 @endparblock
995
996@bt_pre_assign_expr{_event_class}
997*/
998#define BT_EVENT_CLASS_PUT_REF_AND_RESET(_event_class) \
999 do { \
1000 bt_event_class_put_ref(_event_class); \
1001 (_event_class) = NULL; \
1002 } while (0)
1003
1004/*!
1005@brief
1006 Decrements the reference count of the event class \bt_p{_dst}, sets
1007 \bt_p{_dst} to \bt_p{_src}, and then sets \bt_p{_src} to \c NULL.
1008
1009This macro effectively moves an event class reference from the expression
1010\bt_p{_src} to the expression \bt_p{_dst}, putting the existing
1011\bt_p{_dst} reference.
1012
1013@param _dst
1014 @parblock
1015 Destination expression.
1016
1017 Can contain \c NULL.
1018 @endparblock
1019@param _src
1020 @parblock
1021 Source expression.
1022
1023 Can contain \c NULL.
1024 @endparblock
1025
1026@bt_pre_assign_expr{_dst}
1027@bt_pre_assign_expr{_src}
1028*/
1029#define BT_EVENT_CLASS_MOVE_REF(_dst, _src) \
1030 do { \
1031 bt_event_class_put_ref(_dst); \
1032 (_dst) = (_src); \
1033 (_src) = NULL; \
1034 } while (0)
1035
1036/*! @} */
1037
1038/*! @} */
1039
56e18c4c
PP
1040#ifdef __cplusplus
1041}
1042#endif
1043
924dc299 1044#endif /* BABELTRACE2_TRACE_IR_EVENT_CLASS_H */
This page took 0.135915 seconds and 4 git commands to generate.