aboutsummaryrefslogtreecommitdiff
path: root/externals/ace/UTF16_Encoding_Converter.inl
diff options
context:
space:
mode:
authorXanadu <none@none>2010-07-20 02:49:28 +0200
committerXanadu <none@none>2010-07-20 02:49:28 +0200
commit79622802f397258ee0f34327ba3ae6977ca3e7ff (patch)
tree1868946c234ab9ee256a6b7766a15713eae94235 /externals/ace/UTF16_Encoding_Converter.inl
parent7dd2dc91816ab8b3bc3b99a1b1c99c7ea314d5a8 (diff)
parentf906976837502fa5aa81b982b901d1509f5aa0c4 (diff)
Merge. Revision history for source files should be all back now.
--HG-- branch : trunk rename : sql/CMakeLists.txt => sql/tools/CMakeLists.txt rename : src/server/game/Pools/PoolHandler.cpp => src/server/game/Pools/PoolMgr.cpp rename : src/server/game/Pools/PoolHandler.h => src/server/game/Pools/PoolMgr.h rename : src/server/game/PrecompiledHeaders/NixCorePCH.cpp => src/server/game/PrecompiledHeaders/gamePCH.cpp rename : src/server/game/PrecompiledHeaders/NixCorePCH.h => src/server/game/PrecompiledHeaders/gamePCH.h
Diffstat (limited to 'externals/ace/UTF16_Encoding_Converter.inl')
-rw-r--r--externals/ace/UTF16_Encoding_Converter.inl76
1 files changed, 76 insertions, 0 deletions
diff --git a/externals/ace/UTF16_Encoding_Converter.inl b/externals/ace/UTF16_Encoding_Converter.inl
new file mode 100644
index 00000000000..e5292757889
--- /dev/null
+++ b/externals/ace/UTF16_Encoding_Converter.inl
@@ -0,0 +1,76 @@
+/* -*- C++ -*- */
+// $Id: UTF16_Encoding_Converter.inl 80826 2008-03-04 14:51:23Z wotte $
+
+// ======================================================================
+//
+// The actual conversion methods are covered by the copyright information
+// below.
+// Chad Elliott 4/28/2005
+//
+// Copyright 2001-2004 Unicode, Inc.
+//
+// Limitations on Rights to Redistribute This Code
+//
+// Unicode, Inc. hereby grants the right to freely use the information
+// supplied in this file in the creation of products supporting the
+// Unicode Standard, and to make copies of this file in any form
+// for internal or external distribution as long as this notice
+// remains attached.
+//
+// ======================================================================
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+ACE_INLINE bool
+ACE_UTF16_Encoding_Converter::is_legal_utf8 (const ACE_Byte* source,
+ size_t length) const
+{
+ ACE_Byte a;
+ const ACE_Byte* srcptr = source + length;
+
+ switch (length)
+ {
+ default:
+ return false;
+
+ // Everything else falls through when "true"...
+ case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
+ case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
+ case 2: if ((a = (*--srcptr)) > 0xBF) return false;
+
+ switch (*source)
+ {
+ // no fall-through in this inner switch
+ case 0xE0:
+ if (a < 0xA0)
+ return false;
+ break;
+ case 0xED:
+ if (a > 0x9F)
+ return false;
+ break;
+ case 0xF0:
+ if (a < 0x90)
+ return false;
+ break;
+ case 0xF4:
+ if (a > 0x8F)
+ return false;
+ break;
+ default:
+ if (a < 0x80)
+ return false;
+ }
+
+ case 1:
+ if (*source >= 0x80 && *source < 0xC2)
+ return false;
+ }
+
+ if (*source > 0xF4)
+ return false;
+
+ return true;
+}
+
+ACE_END_VERSIONED_NAMESPACE_DECL