diff --git a/examples/README.txt b/examples/README.txt index a1ca10c2f..790f71916 100644 --- a/examples/README.txt +++ b/examples/README.txt @@ -223,6 +223,12 @@ examples/cc3000 This is a test for the TI CC3000 wireless networking module. +examples/cctype +^^^^^^^^^^^^^^^ + + Verifies all possible inputs for all functions defined in the header file + cctype. + examples/chat ^^^^^^^^^^^^^ diff --git a/examples/cctype/.gitignore b/examples/cctype/.gitignore new file mode 100644 index 000000000..fa1ec7579 --- /dev/null +++ b/examples/cctype/.gitignore @@ -0,0 +1,11 @@ +/Make.dep +/.depend +/.built +/*.asm +/*.obj +/*.rel +/*.lst +/*.sym +/*.adb +/*.lib +/*.src diff --git a/examples/cctype/Kconfig b/examples/cctype/Kconfig new file mode 100644 index 000000000..c827a7bd9 --- /dev/null +++ b/examples/cctype/Kconfig @@ -0,0 +1,10 @@ +# +# For a description of the syntax of this configuration file, +# see the file kconfig-language.txt in the NuttX tools repository. +# + +config EXAMPLES_CCTYPE + bool "Verify C++ cctype operations" + default n + ---help--- + Enable the a simple test to verify C++ cctype operations. diff --git a/examples/cctype/Make.defs b/examples/cctype/Make.defs new file mode 100644 index 000000000..e38e62fd8 --- /dev/null +++ b/examples/cctype/Make.defs @@ -0,0 +1,39 @@ +############################################################################ +# apps/examples/cctype/Make.defs +# Adds selected applications to apps/ build +# +# Copyright (C) 2015 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name NuttX nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +ifeq ($(CONFIG_EXAMPLES_CCTYPE),y) +CONFIGURED_APPS += examples/cctype +endif diff --git a/examples/cctype/Makefile b/examples/cctype/Makefile new file mode 100644 index 000000000..746b0a5a1 --- /dev/null +++ b/examples/cctype/Makefile @@ -0,0 +1,54 @@ +############################################################################ +# apps/examples/cctype/Makefile +# +# Copyright (C) 2016 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name NuttX nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +-include $(TOPDIR)/Make.defs + +# cctype verification + +ASRCS = +CSRCS = +CXXSRCS = +MAINSRC = cctype_main.cxx + +CONFIG_EXAMPLES_CCTYPE_PROGNAME ?= cctype$(EXEEXT) +PROGNAME = $(CONFIG_EXAMPLES_CCTYPE_PROGNAME) + +# cctype built-in application info + +APPNAME = cctype +PRIORITY = SCHED_PRIORITY_DEFAULT +STACKSIZE = 2048 + +include $(APPDIR)/Application.mk diff --git a/examples/cctype/cctype_main.cxx b/examples/cctype/cctype_main.cxx new file mode 100644 index 000000000..eb7a91537 --- /dev/null +++ b/examples/cctype/cctype_main.cxx @@ -0,0 +1,83 @@ +//*************************************************************************** +// examples/cctype/cctype_main.cxx +// +// Copyright (C) 2016 Gregory Nutt. All rights reserved. +// Author: Gregory Nutt +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in +// the documentation and/or other materials provided with the +// distribution. +// 3. Neither the name NuttX nor the names of its contributors may be +// used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +// OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +//*************************************************************************** + +//*************************************************************************** +// Included Files +//*************************************************************************** + +#include + +#include +#include + +//*************************************************************************** +// Public Functions +//*************************************************************************** + +/**************************************************************************** + * Name: cctype_main + ****************************************************************************/ + +extern "C" +{ + int cctype_main(int argc, char *argv[]) + { + std::printf("\n A B C D E F G H I J K L M N O\n"); + for (int i = 0; i < 256; i++) + { + int upper = std::toupper(i); + int lower = std::tolower(i); + std::printf("%3d %c %d %d %d %d %d %d %d %d %d %d %d %d %d %c %c\n", + i, std::isprint(i) ? i : '.', + std::isspace(i), std::isascii(i), std::isprint(i), std::isgraph(i), + std::iscntrl(i), std::islower(i), std::isupper(i), std::isalpha(i), + std::isblank(i), std::isdigit(i), std::isalnum(i), std::ispunct(i), + std::isxdigit(i), + std::isprint(upper) ? upper : '.', + std::isprint(lower) ? lower : '.'); + } + + std::printf("\nKEY:\n"); + std::printf("\tA: isspace\tH: isalpha\n"); + std::printf("\tB: isascii\tI: isblank\n"); + std::printf("\tC: isprint\tJ: isdigit\n"); + std::printf("\tD: isgraph\tK: isalnum\n"); + std::printf("\tE: iscntrl\tL: ispunct\n"); + std::printf("\tF: islower\tM: isxdigit\n"); + std::printf("\tG: isupper\tN: toupper\n"); + std::printf("\t0: tolower\n"); + return 0; + } +}