aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/iso8859-1.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'libxsde/xsde/cxx/iso8859-1.hxx')
-rw-r--r--libxsde/xsde/cxx/iso8859-1.hxx85
1 files changed, 85 insertions, 0 deletions
diff --git a/libxsde/xsde/cxx/iso8859-1.hxx b/libxsde/xsde/cxx/iso8859-1.hxx
new file mode 100644
index 0000000..5809886
--- /dev/null
+++ b/libxsde/xsde/cxx/iso8859-1.hxx
@@ -0,0 +1,85 @@
+// file : xsde/cxx/iso8859-1.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2010 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#ifndef XSDE_CXX_ISO8859_1_HXX
+#define XSDE_CXX_ISO8859_1_HXX
+
+#include <stddef.h> // size_t
+
+#include <xsde/cxx/config.hxx>
+
+namespace xsde
+{
+ namespace cxx
+ {
+ class iso8859_1
+ {
+ public:
+ // Get/set a replacement for unrepresentable characters. If set to
+ // 0 (the default value), the conversion fails if such a character
+ // is encountered.
+ //
+ static char
+ unrep_char ()
+ {
+ return unrep_char_;
+ }
+
+ static void
+ unrep_char (char c)
+ {
+ unrep_char_ = c;
+ }
+
+ public:
+ // Test whether a UTF-8 string is an ASCII string. If these
+ // functions return false, the iso_size argument contains
+ // the size of the buffer needed to convert this string to
+ // ISO-8859-1.
+ //
+ static bool
+ ascii_utf (const char* utf_str, size_t& iso_size);
+
+ static bool
+ ascii_utf (const char* utf_str, size_t utf_size, size_t& iso_size);
+
+ // Test whether an ISO-8859-1 string is an ASCII string. If
+ // these functions return false, the utf_size argument contains
+ // the size of the buffer needed to convert this string to UTF-8.
+ //
+ static bool
+ ascii_iso (const char* iso_str, size_t& utf_size);
+
+ static bool
+ ascii_iso (const char* iso_str, size_t iso_size, size_t& utf_size);
+
+ // Convert from UTF-8 to ISO-8859-1. Return false if an
+ // unrepresentable character was encountered and no replacement
+ // was specified.
+ //
+ //
+ static bool
+ to (const char* utf_str, char* iso_str);
+
+ static bool
+ to (const char* utf_str, size_t utf_size, char* iso_str);
+
+ // Convert from ISO-8859-1 to UTF-8.
+ //
+ static void
+ from (const char* iso_str, char* utf_str);
+
+ static void
+ from (const char* iso_str, size_t iso_size, char* utf_str);
+
+ private:
+ static char unrep_char_;
+ };
+ }
+}
+
+#include <xsde/cxx/iso8859-1.ixx>
+
+#endif // XSDE_CXX_ISO8859_1_HXX