summaryrefslogtreecommitdiff
path: root/libformat/libformat
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-07-20 08:51:52 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-07-20 08:51:52 +0200
commit28b92b59909030424420fefbca5a3f5df22337b5 (patch)
tree944313244a0f6319211152dc14e6740d99f75d54 /libformat/libformat
parentef4070dd12a9aedec805003beaad3816ca4dc3f4 (diff)
Make slightly more interesting
Diffstat (limited to 'libformat/libformat')
-rw-r--r--libformat/libformat/buildfile2
-rw-r--r--libformat/libformat/format.cxx26
-rw-r--r--libformat/libformat/format.hxx9
3 files changed, 31 insertions, 6 deletions
diff --git a/libformat/libformat/buildfile b/libformat/libformat/buildfile
index 4f6f156..55c918a 100644
--- a/libformat/libformat/buildfile
+++ b/libformat/libformat/buildfile
@@ -18,4 +18,4 @@ libs{format}: cxx.export.poptions += -DLIBFORMAT_SHARED
# Install into the libformat/ subdirectory of, say, /usr/include/.
#
-install.include = $install.include/libformat/
+install.include = $install.include/$project/
diff --git a/libformat/libformat/format.cxx b/libformat/libformat/format.cxx
index 421f50d..53530a8 100644
--- a/libformat/libformat/format.cxx
+++ b/libformat/libformat/format.cxx
@@ -2,10 +2,30 @@
#include <libformat/format.hxx>
+#include <cctype> // to{upper,lower}()
+#include <algorithm> // transform()
+
using namespace std;
-string
-format (const string& g, const string& n)
+namespace format
{
- return g + ", " + n + '!';
+ string
+ message (const string& g, const string& n, volume v)
+ {
+ string r (g);
+
+ auto tr = [&r] (char (*t) (char))
+ {
+ transform (r.begin (), r.end (), r.begin (), t);
+ };
+
+ switch (v)
+ {
+ case volume::quiet: tr ([](char c) -> char {return tolower (c);}); break;
+ case volume::normal: break;
+ case volume::loud: tr ([](char c) -> char {return toupper (c);}); break;
+ }
+
+ return r += ", " + n + '!';
+ }
}
diff --git a/libformat/libformat/format.hxx b/libformat/libformat/format.hxx
index 9c813ac..c711c16 100644
--- a/libformat/libformat/format.hxx
+++ b/libformat/libformat/format.hxx
@@ -6,5 +6,10 @@
#include <libformat/export.hxx>
-LIBFORMAT_EXPORT std::string
-format (const std::string& greeting, const std::string& name);
+namespace format
+{
+ enum class volume {quiet, normal, loud};
+
+ LIBFORMAT_EXPORT std::string
+ message (const std::string& greeting, const std::string& name, volume);
+}