+bool isStrDbl(std::string const & str);
+
+/// does the string contain a digit?
+bool hasDigitASCII(docstring const & str);
+
+bool isHexChar(char_type);
+
+bool isHex(docstring const & str);
+
+int hexToInt(docstring const & str);
+
+/// is \p str pure ascii?
+bool isAscii(docstring const & str);
+
+/// is \p str pure ascii?
+bool isAscii(std::string const & str);
+
+/**
+ * Changes the case of \p c to lowercase.
+ * Don't use this for non-ASCII characters, since it depends on the locale.
+ * This overloaded function is only implemented because the char_type variant
+ * would be used otherwise, and we assert in this function that \p c is in
+ * the ASCII range.
+ */
+char lowercase(char c);
+
+/**
+ * Changes the case of \p c to uppercase.
+ * Don't use this for non-ASCII characters, since it depends on the locale.
+ * This overloaded function is only implemented because the char_type variant
+ * would be used otherwise, and we assert in this function that \p c is in
+ * the ASCII range.
+ */
+char uppercase(char c);
+
+/// Changes the case of \p c to lowercase.
+/// Does not depend on the locale.
+char_type lowercase(char_type c);
+
+/// Changes the case of \p c to uppercase.
+/// Does not depend on the locale.
+char_type uppercase(char_type c);
+
+/// Checks if the supplied character is lower-case
+bool isLowerCase(char_type ch);
+
+/// Checks if the supplied character is upper-case
+bool isUpperCase(char_type ch);
+
+/// same as lowercase(), but ignores locale
+std::string const ascii_lowercase(std::string const &);
+docstring const ascii_lowercase(docstring const &);
+
+/// Changes the case of \p s to lowercase.
+/// Does not depend on the locale.
+docstring const lowercase(docstring const & s);
+// Currently unused, but the code is there if needed.
+// std::string const lowercase(std::string const & s);
+
+/// Changes the case of \p s to uppercase.
+/// Does not depend on the locale.
+docstring const uppercase(docstring const & s);
+
+/// Returns the superscript of \p c or \p c if no superscript exists.
+/// Does not depend on the locale.
+char_type superscript(char_type c);
+
+/// Returns the subscript of \p c or \p c if no subscript exists.
+/// Does not depend on the locale.
+char_type subscript(char_type c);
+
+/// Does str start with c?
+bool prefixIs(docstring const & str, char_type c);
+
+/// Does str start with pre?
+bool prefixIs(std::string const & str, std::string const & pre);
+bool prefixIs(docstring const & str, docstring const & pre);
+
+/// Does the string end with this char?
+bool suffixIs(std::string const &, char);
+bool suffixIs(docstring const &, char_type);
+
+/// Does the string end with this suffix?
+bool suffixIs(std::string const &, std::string const &);
+bool suffixIs(docstring const &, docstring const &);
+
+/// Is b contained in a?
+inline bool contains(std::string const & a, std::string const & b)