CLibs
Loading...
Searching...
No Matches
pointer_utils.h
Go to the documentation of this file.
1/*
2 * Utility functions and macros for working with pointers.
3 *
4 *
5 * Created by MacBook on 01.11.2024.
6 */
7
8#ifndef CLIBS_POINTER_UTILS_H
9#define CLIBS_POINTER_UTILS_H
10
11#include "attributes.h" /* LibraryDefined */
12
13#include <stdarg.h> /* va_* */
14#include <stdlib.h> /* free(), NULL */
15
16
18#define new( TYPE ) calloc( 1, sizeof( TYPE ) )
19
21#define free_n( ptr ) free_and_null( ( void ** ) &( ptr ) )
22
23
30LibraryDefined void free_all( int n, ... )
31{
32 va_list vaList;
33 va_start( vaList, n );
34 while ( n-- > 0 )
35 free( va_arg( vaList, void * ) );
36
37 va_end( vaList );
38}
39
45LibraryDefined inline void free_and_null( void **n )
46{
47 free( *n );
48 *n = NULL;
49}
50
51
53#define deref_as( type, var ) ( *( type * ) ( var ) )
55#define deref_as_offset( type, var, offset ) ( *( ( type * ) ( var ) ) + offset )
56
57
58#endif //CLIBS_POINTER_UTILS_H
Function and variable attributes.
#define LibraryDefined
Definition attributes.h:107
LibraryDefined void free_and_null(void **n)
Definition pointer_utils.h:45
LibraryDefined void free_all(int n,...)
Definition pointer_utils.h:30