feature(ascii): Added ascii character range identification.
This commit is contained in:
parent
4be2d3b018
commit
e6b1497266
|
@ -0,0 +1,199 @@
|
|||
|
||||
#ifndef UFN_ASCII_H
|
||||
#define UFN_ASCII_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
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
|
Loading…
Reference in New Issue