Nilorea Library
C utilities for networking, threading, graphics
Loading...
Searching...
No Matches
ex_nstr.c
1
7#include "nilorea/n_str.h"
8#include "nilorea/n_log.h"
9
10int main(void) {
12
13 char* chardest = NULL;
14 NSTRBYTE written = 0,
15 length = 0;
16
17 write_and_fit(&chardest, &length, &written, "Hello");
18 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
19 write_and_fit(&chardest, &length, &written, " ");
20 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
21 write_and_fit(&chardest, &length, &written, "world !");
22 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
23 write_and_fit(&chardest, &length, &written, "world ! ");
24 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
25 write_and_fit(&chardest, &length, &written, "world ! ");
26 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
27 write_and_fit(&chardest, &length, &written, "world ! ");
28 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
29
30 Free(chardest);
31 written = length = 0;
32
33 write_and_fit_ex(&chardest, &length, &written, "Hello", 5, 0);
34 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
35 write_and_fit_ex(&chardest, &length, &written, " ", 1, 0);
36 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
37 write_and_fit_ex(&chardest, &length, &written, "world !", 7, 0);
38 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
39 write_and_fit_ex(&chardest, &length, &written, "Hello", 5, 0);
40 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
41 write_and_fit_ex(&chardest, &length, &written, " ", 1, 10); // alocate 10 more byte if resize needed
42 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
43 write_and_fit_ex(&chardest, &length, &written, "world !", 7, 0);
44 n_log(LOG_INFO, "charstr (%d/%d): %s\n", written, length, chardest);
45
46 Free(chardest);
47
48 N_STR* nstr = NULL;
49
50 n_log(LOG_INFO, "NULL str:%s\n", _nstr(nstr));
51
52 nstrprintf(nstr, "Hello, file is %s line %d date %s", __FILE__, __LINE__, __TIME__);
53
54 n_log(LOG_INFO, "str:%s\n", _nstr(nstr));
55
56 nstrprintf_cat(nstr, " - This will be added at file %s line %d date %s", __FILE__, __LINE__, __TIME__);
57
58 n_log(LOG_INFO, "str:%s\n", _nstr(nstr));
59
60 free_nstr(&nstr);
61
62 nstr = new_nstr(0);
63
64 n_log(LOG_INFO, "EMPTY str:%s\n", _nstr(nstr));
65
66 nstrprintf(nstr, "Hello, file is %s line %d date %s", __FILE__, __LINE__, __TIME__);
67
68 n_log(LOG_INFO, "str:%s\n", _nstr(nstr));
69
70 nstrprintf_cat(nstr, " - This will be added at file %s line %d date %s", __FILE__, __LINE__, __TIME__);
71
72 n_log(LOG_INFO, "str:%s\n", _nstr(nstr));
73
74 nstrprintf_cat(nstr, " - some more texte");
75
76 N_STR* nstr2 = nstrdup(nstr);
77
78 n_log(LOG_INFO, "str: %s\n str2: %s\n", _nstr(nstr), _nstr(nstr2));
79
80 N_STR* nstr3 = NULL;
81
82 nstrcat(nstr3, nstr);
83 nstrcat(nstr3, nstr2);
84
85 n_log(LOG_INFO, "str:%s\n", _nstr(nstr3));
86
87 free_nstr(&nstr3);
88
89 nstr3 = new_nstr(10);
90
91 nstrcat(nstr3, nstr);
92 nstrcat(nstr3, nstr2);
93
94 n_log(LOG_INFO, "str:%s\n", _nstr(nstr3));
95
96 free_nstr(&nstr);
97 free_nstr(&nstr2);
98 free_nstr(&nstr3);
99
100 nstr = new_nstr(128);
101 char data[1048576] = "";
102
103 for (int it = 0; it < 1048575; it++) {
104 data[it] = 32 + rand() % 63;
105 }
106 data[1048574] = '\0';
107
108 for (int it = 0; it < 100; it++) {
109 write_and_fit(&nstr->data, &nstr->length, &nstr->written, data);
110 }
111
112 free_nstr(&nstr);
113
114 exit(0);
115}
#define Free(__ptr)
Free Handler to get errors.
Definition n_common.h:242
#define _nstr(__PTR)
N_STR or "NULL" string for logging purposes.
Definition n_common.h:182
#define n_log(__LEVEL__,...)
Logging function wrapper to get line and func.
Definition n_log.h:69
#define LOG_DEBUG
debug-level messages
Definition n_log.h:64
void set_log_level(const int log_level)
Set the global log level value ( static int LOG_LEVEL )
Definition n_log.c:91
#define LOG_INFO
informational
Definition n_log.h:62
size_t written
size of the written data inside the string
Definition n_str.h:45
char * data
the string
Definition n_str.h:41
size_t length
length of string (in case we wanna keep information after the 0 end of string value)
Definition n_str.h:43
size_t NSTRBYTE
N_STR base unit.
Definition n_str.h:36
#define free_nstr(__ptr)
free a N_STR structure and set the pointer to NULL
Definition n_str.h:176
#define nstrcat(__nstr_dst, __nstr_src)
Macro to quickly concatenate two N_STR.
Definition n_str.h:102
N_STR * nstrdup(N_STR *str)
Duplicate a N_STR.
Definition n_str.c:670
int write_and_fit(char **dest, NSTRBYTE *size, NSTRBYTE *written, const char *src)
concatenate a copy of src of size strlen( src ) to dest, starting at dest[ written ],...
Definition n_str.c:1126
#define nstrprintf_cat(__nstr_var, __format,...)
Macro to quickly allocate and sprintf and cat to a N_STR.
Definition n_str.h:98
N_STR * new_nstr(NSTRBYTE size)
create a new N_STR string
Definition n_str.c:180
#define nstrprintf(__nstr_var, __format,...)
Macro to quickly allocate and sprintf to N_STR.
Definition n_str.h:94
int write_and_fit_ex(char **dest, NSTRBYTE *size, NSTRBYTE *written, const char *src, NSTRBYTE src_size, NSTRBYTE additional_padding)
concatenate a copy of src of size src_size to dest, starting at dest[ written ], updating written and...
Definition n_str.c:1093
A box including a string and his lenght.
Definition n_str.h:39
Generic log system.
N_STR and string function declaration.