From e4f2faa8d5895ba30207c09c7886afb21a697d5f Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Mon, 12 May 2008 13:08:45 +0000 Subject: aux::plural, aux::article --- src/auxiliary/Makefile.am | 6 ++++++ src/auxiliary/functions.cc | 51 ++++++++++++++++++++++++++++++++++++++++++++++ src/auxiliary/functions.h | 28 +++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 src/auxiliary/Makefile.am create mode 100644 src/auxiliary/functions.cc create mode 100644 src/auxiliary/functions.h (limited to 'src/auxiliary') diff --git a/src/auxiliary/Makefile.am b/src/auxiliary/Makefile.am new file mode 100644 index 0000000..6db5443 --- /dev/null +++ b/src/auxiliary/Makefile.am @@ -0,0 +1,6 @@ +INCLUDES = -I$(top_srcdir)/src +METASOURCES = AUTO +noinst_LTLIBRARIES = libauxiliary.la +libauxiliary_la_LDFLAGS = -avoid-version -no-undefined +libauxiliary_la_SOURCES = functions.cc +noinst_HEADERS = functions.h diff --git a/src/auxiliary/functions.cc b/src/auxiliary/functions.cc new file mode 100644 index 0000000..373a6f0 --- /dev/null +++ b/src/auxiliary/functions.cc @@ -0,0 +1,51 @@ +/* + aux/functions.cc + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#include "auxiliary/functions.h" + +namespace aux +{ + +const std::string plural(const char * word, size_t n) +{ + std::string p(word); + + if (n != 1) + p += 's'; + return p; +} + +const std::string article(const char * word) +{ + std::string w(word); + + if (!w.size()) + return w; + + switch (word[0]) { + case 'a': + case 'A': + case 'e': + case 'E': + case 'i': + case 'I': + case 'o': + case 'O': + case 'u': + case 'U': + case 'y': + case 'Y': + w.assign("an "); + break; + default: + w.assign("a "); + } + + w.append(word); + return w; +} + +} diff --git a/src/auxiliary/functions.h b/src/auxiliary/functions.h new file mode 100644 index 0000000..88af5c7 --- /dev/null +++ b/src/auxiliary/functions.h @@ -0,0 +1,28 @@ +/* + aux/functions.cc + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_AUX_FUNCTIONS_H__ +#define __INCLUDED_AUX_FUNCTIONS_H__ + +#include + + +/// auxiliary functions +namespace aux +{ + +/// if n != 1, append a plural s to word +const std::string plural(const char * word, size_t n); + +inline const std::string plural(const std::string & word, size_t n) { return plural(word.c_str(), n); } + +/// prepend the "a" or "an" article to a word +const std::string article(const char * word); + +inline const std::string article(const std::string & word) { return article(word.c_str()); } +} + +#endif // __INCLUDED_AUX_FUNCTIONS_H__ -- cgit v1.2.3