Fix: variable declaration shadows previously declared variable
[babeltrace.git] / include / babeltrace / ctf-ir / event-class.h
CommitLineData
272df73e
PP
1#ifndef BABELTRACE_CTF_IR_EVENT_CLASS_H
2#define BABELTRACE_CTF_IR_EVENT_CLASS_H
3
4/*
5 * BabelTrace - CTF IR: Event class
6 *
7 * Copyright 2013, 2014 Jérémie Galarneau <jeremie.galarneau@efficios.com>
8 *
9 * Author: Jérémie Galarneau <jeremie.galarneau@efficios.com>
10 *
11 * Permission is hereby granted, free of charge, to any person obtaining a copy
12 * of this software and associated documentation files (the "Software"), to deal
13 * in the Software without restriction, including without limitation the rights
14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 * copies of the Software, and to permit persons to whom the Software is
16 * furnished to do so, subject to the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be included in
19 * all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 * SOFTWARE.
28 *
29 * The Common Trace Format (CTF) Specification is available at
30 * http://www.efficios.com/ctf
31 */
32
33#include <stdint.h>
34#include <stddef.h>
272df73e
PP
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
9d408fca
PP
40struct bt_value;
41
d5a28207
PP
42/**
43@defgroup ctfireventclass CTF IR event class
44@ingroup ctfir
45@brief CTF IR event class.
46
6dd2bd0c
PP
47@code
48#include <babeltrace/ctf-ir/event-class.h>
49@endcode
50
d5a28207
PP
51A CTF IR <strong><em>event class</em></strong> is a template that you
52can use to create concrete \link ctfirevent CTF IR events\endlink.
53
cf76ce92 54An event class has the following properties:
d5a28207
PP
55
56- A \b name.
cf76ce92
PP
57- A numeric \b ID (\em must be unique amongst all the event classes
58 contained in the same
59 \link ctfirstreamclass CTF IR stream class\endlink).
60- A optional <strong>log level</strong>.
61- An optional <strong>Eclipse Modeling Framework URI</strong>.
d5a28207
PP
62
63A CTF IR event class owns two
64\link ctfirfieldtypes field types\endlink:
65
66- An optional <strong>event context</strong> field type, which
67 represents the \c event.context CTF scope.
68- A mandatory <strong>event payload</strong> field type, which
69 represents the \c event.fields CTF scope.
70
71Both field types \em must be structure field types as of
72Babeltrace \btversion.
73The event payload field type <em>must not</em> be empty.
74
75As a reminder, here's the structure of a CTF packet:
76
77@imgpacketstructure
78
79In the Babeltrace CTF IR system, a \link ctfirtraceclass trace
80class\endlink contains zero or more \link ctfirstreamclass stream
81classes\endlink, and a stream class contains zero or more event classes.
82
83Before you can create an event from an event class with
84bt_ctf_event_create(), you \em must add the prepared event class to a
85stream class by calling bt_ctf_stream_class_add_event_class(). This
86function, when successful, \em freezes the event class, disallowing any
87future modification of its properties and field types by the user.
88
89As with any Babeltrace object, CTF IR event class objects have
90<a href="https://en.wikipedia.org/wiki/Reference_counting">reference
91counts</a>. See \ref refs to learn more about the reference counting
92management of Babeltrace objects.
93
94bt_ctf_stream_class_add_event_class() \em freezes its event class
95parameter on success. You cannot modify a frozen event class: it is
96considered immutable, except for \link refs reference counting\endlink.
97
98@sa ctfirevent
99@sa ctfirstreamclass
100
101@file
102@brief CTF IR event class type and functions.
103@sa ctfireventclass
104
105@addtogroup ctfireventclass
106@{
107*/
108
109/**
110@struct bt_ctf_event_class
111@brief A CTF IR event class.
112@sa ctfireventclass
113*/
272df73e
PP
114struct bt_ctf_event_class;
115struct bt_ctf_field;
116struct bt_ctf_field_type;
117struct bt_ctf_stream_class;
118
cf76ce92
PP
119/**
120@brief Log level of an event class.
121*/
122enum bt_ctf_event_class_log_level {
123 /// Unknown, used for errors.
124 BT_CTF_EVENT_CLASS_LOG_LEVEL_UNKNOWN = -1,
125
126 /// Unspecified log level.
127 BT_CTF_EVENT_CLASS_LOG_LEVEL_UNSPECIFIED = 255,
128
129 /// System is unusable.
130 BT_CTF_EVENT_CLASS_LOG_LEVEL_EMERGENCY = 0,
131
132 /// Action must be taken immediately.
133 BT_CTF_EVENT_CLASS_LOG_LEVEL_ALERT = 1,
134
135 /// Critical conditions.
136 BT_CTF_EVENT_CLASS_LOG_LEVEL_CRITICAL = 2,
137
138 /// Error conditions.
139 BT_CTF_EVENT_CLASS_LOG_LEVEL_ERROR = 3,
140
141 /// Warning conditions.
142 BT_CTF_EVENT_CLASS_LOG_LEVEL_WARNING = 4,
143
144 /// Normal, but significant, condition.
145 BT_CTF_EVENT_CLASS_LOG_LEVEL_NOTICE = 5,
146
147 /// Informational message.
148 BT_CTF_EVENT_CLASS_LOG_LEVEL_INFO = 6,
149
150 /// Debug information with system-level scope (set of programs).
151 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_SYSTEM = 7,
152
153 /// Debug information with program-level scope (set of processes).
154 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_PROGRAM = 8,
155
156 /// Debug information with process-level scope (set of modules).
157 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_PROCESS = 9,
158
159 /// Debug information with module (executable/library) scope (set of units).
160 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_MODULE = 10,
161
162 /// Debug information with compilation unit scope (set of functions).
163 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_UNIT = 11,
164
165 /// Debug information with function-level scope.
166 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_FUNCTION = 12,
167
168 /// Debug information with line-level scope (default log level).
169 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_LINE = 13,
170
171 /// Debug-level message.
172 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG = 14,
173};
174
d5a28207
PP
175/**
176@name Creation and parent access functions
177@{
178*/
179
180/**
181@brief Creates a default CTF IR event class named \p name­.
182
53a1cae7
PP
183On success, the context and payload field types are empty structure
184field types. You can modify those default field types after the
185event class is created with
186bt_ctf_event_class_set_context_type() and
187bt_ctf_event_class_set_payload_type().
d5a28207
PP
188
189Upon creation, the event class's ID is <em>not set</em>. You
190can set it to a specific value with bt_ctf_event_class_set_id(). If it
191is still unset when you call bt_ctf_stream_class_add_event_class(), then
192the stream class assigns a unique ID to this event class before
193freezing it.
194
cf76ce92
PP
195The created event class's log level is initially set to
196#BT_CTF_EVENT_CLASS_LOG_LEVEL_UNSPECIFIED and it has no Eclipse Modeling
197Framework URI.
198
d5a28207
PP
199@param[in] name Name of the event class to create (copied on success).
200@returns Created event class, or \c NULL on error.
201
202@prenotnull{name}
203@postsuccessrefcountret1
204*/
272df73e
PP
205extern struct bt_ctf_event_class *bt_ctf_event_class_create(const char *name);
206
d5a28207
PP
207/**
208@brief Returns the parent CTF IR stream class of the CTF IR event
209 class \p event_class.
210
211It is possible that the event class was not added to a stream class
212yet, in which case this function returns \c NULL. You can add an
213event class to a stream class with
214bt_ctf_stream_class_add_event_class().
215
216@param[in] event_class Event class of which to get the parent
217 stream class.
218@returns Parent stream class of \p event_class,
219 or \c NULL if \p event_class was not
220 added to a stream class yet or on error.
221
222@prenotnull{event_class}
c2f29fb9 223@postrefcountsame{event_class}
d5a28207
PP
224@postsuccessrefcountretinc
225
226@sa bt_ctf_stream_class_add_event_class(): Add an event class to
227 a stream class.
228*/
229extern struct bt_ctf_stream_class *bt_ctf_event_class_get_stream_class(
230 struct bt_ctf_event_class *event_class);
231
232/** @} */
233
234/**
235@name Attribute functions
236@{
237*/
238
239/**
240@brief Returns the name of the CTF IR event class \p event_class.
241
242On success, \p event_class remains the sole owner of the returned
243string.
244
245@param[in] event_class Event class of which to get the name.
246@returns Name of event class \p event_class, or
247 \c NULL on error.
248
249@prenotnull{event_class}
250@postrefcountsame{event_class}
251*/
272df73e
PP
252extern const char *bt_ctf_event_class_get_name(
253 struct bt_ctf_event_class *event_class);
254
d5a28207
PP
255/**
256@brief Returns the numeric ID of the CTF IR event class \p event_class.
257
258@param[in] event_class Event class of which to get the numeric ID.
259@returns ID of event class \p event_class, or a
260 negative value on error.
261
262@prenotnull{event_class}
263@postrefcountsame{event_class}
264
265@sa bt_ctf_event_class_set_id(): Sets the numeric ID of a given
266 event class.
267*/
272df73e
PP
268extern int64_t bt_ctf_event_class_get_id(
269 struct bt_ctf_event_class *event_class);
270
d5a28207
PP
271/**
272@brief Sets the numeric ID of the CTF IR event class
273 \p event_class to \p id.
274
275\p id must be unique amongst the IDs of all the event classes
276of the stream class to which you eventually add \p event_class.
277
278@param[in] event_class Event class of which to set the numeric ID.
279@param[in] id ID of the event class.
280@returns 0 on success, or a negative value on error.
281
282@prenotnull{event_class}
283@prehot{event_class}
9ac68eb1 284@pre \p id is lesser than or equal to 9223372036854775807 (\c INT64_MAX).
d5a28207
PP
285@postrefcountsame{event_class}
286
287@sa bt_ctf_event_class_get_id(): Returns the numeric ID of a given
288 event class.
289*/
272df73e 290extern int bt_ctf_event_class_set_id(
9ac68eb1 291 struct bt_ctf_event_class *event_class, uint64_t id);
272df73e 292
d5a28207 293/**
cf76ce92 294@brief Returns the log level of the CTF IR event class \p event_class.
272df73e 295
cf76ce92
PP
296@param[in] event_class Event class of which to get the log level.
297@returns Log level of event class \p event_class,
298 #BT_CTF_EVENT_CLASS_LOG_LEVEL_UNSPECIFIED if
299 not specified, or
300 #BT_CTF_EVENT_CLASS_LOG_LEVEL_UNKNOWN on error.
d5a28207
PP
301
302@prenotnull{event_class}
303@postrefcountsame{event_class}
304
cf76ce92
PP
305@sa bt_ctf_event_class_set_log_level(): Sets the log level of a given
306 event class.
d5a28207 307*/
cf76ce92 308extern enum bt_ctf_event_class_log_level bt_ctf_event_class_get_log_level(
272df73e
PP
309 struct bt_ctf_event_class *event_class);
310
d5a28207 311/**
cf76ce92
PP
312@brief Sets the log level of the CTF IR event class
313 \p event_class to \p log_level.
d5a28207 314
cf76ce92
PP
315@param[in] event_class Event class of which to set the log level.
316@param[in] log_level Log level of the event class.
317@returns 0 on success, or a negative value on error.
d5a28207
PP
318
319@prenotnull{event_class}
cf76ce92
PP
320@prehot{event_class}
321@pre \p log_level is #BT_CTF_EVENT_CLASS_LOG_LEVEL_UNSPECIFIED,
322 #BT_CTF_EVENT_CLASS_LOG_LEVEL_EMERGENCY,
323 #BT_CTF_EVENT_CLASS_LOG_LEVEL_ALERT,
324 #BT_CTF_EVENT_CLASS_LOG_LEVEL_CRITICAL,
325 #BT_CTF_EVENT_CLASS_LOG_LEVEL_ERROR,
326 #BT_CTF_EVENT_CLASS_LOG_LEVEL_WARNING,
327 #BT_CTF_EVENT_CLASS_LOG_LEVEL_NOTICE,
328 #BT_CTF_EVENT_CLASS_LOG_LEVEL_INFO,
329 #BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_SYSTEM,
330 #BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_PROGRAM,
331 #BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_PROCESS,
332 #BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_MODULE,
333 #BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_UNIT,
334 #BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_FUNCTION,
335 #BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_LINE, or
336 #BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG.
d5a28207
PP
337@postrefcountsame{event_class}
338
cf76ce92
PP
339@sa bt_ctf_event_class_get_log_level(): Returns the log level of a given
340 event class.
d5a28207 341*/
cf76ce92
PP
342extern int bt_ctf_event_class_set_log_level(
343 struct bt_ctf_event_class *event_class,
344 enum bt_ctf_event_class_log_level log_level);
272df73e 345
d5a28207 346/**
cf76ce92
PP
347@brief Returns the Eclipse Modeling Framework URI of the CTF IR event
348 class \p event_class.
d5a28207 349
cf76ce92
PP
350@param[in] event_class Event class of which to get the
351 Eclipse Modeling Framework URI.
352@returns Eclipse Modeling Framework URI of event
353 class \p event_class, or \c NULL on error.
d5a28207
PP
354
355@prenotnull{event_class}
d5a28207
PP
356@postrefcountsame{event_class}
357
cf76ce92
PP
358@sa bt_ctf_event_class_set_emf_uri(): Sets the Eclipse Modeling
359 Framework URI of a given event class.
d5a28207 360*/
cf76ce92
PP
361extern const char *bt_ctf_event_class_get_emf_uri(
362 struct bt_ctf_event_class *event_class);
272df73e 363
d5a28207 364/**
cf76ce92
PP
365@brief Sets the Eclipse Modeling Framework URI of the CTF IR event class
366 \p event_class to \p emf_uri, or unsets the event class's EMF URI.
d5a28207 367
cf76ce92
PP
368@param[in] event_class Event class of which to set the
369 Eclipse Modeling Framework URI.
370@param[in] emf_uri Eclipse Modeling Framework URI of the
371 event class (copied on success), or \c NULL
372 to unset the current EMF URI.
373@returns 0 on success, or a negative value if there's
374 no EMF URI or on error.
d5a28207
PP
375
376@prenotnull{event_class}
cf76ce92 377@prenotnull{emf_uri}
d5a28207
PP
378@prehot{event_class}
379@postrefcountsame{event_class}
d5a28207 380
cf76ce92
PP
381@sa bt_ctf_event_class_get_emf_uri(): Returns the Eclipse Modeling
382 Framework URI of a given event class.
d5a28207 383*/
cf76ce92
PP
384extern int bt_ctf_event_class_set_emf_uri(
385 struct bt_ctf_event_class *event_class,
386 const char *emf_uri);
d5a28207
PP
387
388/** @} */
389
390/**
391@name Contained field types functions
392@{
393*/
394
29620c97
PP
395/**
396@brief Returns the context field type of the CTF IR event class
397 \p event_class.
398
6b783f49
JG
399@param[in] event_class Event class of which to get the context field type.
400@returns Context field type of \p event_class, or \c NULL if
401 \p event_class has no context field type or on error.
29620c97
PP
402
403@prenotnull{event_class}
c2f29fb9 404@postrefcountsame{event_class}
6b783f49
JG
405@post <strong>On success, if the return value is a field type</strong>, its
406 reference count is incremented.
29620c97 407
6b783f49
JG
408@sa bt_ctf_event_class_set_context_type(): Sets the context field type of a
409 given event class.
29620c97
PP
410*/
411extern struct bt_ctf_field_type *bt_ctf_event_class_get_context_type(
412 struct bt_ctf_event_class *event_class);
413
414/**
6b783f49
JG
415@brief Sets the context field type of the CTF IR event class \p event_class to
416 \p context_type, or unsets the current context field type from
417 \p event_class.
29620c97 418
6b783f49
JG
419If \p context_type is \c NULL, then this function unsets the current context
420field type from \p event_class, effectively making \p event_class an event class
421without a context field type.
29620c97 422
6b783f49
JG
423As of Babeltrace \btversion, if \p context_type is not \c NULL,
424\p context_type \em must be a CTF IR structure field type object.
425
426@param[in] event_class Event class of which to set the context field
427 type.
428@param[in] context_type Context field type, or \c NULL to unset the
429 current context field type.
430@returns 0 on success, or a negative value on error.
29620c97
PP
431
432@prenotnull{event_class}
29620c97 433@prehot{event_class}
6b783f49
JG
434@pre <strong>If \p context_type is not \c NULL</strong>, \p context_type is a
435 CTF IR structure field type.
29620c97 436@postrefcountsame{event_class}
6b783f49
JG
437@post <strong>On success, if \p context_type is not \c NULL</strong>,
438 the reference count of \p context_type is incremented.
29620c97 439
6b783f49
JG
440@sa bt_ctf_event_class_get_context_type(): Returns the context field type of a
441 given event class.
29620c97
PP
442*/
443extern int bt_ctf_event_class_set_context_type(
444 struct bt_ctf_event_class *event_class,
445 struct bt_ctf_field_type *context_type);
446
d5a28207
PP
447/**
448@brief Returns the payload field type of the CTF IR event class
449 \p event_class.
450
6b783f49
JG
451@param[in] event_class Event class of which to get the payload field type.
452@returns Payload field type of \p event_class, or \c NULL if
453 \p event_class has no payload field type or on error.
d5a28207
PP
454
455@prenotnull{event_class}
c2f29fb9 456@postrefcountsame{event_class}
6b783f49
JG
457@post <strong>On success, if the return value is a field type</strong>, its
458 reference count is incremented.
d5a28207 459
6b783f49
JG
460@sa bt_ctf_event_class_set_payload_type(): Sets the payload field type of a
461 given event class.
d5a28207 462*/
272df73e
PP
463extern struct bt_ctf_field_type *bt_ctf_event_class_get_payload_type(
464 struct bt_ctf_event_class *event_class);
465
d5a28207 466/**
6b783f49
JG
467@brief Sets the payload field type of the CTF IR event class \p event_class to
468 \p payload_type, or unsets the current payload field type from
469 \p event_class.
d5a28207 470
6b783f49
JG
471If \p payload_type is \c NULL, then this function unsets the current payload
472field type from \p event_class, effectively making \p event_class an event class
473without a payload field type.
d5a28207 474
6b783f49
JG
475As of Babeltrace \btversion, if \p payload_type is not \c NULL,
476\p payload_type \em must be a CTF IR structure field type object.
477
478@param[in] event_class Event class of which to set the payload field
479 type.
480@param[in] payload_type Payload field type, or \c NULL to unset the
481 current payload field type.
482@returns 0 on success, or a negative value on error.
d5a28207
PP
483
484@prenotnull{event_class}
d5a28207 485@prehot{event_class}
6b783f49
JG
486@pre <strong>If \p payload_type is not \c NULL</strong>, \p payload_type is a
487 CTF IR structure field type.
d5a28207 488@postrefcountsame{event_class}
6b783f49
JG
489@post <strong>On success, if \p payload_type is not \c NULL</strong>,
490 the reference count of \p payload_type is incremented.
d5a28207 491
6b783f49
JG
492@sa bt_ctf_event_class_get_payload_type(): Returns the payload field type of a
493 given event class.
d5a28207 494*/
272df73e
PP
495extern int bt_ctf_event_class_set_payload_type(
496 struct bt_ctf_event_class *event_class,
d5a28207 497 struct bt_ctf_field_type *payload_type);
272df73e 498
d5a28207
PP
499/**
500@brief Returns the number of fields contained in the
501 payload field type of the CTF IR event class \p event_class.
272df73e 502
d5a28207
PP
503@remarks
504Calling this function is the equivalent of getting the payload field
505type of \p event_class with bt_ctf_event_class_get_payload_type() and
506getting its field count with
507bt_ctf_field_type_structure_get_field_count().
508
509@param[in] event_class Event class of which to get the number
510 of fields contained in its payload field type.
511@returns Number of fields in the payload field type
512 of \p event_class, or a negative value on error.
513
514@prenotnull{event_class}
515@postrefcountsame{event_class}
516*/
9ac68eb1 517extern int64_t bt_ctf_event_class_get_payload_type_field_count(
272df73e
PP
518 struct bt_ctf_event_class *event_class);
519
d5a28207
PP
520/**
521@brief Returns the type and the name of the field at index \p index
522 in the payload field type of the CTF IR event class
523 \p event_class.
524
525On success, the field's type is placed in \p *field_type if
526\p field_type is not \c NULL. The field's name is placed in
527\p *name if \p name is not \c NULL. \p event_class remains the sole
528owner of \p *name.
529
530Both \p name and \p field_type can be \c NULL if the caller is not
531interested in one of them.
532
533@remarks
534Calling this function is the equivalent of getting the payload field
535type of \p event_class with bt_ctf_event_class_get_payload_type() and
536getting the type and name of one of its field with
537bt_ctf_field_type_structure_get_field().
538
539@param[in] event_class Event class of which to get the type and name
540 of a field in its payload field type.
541@param[out] field_name Name of the field at the index
542 \p index in the payload field type of
543 \p event_class (can be \c NULL).
544@param[out] field_type Type of the field at the index \p index in the
545 payload field type of \p event_class
546 (can be \c NULL).
547@param[in] index Index of the payload field type's field to find.
548@returns 0 on success, or a negative value on error.
549
550@prenotnull{event_class}
551@pre \p index is lesser than the number of fields contained in the
552 payload field type of \p event_class (see
9ac68eb1 553 bt_ctf_event_class_get_payload_type_field_count()).
d5a28207
PP
554@postrefcountsame{event_class}
555@post <strong>On success, if \p field_type is not \c NULL</strong>, the
556 reference count of \p *field_type is incremented.
557*/
9ac68eb1
PP
558extern int bt_ctf_event_class_get_payload_type_field_by_index(
559 struct bt_ctf_event_class *event_class,
272df73e 560 const char **field_name, struct bt_ctf_field_type **field_type,
9ac68eb1 561 uint64_t index);
272df73e 562
d5a28207
PP
563/**
564@brief Returns the type of the field named \p name in the payload
565 field type of the CTF IR event class \p event_class.
566
567@remarks
568Calling this function is the equivalent of getting the payload field
569type of \p event_class with bt_ctf_event_class_get_payload_type() and
570getting the type of one of its field with
571bt_ctf_field_type_structure_get_field_type_by_name().
572
573@param[in] event_class Event class of which to get the type of a
574 payload field type's field.
575@param[in] name Name of the payload field type's field to get.
576@returns Type of the field named \p name in the payload
577 field type of \p event_class, or \c NULL if
578 the function cannot find the field or
579 on error.
580
581@prenotnull{event_class}
582@prenotnull{name}
583@postrefcountsame{event_class}
584@postsuccessrefcountretinc
d5a28207 585*/
9ac68eb1
PP
586extern struct bt_ctf_field_type *
587bt_ctf_event_class_get_payload_type_field_type_by_name(
272df73e
PP
588 struct bt_ctf_event_class *event_class, const char *name);
589
9ac68eb1
PP
590/* Pre-2.0 CTF writer compatibility */
591#define bt_ctf_event_class_get_field_by_name bt_ctf_event_class_get_payload_type_field_type_by_name
592
d5a28207
PP
593/**
594@brief Adds a field named \p name with the type \p field_type to the
595 payload field type of the CTF IR event class \p event_class.
596
597@remarks
598Calling this function is the equivalent of getting the payload field
599type of \p event_class with bt_ctf_event_class_get_payload_type() and
600adding a field to it with bt_ctf_field_type_structure_add_field().
601
602@param[in] event_class Event class containing the payload field
603 type in which to add a field.
604@param[in] field_type Type of the field to add.
605@param[in] name Name of the field to add (copied on
606 success).
607@returns 0 on success, or a negative value on error.
608
609@prenotnull{event_class}
610@prenotnull{type}
611@prenotnull{name}
612@prehot{event_class}
613@postrefcountsame{event_class}
614@postsuccessrefcountinc{field_type}
615*/
616extern int bt_ctf_event_class_add_field(struct bt_ctf_event_class *event_class,
617 struct bt_ctf_field_type *field_type,
618 const char *name);
619
d5a28207
PP
620/** @} */
621
622/** @} */
272df73e 623
272df73e
PP
624#ifdef __cplusplus
625}
626#endif
627
628#endif /* BABELTRACE_CTF_IR_EVENT_CLASS_H */
This page took 0.063944 seconds and 4 git commands to generate.