Skip to content

Commit 5624929

Browse files
committed
🛠 improvements to examples
1 parent e2166a2 commit 5624929

File tree

10 files changed

+90
-51
lines changed

10 files changed

+90
-51
lines changed

examples/basic/source/error_handling.custom.utf32_to_utf8.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
// ========================================================================= //
2929

3030
#include <ztd/cuneicode.h>
31+
#include <ztd/cuneicode/io.h>
3132

3233
#include <ztd/idk/size.h>
3334

@@ -99,7 +100,7 @@ int main(int argc, char* argv[]) {
99100
(size_t)(sizeof(*output) * CHAR_BIT), err_result.error_count,
100101
first_error.index);
101102
fprintf(stdout, "%s Conversion Result:\n", has_err ? "Partial" : "Complete");
102-
fwrite(output_data, sizeof(*output_data), output_written, stdout);
103+
cnc_print_str_c8n(output_written, output_data);
103104
// the stream (may be) line-buffered, so make sure an extra "\n" is written
104105
// out this is actually critical for some forms of stdout/stderr mirrors; they
105106
// won't show the last line even if you manually call fflush(…) !

examples/basic/source/error_handling.utf32_to_utf8.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
// ========================================================================= //
2929

3030
#include <ztd/cuneicode.h>
31+
#include <ztd/cuneicode/io.h>
3132

3233
#include <ztd/idk/size.h>
3334

@@ -69,7 +70,7 @@ int main(int argc, char* argv[]) {
6970
input_read, (size_t)(sizeof(*input) * CHAR_BIT), output_written,
7071
(size_t)(sizeof(*output) * CHAR_BIT), err_result.error_count);
7172
fprintf(stdout, "%s Conversion Result:\n", has_err ? "Partial" : "Complete");
72-
fwrite(output_data, sizeof(*output_data), output_written, stdout);
73+
cnc_print_str_c8n(output_written, output_data);
7374
// the stream (may be) line-buffered, so make sure an extra "\n" is written
7475
// out this is actually critical for some forms of stdout/stderr mirrors; they
7576
// won't show the last line even if you manually call fflush(…) !

examples/basic/source/registry_empty_shift_jis_to_utf8.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
// ========================================================================= //
2929

3030
#include <ztd/cuneicode.h>
31+
#include <ztd/cuneicode/io.h>
3132

3233
#include <ztd/idk/size.h>
3334
#include <ztd/idk/assert.h>
@@ -258,17 +259,15 @@ int main(int argc, char* argv[]) {
258259
}
259260

