Loading...
Searching...
No Matches
Go to the documentation of this file.
8#ifndef CLIBS_ARRAY_PRINTF_H
9#define CLIBS_ARRAY_PRINTF_H
14#define ARRAY_PRINT_DEFAULT_STARTSTR "[ "
15#define ARRAY_PRINT_DEFAULT_ENDSTR " ]"
16#define ARRAY_PRINT_DEFAULT_DELIM ", "
34#define array_fprintf_sde( FILESTREAM, ARRAY, ARRLEN, TYPE, FORMAT_STR, START_STR, \
38 fprintf( FILESTREAM, "%s", START_STR ); \
39 for ( size_t print_array_idx__ = 0; print_array_idx__ < ( ARRLEN ); \
40 ++print_array_idx__ ) \
42 fprintf( FILESTREAM, FORMAT_STR, \
43 ( ( TYPE * ) ARRAY )[ print_array_idx__ ] ); \
44 if ( print_array_idx__ != ( ARRLEN ) - 1 ) \
45 fprintf( FILESTREAM, "%s", DELIM ); \
47 fprintf( FILESTREAM, "%s", END_STR ); \
52#define array_fprintf_d( FILESTREAM, ARRAY, ARRLEN, TYPE, FORMAT_STR, DELIM ) \
53 array_fprintf_sde( FILESTREAM, ARRAY, ARRLEN, TYPE, FORMAT_STR, \
54 ARRAY_PRINT_DEFAULT_STARTSTR, DELIM, \
55 ARRAY_PRINT_DEFAULT_ENDSTR "\n" )
58#define array_fprintf( FILESTREAM, ARRAY, ARRLEN, TYPE, FORMAT_STR ) \
59 array_fprintf_d( FILESTREAM, ARRAY, ARRLEN, TYPE, FORMAT_STR, \
60 ARRAY_PRINT_DEFAULT_DELIM )
64#define array_printf_sde( ARRAY, ARRLEN, TYPE, FORMAT_STR, START_STR, DELIM, END_STR ) \
65 array_fprintf_sde( stdout, ARRAY, ARRLEN, TYPE, FORMAT_STR, START_STR, DELIM, \
69#define array_printf_d( ARRAY, ARRLEN, TYPE, FORMAT_STR, DELIM ) \
70 array_printf_sde( ARRAY, ARRLEN, TYPE, FORMAT_STR, ARRAY_PRINT_DEFAULT_STARTSTR, \
71 DELIM, ARRAY_PRINT_DEFAULT_ENDSTR "\n" )
74#define array_printf( ARRAY, ARRLEN, TYPE, FORMAT_STR ) \
75 array_printf_d( ARRAY, ARRLEN, TYPE, FORMAT_STR, ARRAY_PRINT_DEFAULT_DELIM )
77#if defined( CLIBS_DYNSTRING_H ) || defined( CLIBS__GENERATE_DOCS )
92#define array_sprintf_sde( STRINGVAR, ARRAY, ARRLEN, TYPE, FMTSTR, STARTSTR, DELIM, \
96 ( STRINGVAR ) = NULL; \
97 struct dynamic_string *dynstr = dynstr_init_as( STARTSTR ); \
98 if ( dynstr == NULL ) \
100 for ( size_t print_array_idx__ = 0; print_array_idx__ < ( ARRLEN ); \
101 ++print_array_idx__ ) \
103 if ( dynstr_appendf( dynstr, FMTSTR, \
104 ( ( TYPE * ) ARRAY )[ print_array_idx__ ] ) \
107 dynstr_destroy( dynstr ); \
110 if ( print_array_idx__ != ( ARRLEN ) - 1 ) \
112 if ( dynstr_append( dynstr, DELIM ) < 0 ) \
114 dynstr_destroy( dynstr ); \
119 if ( dynstr_append( dynstr, ENDSTR ) < 0 ) \
121 dynstr_destroy( dynstr ); \
124 ( STRINGVAR ) = dynstr_data_copy( dynstr ); \
125 dynstr_destroy( dynstr ); \
130#define array_sprintf_d( STRINGVAR, ARRAY, ARRLEN, TYPE, FMTSTR, DELIM ) \
131 array_sprintf_sde( STRINGVAR, ARRAY, ARRLEN, TYPE, FMTSTR, \
132 ARRAY_PRINT_DEFAULT_STARTSTR, DELIM, ARRAY_PRINT_DEFAULT_ENDSTR )
135#define array_sprintf( STRING, ARRAY, ARRLEN, TYPE, FMTSTR ) \
136 array_sprintf_d( STRING, ARRAY, ARRLEN, TYPE, FMTSTR, ARRAY_PRINT_DEFAULT_DELIM )