Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/auxiliary')
-rw-r--r--src/auxiliary/Makefile.am6
-rw-r--r--src/auxiliary/functions.cc51
-rw-r--r--src/auxiliary/functions.h28
3 files changed, 85 insertions, 0 deletions
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 <string>
+
+
+/// 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__