1/* Inline functions. 2 Copyright (C) 2020-2022 Free Software Foundation, Inc. 3 4 This file is part of libctf. 5 6 libctf is free software; you can redistribute it and/or modify it under 7 the terms of the GNU General Public License as published by the Free 8 Software Foundation; either version 3, or (at your option) any later 9 version. 10 11 This program is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 See the GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; see the file COPYING. If not see 18 <http://www.gnu.org/licenses/>. */ 19 20#ifndef _CTF_INLINES_H 21#define _CTF_INLINES_H 22 23#ifdef __cplusplus 24extern "C" 25{ 26#endif 27 28#include "config.h" 29 30#ifndef _libctf_malloc_ 31#error "ctf-inlines.h" should not be included directly: include "ctf-impl.h". 32#endif 33 34static inline ssize_t 35ctf_get_ctt_size (const ctf_dict_t *fp, 36 const ctf_type_t *tp, 37 ssize_t *sizep, 38 ssize_t *incrementp) 39{ 40 return (fp->ctf_dictops->ctfo_get_ctt_size (fp, tp, sizep, incrementp)); 41} 42 43static inline int 44ctf_forwardable_kind (int kind) 45{ 46 return (kind == CTF_K_STRUCT || kind == CTF_K_UNION || kind == CTF_K_ENUM); 47} 48 49static inline int 50ctf_dynhash_cnext_sorted (ctf_dynhash_t *h, ctf_next_t **i, const void **key, 51 const void **value, ctf_hash_sort_f sort_fun, 52 void *sort_arg) 53{ 54 return ctf_dynhash_next_sorted (h, i, (void **) key, (void **) value, 55 sort_fun, sort_arg); 56} 57 58static inline int 59ctf_dynhash_cnext (ctf_dynhash_t *h, ctf_next_t **it, 60 const void **key, const void **value) 61{ 62 return ctf_dynhash_next (h, it, (void **) key, (void **) value); 63} 64 65static inline int 66ctf_dynhash_cinsert (ctf_dynhash_t *h, const void *k, const void *v) 67{ 68 return ctf_dynhash_insert (h, (void *) k, (void *) v); 69} 70 71static inline int 72ctf_dynset_cnext (ctf_dynset_t *h, ctf_next_t **it, const void **key) 73{ 74 return ctf_dynset_next (h, it, (void **) key); 75} 76 77static inline int 78ctf_dynset_cinsert (ctf_dynset_t *h, const void *k) 79{ 80 return ctf_dynset_insert (h, (void *) k); 81} 82 83static inline int 84ctf_assert_internal (ctf_dict_t *fp, const char *file, size_t line, 85 const char *exprstr, int expr) 86{ 87 if (_libctf_unlikely_ (!expr)) 88 ctf_assert_fail_internal (fp, file, line, exprstr); 89 90 return expr; 91} 92 93#ifdef __cplusplus 94} 95#endif 96 97#endif /* _CTF_INLINES_H */ 98