260261
fprintf(stdout, "Opened a conversion from \"");
261-
fwrite(conversion_info.from_code_data,
262-
sizeof(*conversion_info.from_code_data), conversion_info.from_code_size,
263-
stdout);
262+
cnc_fprint_str_c8n(
263+
stdout, conversion_info.from_code_size, conversion_info.from_code_data);
264264
fprintf(stdout, "\" to \"");
265-
fwrite(conversion_info.to_code_data, sizeof(*conversion_info.to_code_data),
266-
conversion_info.to_code_size, stdout);
265+
cnc_fprint_str_c8n(
266+
stdout, conversion_info.to_code_size, conversion_info.to_code_data);
267267
if (conversion_info.is_indirect) {
268268
fprintf(stdout, "\" (through \"");
269-
fwrite(conversion_info.indirect_code_data,
270-
sizeof(*conversion_info.indirect_code_data),
271-
conversion_info.indirect_code_size, stdout);
269+
cnc_fprint_str_c8n(stdout, conversion_info.indirect_code_size,
270+
conversion_info.indirect_code_data);
272271
fprintf(stdout, "\")");
273272
}
274273
else {
@@ -308,7 +307,7 @@ int main(int argc, char* argv[]) {
308307
(size_t)(input_read), (size_t)(sizeof(*input) * CHAR_BIT),
309308
(size_t)(output_written), (size_t)(sizeof(*output) * CHAR_BIT));
310309
fprintf(stdout, "%s Conversion Result:\n", has_err ? "Partial" : "Complete");
311-
fwrite(output_data, sizeof(*output_data), output_written, stdout);
310+
cnc_print_str_c8n(output_written, output_data);
312311
// the stream (may be) line-buffered, so make sure an extra "\n" is written
313312
// out this is actually critical for some forms of stdout/stderr mirrors; they
314313
// won't show the last line even if you manually call fflush(…) !

examples/basic/source/registry_punycode_to_utf8.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
// ========================================================================= //
2929

3030
#include <ztd/cuneicode.h>
31+
#include <ztd/cuneicode/io.h>
3132

3233
#include <ztd/idk/size.h>
3334

@@ -62,17 +63,15 @@ int main(int argc, char* argv[]) {
6263
}
6364

6465
fprintf(stdout, "Opened a conversion from \"");
65-
fwrite(conversion_info.from_code_data,
66-
sizeof(*conversion_info.from_code_data), conversion_info.from_code_size,
67-
stdout);
66+
cnc_fprint_str_c8n(
67+
stdout, conversion_info.from_code_size, conversion_info.from_code_data);
6868
fprintf(stdout, "\" to \"");
69-
fwrite(conversion_info.to_code_data, sizeof(*conversion_info.to_code_data),
70-
conversion_info.to_code_size, stdout);
69+
cnc_fprint_str_c8n(
70+
stdout, conversion_info.to_code_size, conversion_info.to_code_data);
7171
if (conversion_info.is_indirect) {
7272
fprintf(stdout, "\" (through \"");
73-
fwrite(conversion_info.indirect_code_data,
74-
sizeof(*conversion_info.indirect_code_data),
75-
conversion_info.indirect_code_size, stdout);
73+
cnc_fprint_str_c8n(stdout, conversion_info.indirect_code_size,
74+
conversion_info.indirect_code_data);
7675
fprintf(stdout, "\")");
7776
}
7877
else {
@@ -109,7 +108,7 @@ int main(int argc, char* argv[]) {
109108
(size_t)(input_read), (size_t)(sizeof(*input) * CHAR_BIT),
110109
(size_t)(output_written), (size_t)(sizeof(*output) * CHAR_BIT));
111110
fprintf(stdout, "%s Conversion Result:\n", has_err ? "Partial" : "Complete");
112-
fwrite(output_data, sizeof(*output_data), output_written, stdout);
111+
cnc_print_str_c8n(output_written, output_data);
113112
// the stream (may be) line-buffered, so make sure an extra "\n" is written
114113
// out this is actually critical for some forms of stdout/stderr mirrors; they
115114
// won't show the last line even if you manually call fflush(…) !

examples/basic/source/registry_shift_jis_to_utf8.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
// ========================================================================= //
2929

3030
#include <ztd/cuneicode.h>
31+
#include <ztd/cuneicode/io.h>
3132

3233
#include <ztd/idk/size.h>
3334

@@ -63,17 +64,15 @@ int main(int argc, char* argv[]) {
6364
}
6465

6566
fprintf(stdout, "Opened a conversion from \"");
66-
fwrite(conversion_info.from_code_data,
67-
sizeof(*conversion_info.from_code_data), conversion_info.from_code_size,
68-
stdout);
67+
cnc_fprint_str_c8n(
68+
stdout, conversion_info.from_code_size, conversion_info.from_code_data);
6969
fprintf(stdout, "\" to \"");
70-
fwrite(conversion_info.to_code_data, sizeof(*conversion_info.to_code_data),
71-
conversion_info.to_code_size, stdout);
70+
cnc_fprint_str_c8n(
71+
stdout, conversion_info.to_code_size, conversion_info.to_code_data);
7272
if (conversion_info.is_indirect) {
7373
fprintf(stdout, "\" (through \"");
74-
fwrite(conversion_info.indirect_code_data,
75-
sizeof(*conversion_info.indirect_code_data),
76-
conversion_info.indirect_code_size, stdout);
74+
cnc_fprint_str_c8n(stdout, conversion_info.indirect_code_size,
75+
conversion_info.indirect_code_data);
7776
fprintf(stdout, "\")");
7877
}
7978
else {
@@ -113,7 +112,7 @@ int main(int argc, char* argv[]) {
113112
(size_t)(input_read), (size_t)(sizeof(*input) * CHAR_BIT),
114113
(size_t)(output_written), (size_t)(sizeof(*output) * CHAR_BIT));
115114
fprintf(stdout, "%s Conversion Result:\n", has_err ? "Partial" : "Complete");
116-
fwrite(output_data, sizeof(*output_data), output_written, stdout);
115+
cnc_print_str_c8n(output_written, output_data);
117116
// the stream (may be) line-buffered, so make sure an extra "\n" is written
118117
// out this is actually critical for some forms of stdout/stderr mirrors; they
119118
// won't show the last line even if you manually call fflush(…) !

examples/basic/source/registry_windows_code_page.c

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,9 @@ int main(int argc, char* argv[]) {
106106
const size_t failed_conversion_result_title_str_size
107107
= strlen(failed_conversion_result_title_str);
108108

109-
#if 0
110109
const ztd_char8_t input_data[]
111-
= u8"ସମସ୍ତ ମନୁଷ୍ୟ ଜନ୍ମକାଳରୁ ସ୍ଧୀନ ଏବଂ ମର୍ଯ୍ୟାଦା ଓ ଅଧିକାରରେ ସମାନ. ସେମାନଙ୍କଠାରେ ବୁଦ୍ଧି "
112-
u8"ଆଉ ବିବେକ ନିହିତ ଅଛି ଏବଂ ସେମାନଙ୍କୁ ପରସ୍ପର ପ୍ରତି ଭ୍ରାତୃତ୍ ମନୋଭାବରେ ବ୍ୟବହାର କରିବ ଉଚିତ୍";
113-
#else
114-
const ztd_char8_t input_data[] = u8"\0\0\0";
115-
#endif
110+
= u8"ଜାତି, ଭାଷା ଓ ସାହିତ୍ୟର ପରିଚୟ ଏବଂ ସ୍ୱାଭିମାନ ଏକ ସଂଗେ ଯୋଡା";
111+
116112
char intermediate_data[ztdc_c_array_size(input_data) * CNC_MC_MAX] = { 0 };
117113
const size_t starting_input_byte_size = sizeof(input_data);
118114
size_t input_byte_size = starting_input_byte_size;
@@ -207,12 +203,11 @@ int main(int argc, char* argv[]) {
207203
(size_t)(sizeof(*output_data) * CHAR_BIT));
208204
}
209205

210-
fprintf(stdout, "Output conversion result:\n");
211-
cnc_fprint_str_c8n(stdout, ztdc_c_array_size(input_data), input_data);
212-
fprintf(stdout, "\nOriginal Input:\n");
213-
cnc_fprint_str_c8n(
214-
stdout, output_bytes_written / sizeof(*output_data), output_data);
215-
fprintf(stdout, "\n\n");
206+
printf("Output conversion result:\n");
207+
cnc_print_str_c8n(output_bytes_written / sizeof(*output_data), output_data);
208+
printf("\nOriginal Input:\n");
209+
cnc_print_str_c8n(ztdc_c_array_size(input_data), input_data);
210+
printf("\n\n");
216211

217212
cnc_conv_delete(conversion);
218213
cnc_conv_delete(conversion_reverse);

examples/basic/source/utf32_to_utf8.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
// ========================================================================= //
2929

3030
#include <ztd/cuneicode.h>
31+
#include <ztd/cuneicode/io.h>
3132

3233
#include <ztd/idk/size.h>
3334

@@ -69,10 +70,11 @@ int main(int argc, char* argv[]) {
6970
(size_t)(input_read), (size_t)(sizeof(*input) * CHAR_BIT),
7071
(size_t)(output_written), (size_t)(sizeof(*output) * CHAR_BIT));
7172
fprintf(stdout, "%s Conversion Result:\n", has_err ? "Partial" : "Complete");
72-
fwrite(output_data, sizeof(*output_data), output_written, stdout);
73+
// print as UTF-8
74+
cnc_print_str_mcn_utf8(output_size, output_data);
7375
// the stream (may be) line-buffered, so make sure an extra "\n" is written
7476
// out this is actually critical for some forms of stdout/stderr mirrors; they
7577
// won't show the last line even if you manually call fflush(…) !
76-
fwrite("\n", sizeof(char), 1, stdout);
78+
fprintf(stdout, "\n");
7779
return has_err ? 1 : 0;
7880
}

examples/basic/source/windows_code_page.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
// ========================================================================= //
2929

3030
#include <ztd/cuneicode.h>
31+
#include <ztd/cuneicode/io.h>
3132

3233
#include <ztd/idk/size.h>
3334

@@ -53,8 +54,7 @@ int main(int argc, char* argv[]) {
5354
(void)argc;
5455
(void)argv;
5556
const ztd_char32_t input_data[]
56-
= U"ସମସ୍ତ ମନୁଷ୍ୟ ଜନ୍ମକାଳରୁ ସ୍ଧୀନ ଏବଂ ମର୍ଯ୍ୟାଦା ଓ ଅଧିକାରରେ ସମାନ. ସେମାନଙ୍କଠାରେ ବୁଦ୍ଧି "
57-
U"ଆଉ ବିବେକ ନିହିତ ଅଛି ଏବଂ ସେମାନଙ୍କୁ ପରସ୍ପର ପ୍ରତି ଭ୍ରାତୃତ୍ ମନୋଭାବରେ ବ୍ୟବହାର କରିବ ଉଚିତ୍";
57+
= U"ଜାତି, ଭାଷା ଓ ସାହିତ୍ୟର ପରିଚୟ ଏବଂ ସ୍ୱାଭିମାନ ଏକ ସଂଗେ ଯୋଡା";
5858
const uint32_t win32_odia_code_page = 57007u;
5959
char intermediate_data[ztdc_c_array_size(input_data) * CNC_MC_MAX] = { 0 };
6060
cnc_mcstate_t intermediate_state = { 0 };
@@ -143,6 +143,12 @@ int main(int argc, char* argv[]) {
143143
(size_t)(output_written), (size_t)(sizeof(*output) * CHAR_BIT));
144144
}
145145

146+
printf("Output conversion result:\n");
147+
cnc_print_str_c32n(output_written, output_data);
148+
printf("\nOriginal Input:\n");
149+
cnc_print_str_c32n(ztdc_c_array_size(input_data), input_data);
150+
printf("\n\n");
151+
146152
return 0;
147153
}
148154

include/ztd/cuneicode/io.h

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,20 @@ ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
6464
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
6565
size_t cnc_print_str_mc(const char* __str) ZTD_USE(ZTD_NOEXCEPT_IF_CXX);
6666

67+
ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
68+
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
69+
size_t cnc_fprint_str_mcn_utf8(FILE* __file, size_t __str_n, const char* __str)
70+
ZTD_USE(ZTD_NOEXCEPT_IF_CXX);
71+
ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
72+
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
73+
size_t cnc_fprint_str_mc_utf8(FILE* __file, const char* __str) ZTD_USE(ZTD_NOEXCEPT_IF_CXX);
74+
ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
75+
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
76+
size_t cnc_print_str_mcn_utf8(size_t __str_n, const char* __str) ZTD_USE(ZTD_NOEXCEPT_IF_CXX);
77+
ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
78+
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
79+
size_t cnc_print_str_mc_utf8(const char* __str) ZTD_USE(ZTD_NOEXCEPT_IF_CXX);
80+
6781
ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
6882
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
6983
size_t cnc_fprint_str_mwcn(FILE* __file, size_t __str_n, const ztd_wchar_t* __str)
@@ -122,13 +136,14 @@ size_t cnc_print_str_c32(const ztd_char32_t* __str) ZTD_USE(ZTD_NOEXCEPT_IF_CXX)
122136

123137
ZTD_EXTERN_C_CLOSE_I_
124138

125-
#define cnc_fprint_strn(_FILE, _STR_SIZE, _STR) \
126-
_ZTDC_CASCADING_GENERIC(char, cnc_fprint_str_mcn(_FILE, _STR), ztd_wchar_t, \
127-
cnc_fprint_str_mwcn(_FILE, _STR), ztd_char8_t, cnc_fprint_str_c8n(_FILE, _STR), \
128-
ztd_char16_t, cnc_fprint_str_c16n(_FILE, _STR), ztd_char32_t, \
129-
cnc_fprint_str_c32n(_FILE, _STR))
139+
#define cnc_fprint_strn(_FILE, _STR_SIZE, _STR) \
140+
_ZTDC_CASCADING_GENERIC(*_STR, char, cnc_fprint_str_mcn(_FILE, _STR_SIZE, _STR), ztd_wchar_t, \
141+
cnc_fprint_str_mwcn(_FILE, _STR_SIZE, _STR), ztd_char8_t, \
142+
cnc_fprint_str_c8n(_FILE, _STR_SIZE, _STR), ztd_char16_t, \
143+
cnc_fprint_str_c16n(_FILE, _STR_SIZE, _STR), ztd_char32_t, \
144+
cnc_fprint_str_c32n(_FILE, _STR_SIZE, _STR))
130145
#define cnc_fprint_str(_FILE, _STR) \
131-
_ZTDC_CASCADING_GENERIC(char, cnc_fprint_str_mc(_FILE, _STR), ztd_wchar_t, \
146+
_ZTDC_CASCADING_GENERIC(*_STR, char, cnc_fprint_str_mc(_FILE, _STR), ztd_wchar_t, \
132147
cnc_fprint_str_mwc(_FILE, _STR), ztd_char8_t, cnc_fprint_str_c8(_FILE, _STR), \
133148
ztd_char16_t, cnc_fprint_str_c16(_FILE, _STR), ztd_char32_t, \
134149
cnc_fprint_str_c32(_FILE, _STR))

source/ztd/cuneicode/io.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,28 @@ size_t cnc_print_str_mc(const char* __str) ZTD_USE(ZTD_NOEXCEPT_IF_CXX) {
7878
return cnc_fprint_str_mcn(stdout, ztdc_c_string_ptr_size_c(__str), __str);
7979
}
8080

81+
ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
82+
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
83+
size_t cnc_fprint_str_mcn_utf8(FILE* __file, size_t __str_n, const char* __str)
84+
ZTD_USE(ZTD_NOEXCEPT_IF_CXX) {
85+
return cnc_fprint_str_c8n(__file, __str_n, (const ztd_char8_t*)__str);
86+
}
87+
ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
88+
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
89+
size_t cnc_fprint_str_mc_utf8(FILE* __file, const char* __str) ZTD_USE(ZTD_NOEXCEPT_IF_CXX) {
90+
return cnc_fprint_str_c8(__file, (const ztd_char8_t*)__str);
91+
}
92+
ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
93+
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
94+
size_t cnc_print_str_mcn_utf8(size_t __str_n, const char* __str) ZTD_USE(ZTD_NOEXCEPT_IF_CXX) {
95+
return cnc_fprint_str_c8n(stdout, __str_n, (const ztd_char8_t*)__str);
96+
}
97+
ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
98+
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
99+
size_t cnc_print_str_mc_utf8(const char* __str) ZTD_USE(ZTD_NOEXCEPT_IF_CXX) {
100+
return cnc_fprint_str_c8(stdout, (const ztd_char8_t*)__str);
101+
}
102+
81103
ZTD_USE(ZTD_C_LANGUAGE_LINKAGE)
82104
ZTD_USE(ZTD_CUNEICODE_API_LINKAGE)
83105
size_t cnc_fprint_str_mwcn(FILE* __file, size_t __str_n, const ztd_wchar_t* __str)

0 commit comments

Comments
 (0)