#ifndef UFN_ASCII_H #define UFN_ASCII_H #include #include bool ufn_is_ascii_lowercase(char character); bool ufn_is_ascii_uppercase(char character); bool ufn_is_ascii_letter(char character); bool ufn_is_ascii_digit(char character); bool ufn_is_ascii_sign(char character); bool ufn_is_ascii_blank(char character); bool ufn_is_ascii_control(char character); uint8_t ufn_check_ascii_newline(const char *text, uint32_t remaining); #ifdef UFN_IMPLEMENTATION bool ufn_is_ascii_lowercase(char character) { if(character < 'a') { return false; } if(character > 'z') { return false; } return true; } bool ufn_is_ascii_uppercase(char character) { if(character < 'A') { return false; } if(character > 'Z') { return false; } return true; } bool ufn_is_ascii_letter(char character) { if(ufn_is_ascii_uppercase(character)) { return true; } if(ufn_is_ascii_lowercase(character)) { return true; } return false; } bool ufn_is_ascii_digit(char character) { if(character < '0') { return false; } if(character > '9') { return false; } return true; } bool ufn_is_ascii_sign_1(char character) { if(character < 0x21) { return false; } if(character > 0x2f) { return false; } return true; } bool ufn_is_ascii_sign_2(char character) { if(character < 0x3a) { return false; } if(character > 0x40) { return false; } return true; } bool ufn_is_ascii_sign_3(char character) { if(character < 0x5b) { return false; } if(character > 0x60) { return false; } return true; } bool ufn_is_ascii_sign_4(char character) { if(character < 0x7b) { return false; } if(character > 0x7e) { return false; } return true; } bool ufn_is_ascii_sign(char character) { if(ufn_is_ascii_sign_1(character)) { return true; } if(ufn_is_ascii_sign_2(character)) { return true; } if(ufn_is_ascii_sign_3(character)) { return true; } if(ufn_is_ascii_sign_4(character)) { return true; } return false; } bool ufn_is_ascii_blank(char character) { if(character == ' ') { return true; } if(character == '\t') { return true; } return false; } bool ufn_is_ascii_control(char character) { if(character < 32) { return true; } if(character == 127) { return true; } return false; } uint8_t ufn_check_ascii_newline(const char *text, uint32_t remaining) { if(remaining == 0) { return 0; } if(remaining < 2) { if(text[0] == '\n') { return 1; } return 0; } uint8_t length = 0; if(text[0] == '\r') { length = 1; } if(text[length] == '\r') { ++length; } return length; } #endif // UFN_IMPLEMENTATION #endif // UFN_ASCII_H