Document libbabeltrace2's C API
[babeltrace.git] / include / babeltrace2 / integer-range-set.h
CommitLineData
fb91c0ef
PP
1#ifndef BABELTRACE2_INTEGER_RANGE_SET_H
2#define BABELTRACE2_INTEGER_RANGE_SET_H
3
4/*
5 * Copyright (c) 2010-2019 EfficiOS Inc. and Linux Foundation
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 * SOFTWARE.
24 */
25
26#ifndef __BT_IN_BABELTRACE_H
27# error "Please include <babeltrace2/babeltrace.h> instead."
28#endif
29
30#include <stdint.h>
31#include <stddef.h>
32
33#include <babeltrace2/types.h>
fb91c0ef
PP
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
43c59509
PP
39/*!
40@defgroup api-int-rs Integer range sets
41
42@brief
43 Sets of unsigned and signed 64-bit integer ranges.
44
45An <strong><em>integer range set</em></strong>
46is an \em unordered set of integer ranges.
47
48An <strong><em>integer range</em></strong> represents all the
49integers \b 𝑥 which satisfy
50(<em>lower&nbsp;value</em>&nbsp;≤&nbsp;<strong>𝑥</strong>&nbsp;≤&nbsp;<em>upper&nbsp;value</em>).
51
52For example, an unsigned integer range set could contain the ranges
53[5,&nbsp;14], [199,&nbsp;2001], and [1976,&nbsp;3000].
54
55This integer range set API offers unsigned and signed 64-bit integer
56ranges and integer range sets with dedicated C&nbsp;types:
57
58- #bt_integer_range_unsigned
59- #bt_integer_range_signed
60- #bt_integer_range_set_unsigned
61- #bt_integer_range_set_signed
62
63This API uses the \em abstract #bt_integer_range_set type for common
64properties and operations (for example,
65bt_integer_range_set_get_range_count()).
66\ref api-fund-c-typing "Upcast" a specific
67integer range set to the #bt_integer_range_set type with
68bt_integer_range_set_unsigned_as_range_set_const() or
69bt_integer_range_set_signed_as_range_set_const().
70
71An integer range set is a \ref api-fund-shared-object "shared object":
72get a new reference with bt_integer_range_set_unsigned_get_ref() or
73bt_integer_range_set_signed_get_ref() and put an existing reference with
74bt_integer_range_set_unsigned_put_ref() or
75bt_integer_range_set_signed_put_ref().
76
77An integer range is a \ref api-fund-unique-object "unique object": it
78belongs to the integer range set which contains it.
79
80Some library functions \ref api-fund-freezing "freeze" integer range
81sets on success. The documentation of those functions indicate this
82postcondition.
83
84Create an empty integer range set with
85bt_integer_range_set_unsigned_create() or
86bt_integer_range_set_signed_create().
87
88Add an integer range to an integer range set with
89bt_integer_range_set_unsigned_add_range() or
90bt_integer_range_set_signed_add_range(). Although integer ranges can
91overlap, specific functions of the \bt_api expect an integer range set
92with non-overlapping integer ranges.
93
94As of \bt_name_version_min_maj, you cannot remove an existing
95integer range from an integer range set.
96
97Check that two integer ranges are equal with
98bt_integer_range_unsigned_is_equal() or
99bt_integer_range_signed_is_equal().
100
101Check that two integer range sets are equal with
102bt_integer_range_set_unsigned_is_equal() or
103bt_integer_range_set_signed_is_equal().
104*/
105
106/*! @{ */
107
108/*!
109@name Types
110@{
111
112@typedef struct bt_integer_range_unsigned bt_integer_range_unsigned
113
114@brief
115 Unsigned 64-bit integer range.
116
117
118@typedef struct bt_integer_range_signed bt_integer_range_signed
119
120@brief
121 Signed 64-bit integer range.
122
123
124@typedef struct bt_integer_range_set bt_integer_range_set
125
126@brief
127 Set of 64-bit integer ranges.
128
129This is an abstract type for common properties and operations. See \ref
130api-fund-c-typing to learn more about conceptual object type
131inheritance.
132
133
134@typedef struct bt_integer_range_set_unsigned bt_integer_range_set_unsigned;
135
136@brief
137 Set of unsigned 64-bit integer ranges.
138
139
140@typedef struct bt_integer_range_set_signed bt_integer_range_set_signed;
141
142@brief
143 Set of signed 64-bit integer ranges.
144
145@}
146*/
147
148/*!
149@name Unsigned integer range
150@{
151*/
152
153/*!
154@brief
155 Returns the lower value of the unsigned integer range
156 \bt_p{int_range}.
157
158The returned lower value is included in \bt_p{int_range}.
159
160@param[in] int_range
161 Unsigned integer range of which to get the lower value.
162
163@returns
164 Lower value of \bt_p{int_range}.
165
166@bt_pre_not_null{int_range}
167@bt_pre_is_bool_val{int_range}
168*/
169extern uint64_t bt_integer_range_unsigned_get_lower(
170 const bt_integer_range_unsigned *int_range);
fb91c0ef 171
43c59509
PP
172/*!
173@brief
174 Returns the upper value of the unsigned integer range
175 \bt_p{int_range}.
176
177The returned upper value is included in \bt_p{int_range}.
178
179@param[in] int_range
180 Unsigned integer range of which to get the upper value.
181
182@returns
183 Upper value of \bt_p{int_range}.
184
185@bt_pre_not_null{int_range}
186@bt_pre_is_bool_val{int_range}
187*/
188extern uint64_t bt_integer_range_unsigned_get_upper(
189 const bt_integer_range_unsigned *int_range);
190
191/*!
192@brief
193 Returns whether or not the unsigned integer range
194 \bt_p{a_int_range} is equal to \bt_p{b_int_range}.
195
196Two unsigned integer ranges are considered equal if they have the same
197lower and upper values.
198
199@param[in] a_int_range
200 Unsigned integer range A.
201@param[in] b_int_range
202 Unsigned integer range B.
203
204@returns
205 #BT_TRUE if \bt_p{a_int_range} is equal to
206 \bt_p{b_int_range}.
207
208@bt_pre_not_null{a_int_range}
209@bt_pre_not_null{b_int_range}
210*/
211extern bt_bool bt_integer_range_unsigned_is_equal(
212 const bt_integer_range_unsigned *a_int_range,
213 const bt_integer_range_unsigned *b_int_range);
214
215/*! @} */
216
217/*!
218@name Signed integer range
219@{
220*/
221
222/*!
223@brief
224 Returns the lower value of the signed integer range
225 \bt_p{int_range}.
226
227The returned lower value is included in \bt_p{int_range}.
228
229@param[in] int_range
230 Signed integer range of which to get the lower value.
231
232@returns
233 Lower value of \bt_p{int_range}.
234
235@bt_pre_not_null{int_range}
236@bt_pre_is_bool_val{int_range}
237*/
238extern int64_t bt_integer_range_signed_get_lower(
239 const bt_integer_range_signed *int_range);
240
241/*!
242@brief
243 Returns the upper value of the signed integer range
244 \bt_p{int_range}.
245
246The returned upper value is included in \bt_p{int_range}.
247
248@param[in] int_range
249 Signed integer range of which to get the upper value.
250
251@returns
252 Upper value of \bt_p{int_range}.
253
254@bt_pre_not_null{int_range}
255@bt_pre_is_bool_val{int_range}
256*/
257extern int64_t bt_integer_range_signed_get_upper(
258 const bt_integer_range_signed *int_range);
259
260/*!
261@brief
262 Returns whether or not the signed integer range
263 \bt_p{a_int_range} is equal to \bt_p{b_int_range}.
264
265Two signed integer ranges are considered equal if they have the same
266lower and upper values.
267
268@param[in] a_int_range
269 Signed integer range A.
270@param[in] b_int_range
271 Signed integer range B.
272
273@returns
274 #BT_TRUE if \bt_p{a_int_range} is equal to
275 \bt_p{b_int_range}.
276
277@bt_pre_not_null{a_int_range}
278@bt_pre_not_null{b_int_range}
279*/
280extern bt_bool bt_integer_range_signed_is_equal(
281 const bt_integer_range_signed *a_int_range,
282 const bt_integer_range_signed *b_int_range);
283
284/*! @} */
285
286/*!
287@name Integer range set: common
288@{
289*/
290
291/*!
292@brief
293 Status codes for bt_integer_range_set_unsigned_add_range() and
294 bt_integer_range_set_signed_add_range().
295*/
fb91c0ef 296typedef enum bt_integer_range_set_add_range_status {
43c59509
PP
297 /*!
298 @brief
299 Success.
300 */
301 BT_INTEGER_RANGE_SET_ADD_RANGE_STATUS_OK = __BT_FUNC_STATUS_OK,
302
303 /*!
304 @brief
305 Out of memory.
306 */
307 BT_INTEGER_RANGE_SET_ADD_RANGE_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
fb91c0ef
PP
308} bt_integer_range_set_add_range_status;
309
43c59509
PP
310/*!
311@brief
312 Returns the number of integer ranges contained in the integer
313 range set \bt_p{int_range_set}.
314
315@note
316 The parameter \bt_p{int_range_set} has the abstract type
317 #bt_integer_range_set: use
318 bt_integer_range_set_unsigned_as_range_set_const() or
319 bt_integer_range_set_signed_as_range_set_const() to upcast a
320 specific integer range set to this type.
321
322@param[in] int_range_set
323 Integer range set of which to get the number of contained integer
324 ranges.
325
326@returns
327 Number of contained integer ranges in \bt_p{int_range_set}.
328
329@bt_pre_not_null{int_range_set}
330*/
331extern uint64_t bt_integer_range_set_get_range_count(
332 const bt_integer_range_set *int_range_set);
333
334/*! @} */
335
336/*!
337@name Unsigned integer range set
338@{
339*/
340
341/*!
342@brief
343 Creates and returns an empty set of unsigned 64-bit integer ranges.
344
345@returns
346 New unsigned integer range set, or \c NULL on memory error.
347*/
348extern bt_integer_range_set_unsigned *bt_integer_range_set_unsigned_create(void);
349
350/*!
351@brief
352 Adds an unsigned 64-bit integer range having the lower value
353 \bt_p{lower} and the upper value \bt_p{upper} to the unsigned
354 integer range set
355 \bt_p{int_range_set}.
356
357The values \bt_p{lower} and \bt_p{upper} are included in the unsigned
358integer range to add to \bt_p{int_range_set}.
359
360@param[in] int_range_set
361 Unsigned integer range set to which to add an unsigned integer
362 range.
363@param[in] lower
364 Lower value (included) of the unsigned integer range to add to
365 \bt_p{int_range_set}.
366@param[in] upper
367 Upper value (included) of the unsigned integer range to add to
368 \bt_p{int_range_set}.
369
370@retval #BT_INTEGER_RANGE_SET_ADD_RANGE_STATUS_OK
371 Success.
372@retval #BT_INTEGER_RANGE_SET_ADD_RANGE_STATUS_MEMORY_ERROR
373 Out of memory.
374
375@bt_pre_not_null{int_range_set}
376@bt_pre_hot{int_range_set}
377@pre
378 \bt_p{lower} ≤ \bt_p{upper}.
379*/
380extern bt_integer_range_set_add_range_status
381bt_integer_range_set_unsigned_add_range(
382 bt_integer_range_set_unsigned *int_range_set,
fb91c0ef
PP
383 uint64_t lower, uint64_t upper);
384
43c59509
PP
385/*!
386@brief
387 Borrows the unsigned integer range at index \bt_p{index} from the
388 unsigned integer range set \bt_p{int_range_set}.
389
390@param[in] int_range_set
391 Unsigned integer range set from which to borrow the unsigned integer
392 range at index \bt_p{index}.
393@param[in] index
394 Index of the unsigned integer range to borrow from
395 \bt_p{int_range_set}.
396
397@returns
398 @parblock
399 \em Borrowed reference of the unsigned integer range of
400 \bt_p{int_range_set} at index \bt_p{index}.
401
402 The returned pointer remains valid until \bt_p{int_range_set} is
403 modified.
404 @endparblock
405
406@bt_pre_not_null{int_range_set}
407@pre
408 \bt_p{index} is less than the number of unsigned integer ranges in
409 \bt_p{int_range_set} (as returned by
410 bt_integer_range_set_get_range_count()).
411*/
412extern const bt_integer_range_unsigned *
413bt_integer_range_set_unsigned_borrow_range_by_index_const(
414 const bt_integer_range_set_unsigned *int_range_set,
415 uint64_t index);
416
417/*!
418@brief
419 Returns whether or not the unsigned integer range set
420 \bt_p{int_range_set_a} is equal to \bt_p{int_range_set_b}.
421
422Two unsigned integer range sets are considered equal if they contain the
423exact same unsigned integer ranges, whatever the order. In other words,
424an unsigned integer range set containing [2,&nbsp;9] and [10,&nbsp;15]
425is \em not equal to an unsigned integer range containing [2,&nbsp;15].
426
427@param[in] int_range_set_a
428 Unsigned integer range set A.
429@param[in] int_range_set_b
430 Unsigned integer range set B.
431
432@returns
433 #BT_TRUE if \bt_p{int_range_set_a} is equal to
434 \bt_p{int_range_set_b}.
435
436@bt_pre_not_null{int_range_set_a}
437@bt_pre_not_null{int_range_set_b}
438*/
439extern bt_bool bt_integer_range_set_unsigned_is_equal(
440 const bt_integer_range_set_unsigned *int_range_set_a,
441 const bt_integer_range_set_unsigned *int_range_set_b);
442
443/*!
444@brief
445 \ref api-fund-c-typing "Upcasts" the unsigned integer range set
446 \bt_p{int_range_set} to the abstract #bt_integer_range_set type.
447
448@param[in] int_range_set
449 @parblock
450 Unsigned integer range set to upcast.
451
452 Can be \c NULL.
453 @endparblock
454
455@returns
456 \bt_p{int_range_set} as an abstract integer range set.
457*/
458static inline
459const bt_integer_range_set *bt_integer_range_set_unsigned_as_range_set_const(
460 const bt_integer_range_set_unsigned *int_range_set)
461{
462 return __BT_UPCAST_CONST(bt_integer_range_set, int_range_set);
463}
464
465/*!
466@brief
467 Increments the \ref api-fund-shared-object "reference count" of
468 the unsigned integer range set \bt_p{int_range_set}.
469
470@param[in] int_range_set
471 @parblock
472 Unsigned integer range set of which to increment the reference
473 count.
474
475 Can be \c NULL.
476 @endparblock
477
478@sa bt_integer_range_set_unsigned_put_ref() &mdash;
479 Decrements the reference count of an unsigned integer range set.
480*/
481extern void bt_integer_range_set_unsigned_get_ref(
482 const bt_integer_range_set_unsigned *int_range_set);
483
484/*!
485@brief
486 Decrements the \ref api-fund-shared-object "reference count" of
487 the unsigned integer range set \bt_p{int_range_set}.
488
489@param[in] int_range_set
490 @parblock
491 Unsigned integer range set of which to decrement the reference
492 count.
493
494 Can be \c NULL.
495 @endparblock
496
497@sa bt_integer_range_set_unsigned_get_ref() &mdash;
498 Increments the reference count of an unsigned integer range set.
499*/
500extern void bt_integer_range_set_unsigned_put_ref(
501 const bt_integer_range_set_unsigned *int_range_set);
502
503/*!
504@brief
505 Decrements the reference count of the unsigned integer range set
506 \bt_p{_int_range_set}, and then sets \bt_p{_int_range_set} to \c
507 NULL.
508
509@param _int_range_set
510 @parblock
511 Unsigned integer range set of which to decrement the reference
512 count.
513
514 Can contain \c NULL.
515 @endparblock
516
517@bt_pre_assign_expr{_int_range_set}
518*/
519#define BT_INTEGER_RANGE_SET_UNSIGNED_PUT_REF_AND_RESET(_int_range_set) \
520 do { \
521 bt_integer_range_set_unsigned_put_ref(_int_range_set); \
522 (_int_range_set) = NULL; \
523 } while (0)
524
525/*!
526@brief
527 Decrements the reference count of the unsigned integer range set
528 \bt_p{_dst}, sets \bt_p{_dst} to \bt_p{_src}, and then sets
529 \bt_p{_src} to \c NULL.
530
531This macro effectively moves an unsigned integer range set reference
532from the expression \bt_p{_src} to the expression \bt_p{_dst}, putting
533the existing \bt_p{_dst} reference.
534
535@param _dst
536 @parblock
537 Destination expression.
538
539 Can contain \c NULL.
540 @endparblock
541@param _src
542 @parblock
543 Source expression.
544
545 Can contain \c NULL.
546 @endparblock
547
548@bt_pre_assign_expr{_dst}
549@bt_pre_assign_expr{_src}
550*/
551#define BT_INTEGER_RANGE_SET_UNSIGNED_MOVE_REF(_dst, _src) \
552 do { \
553 bt_integer_range_set_unsigned_put_ref(_dst); \
554 (_dst) = (_src); \
555 (_src) = NULL; \
556 } while (0)
557
558/*! @} */
559
560/*!
561@name Signed integer range set
562@{
563*/
564
565/*!
566@brief
567 Creates and returns an empty set of signed 64-bit integer ranges.
568
569@returns
570 New signed integer range set, or \c NULL on memory error.
571*/
fb91c0ef
PP
572extern bt_integer_range_set_signed *bt_integer_range_set_signed_create(void);
573
43c59509
PP
574/*!
575@brief
576 Adds a signed 64-bit integer range having the lower value
577 \bt_p{lower} and the upper value \bt_p{upper} to the signed
578 integer range set
579 \bt_p{int_range_set}.
580
581The values \bt_p{lower} and \bt_p{upper} are included in the signed
582integer range to add to \bt_p{int_range_set}.
583
584@param[in] int_range_set
585 Signed integer range set to which to add a signed integer
586 range.
587@param[in] lower
588 Lower value (included) of the signed integer range to add to
589 \bt_p{int_range_set}.
590@param[in] upper
591 Upper value (included) of the signed integer range to add to
592 \bt_p{int_range_set}.
593
594@retval #BT_INTEGER_RANGE_SET_ADD_RANGE_STATUS_OK
595 Success.
596@retval #BT_INTEGER_RANGE_SET_ADD_RANGE_STATUS_MEMORY_ERROR
597 Out of memory.
598
599@bt_pre_not_null{int_range_set}
600@bt_pre_hot{int_range_set}
601@pre
602 \bt_p{lower} ≤ \bt_p{upper}.
603*/
604extern bt_integer_range_set_add_range_status
605bt_integer_range_set_signed_add_range(
606 bt_integer_range_set_signed *int_range_set,
fb91c0ef
PP
607 int64_t lower, int64_t upper);
608
43c59509
PP
609/*!
610@brief
611 Borrows the signed integer range at index \bt_p{index} from the
612 signed integer range set \bt_p{int_range_set}.
613
614@param[in] int_range_set
615 Signed integer range set from which to borrow the signed integer
616 range at index \bt_p{index}.
617@param[in] index
618 Index of the signed integer range to borrow from
619 \bt_p{int_range_set}.
620
621@returns
622 @parblock
623 \em Borrowed reference of the signed integer range of
624 \bt_p{int_range_set} at index \bt_p{index}.
625
626 The returned pointer remains valid until \bt_p{int_range_set} is
627 modified.
628 @endparblock
629
630@bt_pre_not_null{int_range_set}
631@pre
632 \bt_p{index} is less than the number of signed integer ranges in
633 \bt_p{int_range_set} (as returned by
634 bt_integer_range_set_get_range_count()).
635*/
636extern const bt_integer_range_signed *
637bt_integer_range_set_signed_borrow_range_by_index_const(
638 const bt_integer_range_set_signed *int_range_set, uint64_t index);
639
640/*!
641@brief
642 Returns whether or not the signed integer range set
643 \bt_p{int_range_set_a} is equal to \bt_p{int_range_set_b}.
644
645Two signed integer range sets are considered equal if they contain the
646exact same signed integer ranges, whatever the order. In other words,
647a signed integer range set containing [-57,&nbsp;23] and [24,&nbsp;42]
648is \em not equal to a signed integer range containing [-57,&nbsp;42].
649
650@param[in] int_range_set_a
651 Signed integer range set A.
652@param[in] int_range_set_b
653 Signed integer range set B.
654
655@returns
656 #BT_TRUE if \bt_p{int_range_set_a} is equal to
657 \bt_p{int_range_set_b}.
658
659@bt_pre_not_null{int_range_set_a}
660@bt_pre_not_null{int_range_set_b}
661*/
662extern bt_bool bt_integer_range_set_signed_is_equal(
663 const bt_integer_range_set_signed *int_range_set_a,
664 const bt_integer_range_set_signed *int_range_set_b);
665
666/*!
667@brief
668 \ref api-fund-c-typing "Upcasts" the signed integer range set
669 \bt_p{int_range_set} to the abstract #bt_integer_range_set type.
670
671@param[in] int_range_set
672 @parblock
673 Signed integer range set to upcast.
674
675 Can be \c NULL.
676 @endparblock
677
678@returns
679 \bt_p{int_range_set} as an abstract integer range set.
680*/
681static inline
682const bt_integer_range_set *bt_integer_range_set_signed_as_range_set_const(
683 const bt_integer_range_set_signed *int_range_set)
684{
685 return __BT_UPCAST_CONST(bt_integer_range_set, int_range_set);
686}
687
688/*!
689@brief
690 Increments the \ref api-fund-shared-object "reference count" of
691 the signed integer range set \bt_p{int_range_set}.
692
693@param[in] int_range_set
694 @parblock
695 Signed integer range set of which to increment the reference
696 count.
697
698 Can be \c NULL.
699 @endparblock
700
701@sa bt_integer_range_set_signed_put_ref() &mdash;
702 Decrements the reference count of a signed integer range set.
703*/
704extern void bt_integer_range_set_signed_get_ref(
705 const bt_integer_range_set_signed *int_range_set);
706
707/*!
708@brief
709 Decrements the \ref api-fund-shared-object "reference count" of
710 the signed integer range set \bt_p{int_range_set}.
711
712@param[in] int_range_set
713 @parblock
714 Signed integer range set of which to decrement the reference
715 count.
716
717 Can be \c NULL.
718 @endparblock
719
720@sa bt_integer_range_set_signed_get_ref() &mdash;
721 Increments the reference count of a signed integer range set.
722*/
723extern void bt_integer_range_set_signed_put_ref(
724 const bt_integer_range_set_signed *int_range_set);
725
726/*!
727@brief
728 Decrements the reference count of the signed integer range set
729 \bt_p{_int_range_set}, and then sets \bt_p{_int_range_set} to \c
730 NULL.
731
732@param _int_range_set
733 @parblock
734 Signed integer range set of which to decrement the reference
735 count.
736
737 Can contain \c NULL.
738 @endparblock
739
740@bt_pre_assign_expr{_int_range_set}
741*/
742#define BT_INTEGER_RANGE_SET_SIGNED_PUT_REF_AND_RESET(_int_range_set) \
743 do { \
744 bt_integer_range_set_signed_put_ref(_int_range_set); \
745 (_int_range_set) = NULL; \
746 } while (0)
747
748/*!
749@brief
750 Decrements the reference count of the signed integer range set
751 \bt_p{_dst}, sets \bt_p{_dst} to \bt_p{_src}, and then sets
752 \bt_p{_src} to \c NULL.
753
754This macro effectively moves a signed integer range set reference
755from the expression \bt_p{_src} to the expression \bt_p{_dst}, putting
756the existing \bt_p{_dst} reference.
757
758@param _dst
759 @parblock
760 Destination expression.
761
762 Can contain \c NULL.
763 @endparblock
764@param _src
765 @parblock
766 Source expression.
767
768 Can contain \c NULL.
769 @endparblock
770
771@bt_pre_assign_expr{_dst}
772@bt_pre_assign_expr{_src}
773*/
774#define BT_INTEGER_RANGE_SET_SIGNED_MOVE_REF(_dst, _src) \
775 do { \
776 bt_integer_range_set_signed_put_ref(_dst); \
777 (_dst) = (_src); \
778 (_src) = NULL; \
779 } while (0)
780
781/*! @} */
782
783/*! @} */
784
fb91c0ef
PP
785#ifdef __cplusplus
786}
787#endif
788
789#endif /* BABELTRACE2_INTEGER_RANGE_SET_H */
This page took 0.062518 seconds and 4 git commands to generate.