Split libc/ctype/ctype.cpp into multiple files.

This commit is contained in:
Jonas 'Sortie' Termansen 2014-01-07 21:36:01 +01:00
parent df666103b3
commit ba8557075c
16 changed files with 445 additions and 107 deletions

View File

@ -20,7 +20,20 @@ FREEOBJS=\
assert/__assert.o \
aux/c++.o \
aux/op-new.o \
ctype/ctype.o \
ctype/isalnum.o \
ctype/isalpha.o \
ctype/isblank.o \
ctype/iscntrl.o \
ctype/isdigit.o \
ctype/isgraph.o \
ctype/islower.o \
ctype/isprint.o \
ctype/ispunct.o \
ctype/isspace.o \
ctype/isupper.o \
ctype/isxdigit.o \
ctype/tolower.o \
ctype/toupper.o \
dirent/alphasort.o \
dirent/closedir.o \
dirent/dclearerr.o \

View File

@ -1,106 +0,0 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/ctype.cpp
Character types.
*******************************************************************************/
#include <ctype.h>
// TODO: Support other locales than ASCII.
extern "C" int isalnum(int c)
{
return isalpha(c) || isdigit(c);
}
extern "C" int isalpha(int c)
{
return isupper(c) || islower(c);
}
extern "C" int isblank(int c)
{
return c == ' ' || c == '\t';
}
extern "C" int iscntrl(int c)
{
return 0 <= c && c < 32;
}
extern "C" int isdigit(int c)
{
return '0' <= c && c <= '9';
}
extern "C" int isgraph(int c)
{
return '!' <= c && c <= '~';
}
extern "C" int islower(int c)
{
return 'a' <= c && c <= 'z';
}
extern "C" int isprint(int c)
{
return isgraph(c) || c == ' ';
}
extern "C" int ispunct(int c)
{
return isprint(c) && c != ' ' && !isalnum(c);
}
extern "C" int isspace(int c)
{
return c == '\t' || c == '\n' || c == '\v' ||
c == '\f' || c == '\r' || c == ' ';
}
extern "C" int isupper(int c)
{
return 'A' <= c && c <= 'Z';
}
extern "C" int isxdigit(int c)
{
if ( isdigit(c) )
return 1;
if ( 'a' <= c && c <= 'f' ) return 1;
if ( 'A' <= c && c <= 'F' ) return 1;
return 0;
}
extern "C" int tolower(int c)
{
if ( 'A' <= c && c <= 'Z' )
return 'a' + c - 'A';
return c;
}
extern "C" int toupper(int c)
{
if ( 'a' <= c && c <= 'z' )
return 'A' + c - 'a';
return c;
}

30
libc/ctype/isalnum.cpp Normal file
View File

@ -0,0 +1,30 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/isalnum.cpp
Returns whether the character is a letter or a digit.
*******************************************************************************/
#include <ctype.h>
extern "C" int isalnum(int c)
{
return isalpha(c) || isdigit(c);
}

30
libc/ctype/isalpha.cpp Normal file
View File

@ -0,0 +1,30 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/isalpha.cpp
Returns whether the character is a letter.
*******************************************************************************/
#include <ctype.h>
extern "C" int isalpha(int c)
{
return isupper(c) || islower(c);
}

30
libc/ctype/isblank.cpp Normal file
View File

@ -0,0 +1,30 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/isblank.cpp
Returns whether the character is blank.
*******************************************************************************/
#include <ctype.h>
extern "C" int isblank(int c)
{
return c == ' ' || c == '\t';
}

30
libc/ctype/iscntrl.cpp Normal file
View File

@ -0,0 +1,30 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/iscntrl.cpp
Returns whether the character is a control character.
*******************************************************************************/
#include <ctype.h>
extern "C" int iscntrl(int c)
{
return 0 <= c && c < 32;
}

30
libc/ctype/isdigit.cpp Normal file
View File

@ -0,0 +1,30 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/isdigit.cpp
Returns whether the character is a digit.
*******************************************************************************/
#include <ctype.h>
extern "C" int isdigit(int c)
{
return '0' <= c && c <= '9';
}

30
libc/ctype/isgraph.cpp Normal file
View File

@ -0,0 +1,30 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/isgraph.cpp
Returns whether the character is graphical.
*******************************************************************************/
#include <ctype.h>
extern "C" int isgraph(int c)
{
return '!' <= c && c <= '~';
}

30
libc/ctype/islower.cpp Normal file
View File

@ -0,0 +1,30 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/islower.cpp
Returns whether the character is lower-case.
*******************************************************************************/
#include <ctype.h>
extern "C" int islower(int c)
{
return 'a' <= c && c <= 'z';
}

30
libc/ctype/isprint.cpp Normal file
View File

@ -0,0 +1,30 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/isprint.cpp
Returns whether the character is printable.
*******************************************************************************/
#include <ctype.h>
extern "C" int isprint(int c)
{
return isgraph(c) || c == ' ';
}

30
libc/ctype/ispunct.cpp Normal file
View File

@ -0,0 +1,30 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/ispunct.cpp
Returns whether the character is punctuational.
*******************************************************************************/
#include <ctype.h>
extern "C" int ispunct(int c)
{
return isprint(c) && c != ' ' && !isalnum(c);
}

31
libc/ctype/isspace.cpp Normal file
View File

@ -0,0 +1,31 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/isspace.cpp
Returns whether the character is white-space.
*******************************************************************************/
#include <ctype.h>
extern "C" int isspace(int c)
{
return c == '\t' || c == '\n' || c == '\v' ||
c == '\f' || c == '\r' || c == ' ';
}

30
libc/ctype/isupper.cpp Normal file
View File

@ -0,0 +1,30 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/isupper.cpp
Returns whether the character is upper-case.
*******************************************************************************/
#include <ctype.h>
extern "C" int isupper(int c)
{
return 'A' <= c && c <= 'Z';
}

36
libc/ctype/isxdigit.cpp Normal file
View File

@ -0,0 +1,36 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/isxdigit.cpp
Returns whether the character is a hexadecimal digit.
*******************************************************************************/
#include <ctype.h>
extern "C" int isxdigit(int c)
{
if ( isdigit(c) )
return 1;
if ( 'a' <= c && c <= 'f' )
return 1;
if ( 'A' <= c && c <= 'F' )
return 1;
return 0;
}

32
libc/ctype/tolower.cpp Normal file
View File

@ -0,0 +1,32 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/tolower.cpp
Converts the character to lower-case if it is upper-case.
*******************************************************************************/
#include <ctype.h>
extern "C" int tolower(int c)
{
if ( 'A' <= c && c <= 'Z' )
return 'a' + c - 'A';
return c;
}

32
libc/ctype/toupper.cpp Normal file
View File

@ -0,0 +1,32 @@
/*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2011.
This file is part of the Sortix C Library.
The Sortix C Library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
The Sortix C Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
ctype/toupper.cpp
Converts the character to upper-case if it is lower-case.
*******************************************************************************/
#include <ctype.h>
extern "C" int toupper(int c)
{
if ( 'a' <= c && c <= 'z' )
return 'A' + c - 'a';
return c;
}