- Timestamp:
- 2020-06-18T15:39:50Z (5 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ce52c333
- Parents:
- 4f663f3e
- Location:
- boot
- Files:
-
- 1 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
boot/arch/arm32/src/putchar.c
r4f663f3e r28a5ebd 193 193 /** Display a character 194 194 * 195 * @param ch Character to display 196 */ 197 void putwchar(const wchar_t ch) 195 * @param ch Character to display 196 * 197 */ 198 void putuchar(const char32_t ch) 198 199 { 199 200 if (ch == '\n') -
boot/arch/arm64/src/main.c
r4f663f3e r28a5ebd 99 99 * 100 100 * @param ch Character to display. 101 */ 102 void putwchar(wchar_t ch) 101 * 102 */ 103 void putuchar(char32_t ch) 103 104 { 104 105 if (ch == '\n') -
boot/arch/ia64/src/putchar.c
r4f663f3e r28a5ebd 33 33 #include <arch/ski.h> 34 34 35 void put wchar(const wchar_t ch)35 void putuchar(const char32_t ch) 36 36 { 37 37 #ifdef MACHINE_ski -
boot/arch/mips32/src/putchar.c
r4f663f3e r28a5ebd 57 57 #endif 58 58 59 void put wchar(const wchar_t ch)59 void putuchar(const char32_t ch) 60 60 { 61 61 if (ascii_check(ch)) -
boot/arch/ppc32/src/ofw.c
r4f663f3e r28a5ebd 39 39 } 40 40 41 void put wchar(wchar_t ch)41 void putuchar(char32_t ch) 42 42 { 43 43 if (ch == '\n') -
boot/arch/riscv64/src/putchar.c
r4f663f3e r28a5ebd 33 33 #include <arch/ucb.h> 34 34 35 void put wchar(wchar_t ch)35 void putuchar(char32_t ch) 36 36 { 37 37 if (ascii_check(ch)) -
boot/arch/sparc64/src/ofw.c
r4f663f3e r28a5ebd 43 43 #include <str.h> 44 44 45 void put wchar(wchar_t ch)45 void putuchar(char32_t ch) 46 46 { 47 47 if (ch == '\n') -
boot/generic/include/putchar.h
r4f663f3e r28a5ebd 37 37 38 38 #include <stddef.h> 39 #include <uchar.h> 39 40 40 extern void put wchar(wchar_t);41 extern void putuchar(char32_t); 41 42 42 43 #endif -
boot/generic/include/str.h
r4f663f3e r28a5ebd 38 38 #include <stdbool.h> 39 39 #include <stddef.h> 40 #include <uchar.h> 40 41 41 42 /* Common Unicode characters */ 42 #define U_SPECIAL 43 #define U_SPECIAL '?' 43 44 44 45 /** No size limit constant */ 45 46 #define STR_NO_LIMIT ((size_t) -1) 46 47 47 extern wchar_t str_decode(const char *str, size_t *offset, size_t sz);48 extern errno_t chr_encode( wchar_t ch, char *str, size_t *offset, size_t sz);48 extern char32_t str_decode(const char *str, size_t *offset, size_t sz); 49 extern errno_t chr_encode(char32_t ch, char *str, size_t *offset, size_t sz); 49 50 50 51 extern size_t str_size(const char *str); … … 52 53 extern size_t str_length(const char *str); 53 54 54 extern bool ascii_check( wchar_t ch);55 extern bool chr_check( wchar_t ch);55 extern bool ascii_check(char32_t ch); 56 extern bool chr_check(char32_t ch); 56 57 57 58 extern int str_cmp(const char *s1, const char *s2); -
boot/generic/include/tar.h
r4f663f3e r28a5ebd 33 33 */ 34 34 35 #ifndef TAR_H_36 #define TAR_H_35 #ifndef BOOT_TAR_H_ 36 #define BOOT_TAR_H_ 37 37 38 38 #include <stdbool.h> -
boot/generic/src/printf_core.c
r4f663f3e r28a5ebd 504 504 while (true) { 505 505 i = nxt; 506 wchar_t uc = str_decode(fmt, &nxt, STR_NO_LIMIT);506 char32_t uc = str_decode(fmt, &nxt, STR_NO_LIMIT); 507 507 508 508 if (uc == 0) -
boot/generic/src/str.c
r4f663f3e r28a5ebd 38 38 * strings, called just strings are encoded in UTF-8. Wide strings (encoded 39 39 * in UTF-32) are supported to a limited degree. A single character is 40 * represented as wchar_t.@n40 * represented as char32_t.@n 41 41 * 42 42 * Overview of the terminology:@n … … 46 46 * byte 8 bits stored in uint8_t (unsigned 8 bit integer) 47 47 * 48 * character UTF-32 encoded Unicode character, stored in wchar_t49 * ( signed 32 bit integer), code points 0 .. 111411148 * character UTF-32 encoded Unicode character, stored in char32_t 49 * (unsigned 32 bit integer), code points 0 .. 1114111 50 50 * are valid 51 51 * … … 57 57 * 58 58 * wide string UTF-32 encoded NULL-terminated Unicode string, 59 * wchar_t *59 * char32_t * 60 60 * 61 61 * [wide] string size number of BYTES in a [wide] string (excluding … … 96 96 * A specific character inside a [wide] string can be referred to by:@n 97 97 * 98 * pointer (char *, wchar_t *)98 * pointer (char *, char32_t *) 99 99 * byte offset (size_t) 100 100 * character index (size_t) … … 109 109 #include <stdint.h> 110 110 111 /** Check the condition if wchar_t is signed */112 #ifdef __WCHAR_UNSIGNED__113 #define WCHAR_SIGNED_CHECK(cond) (true)114 #else115 #define WCHAR_SIGNED_CHECK(cond) (cond)116 #endif117 118 111 /** Byte mask consisting of lowest @n bits (out of 8) */ 119 112 #define LO_MASK_8(n) ((uint8_t) ((1 << (n)) - 1)) … … 143 136 * 144 137 */ 145 wchar_t str_decode(const char *str, size_t *offset, size_t size)138 char32_t str_decode(const char *str, size_t *offset, size_t size) 146 139 { 147 140 if (*offset + 1 > size) … … 180 173 return U_SPECIAL; 181 174 182 wchar_t ch = b0 & LO_MASK_8(b0_bits);175 char32_t ch = b0 & LO_MASK_8(b0_bits); 183 176 184 177 /* Decode continuation bytes */ … … 191 184 192 185 /* Shift data bits to ch */ 193 ch = (ch << CONT_BITS) | ( wchar_t) (b & LO_MASK_8(CONT_BITS));186 ch = (ch << CONT_BITS) | (char32_t) (b & LO_MASK_8(CONT_BITS)); 194 187 cbytes--; 195 188 } … … 213 206 * code was invalid. 214 207 */ 215 errno_t chr_encode(const wchar_t ch, char *str, size_t *offset, size_t size)208 errno_t chr_encode(const char32_t ch, char *str, size_t *offset, size_t size) 216 209 { 217 210 if (*offset >= size) … … 340 333 * 341 334 */ 342 bool ascii_check( wchar_t ch)343 { 344 if ( WCHAR_SIGNED_CHECK(ch >= 0) && (ch <= 127))335 bool ascii_check(char32_t ch) 336 { 337 if (ch <= 127) 345 338 return true; 346 339 … … 353 346 * 354 347 */ 355 bool chr_check( wchar_t ch)356 { 357 if ( WCHAR_SIGNED_CHECK(ch >= 0) && (ch <= 1114111))348 bool chr_check(char32_t ch) 349 { 350 if (ch <= 1114111) 358 351 return true; 359 352 … … 381 374 int str_cmp(const char *s1, const char *s2) 382 375 { 383 wchar_t c1 = 0;384 wchar_t c2 = 0;376 char32_t c1 = 0; 377 char32_t c2 = 0; 385 378 386 379 size_t off1 = 0; … … 421 414 size_t dest_off = 0; 422 415 423 wchar_t ch;416 char32_t ch; 424 417 while ((ch = str_decode(src, &src_off, STR_NO_LIMIT)) != 0) { 425 418 if (chr_encode(ch, dest, &dest_off, size - 1) != EOK) -
boot/generic/src/vprintf.c
r4f663f3e r28a5ebd 42 42 43 43 while (offset < size) { 44 put wchar(str_decode(str, &offset, size));44 putuchar(str_decode(str, &offset, size)); 45 45 chars++; 46 46 } … … 53 53 size_t offset = 0; 54 54 size_t chars = 0; 55 wchar_t uc;55 char32_t uc; 56 56 57 57 while ((uc = str_decode(str, &offset, STR_NO_LIMIT)) != 0) { 58 put wchar(uc);58 putuchar(uc); 59 59 chars++; 60 60 } 61 61 62 put wchar('\n');62 putuchar('\n'); 63 63 return chars; 64 64 }
Note:
See TracChangeset
for help on using the changeset viewer.