[sword-svn] r2981 - in trunk: . bindings/java-jni/jni bindings/objc/ObjCSword.xcodeproj bindings/swig/vstudio cmake include lib/bcppmake lib/vcppmake src/modules/filters src/utilfuns utilities/kylixmake

scribe at crosswire.org scribe at crosswire.org
Sat Sep 14 17:05:26 MST 2013


Author: scribe
Date: 2013-09-14 17:05:26 -0700 (Sat, 14 Sep 2013)
New Revision: 2981

Removed:
   trunk/include/swunicod.h
   trunk/src/utilfuns/swunicod.cpp
Modified:
   trunk/bindings/java-jni/jni/Android.mk
   trunk/bindings/objc/ObjCSword.xcodeproj/project.pbxproj
   trunk/bindings/swig/vstudio/libsword_csharpsword.vcproj
   trunk/cmake/sources.cmake
   trunk/include/Makefile.am
   trunk/include/utilstr.h
   trunk/lib/bcppmake/libsword.bdsproj
   trunk/lib/bcppmake/libsword.bpf
   trunk/lib/bcppmake/libsword.bpr
   trunk/lib/vcppmake/libsword.vcxproj
   trunk/src/modules/filters/rtfhtml.cpp
   trunk/src/utilfuns/Makefile.am
   trunk/src/utilfuns/utilstr.cpp
   trunk/sword.kdevprj
   trunk/utilities/kylixmake/libsword.bpr
Log:
We seems had an old swunicod.[h|cpp] unit sitting around which had code to convert from UTF32 to UTF8
This was only used in one obscure filter RTFHTML
The code was moved to implement the empty method in utilstr.cpp



Modified: trunk/bindings/java-jni/jni/Android.mk
===================================================================
--- trunk/bindings/java-jni/jni/Android.mk	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/bindings/java-jni/jni/Android.mk	2013-09-15 00:05:26 UTC (rev 2981)
@@ -165,7 +165,6 @@
 ../../../src/utilfuns/url.cpp \
 ../../../src/utilfuns/swversion.cpp \
 ../../../src/utilfuns/utilxml.cpp \
-../../../src/utilfuns/swunicod.cpp \
 ../../../src/utilfuns/regex.c \
 ../../../src/keys/swkey.cpp \
 ../../../src/keys/versetreekey.cpp \

Modified: trunk/bindings/objc/ObjCSword.xcodeproj/project.pbxproj
===================================================================
--- trunk/bindings/objc/ObjCSword.xcodeproj/project.pbxproj	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/bindings/objc/ObjCSword.xcodeproj/project.pbxproj	2013-09-15 00:05:26 UTC (rev 2981)
@@ -315,7 +315,6 @@
 		A954ACBB13EEA0C10094E3FE /* roman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D513EE98B30094E3FE /* roman.cpp */; };
 		A954ACBC13EEA0C10094E3FE /* swbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D613EE98B30094E3FE /* swbuf.cpp */; };
 		A954ACBD13EEA0C10094E3FE /* swobject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D713EE98B30094E3FE /* swobject.cpp */; };
-		A954ACBE13EEA0C10094E3FE /* swunicod.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D813EE98B30094E3FE /* swunicod.cpp */; };
 		A954ACBF13EEA0C10094E3FE /* swversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8D913EE98B30094E3FE /* swversion.cpp */; };
 		A954ACC013EEA0C10094E3FE /* url.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DA13EE98B30094E3FE /* url.cpp */; };
 		A954ACC113EEA0C10094E3FE /* utilstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A954A8DB13EE98B30094E3FE /* utilstr.cpp */; };
@@ -862,7 +861,6 @@
 		A954A8D513EE98B30094E3FE /* roman.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = roman.cpp; sourceTree = "<group>"; };
 		A954A8D613EE98B30094E3FE /* swbuf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = swbuf.cpp; sourceTree = "<group>"; };
 		A954A8D713EE98B30094E3FE /* swobject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = swobject.cpp; sourceTree = "<group>"; };
-		A954A8D813EE98B30094E3FE /* swunicod.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = swunicod.cpp; sourceTree = "<group>"; };
 		A954A8D913EE98B30094E3FE /* swversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = swversion.cpp; sourceTree = "<group>"; };
 		A954A8DA13EE98B30094E3FE /* url.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = url.cpp; sourceTree = "<group>"; };
 		A954A8DB13EE98B30094E3FE /* utilstr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = utilstr.cpp; sourceTree = "<group>"; };
@@ -1882,7 +1880,6 @@
 				A954A8D513EE98B30094E3FE /* roman.cpp */,
 				A954A8D613EE98B30094E3FE /* swbuf.cpp */,
 				A954A8D713EE98B30094E3FE /* swobject.cpp */,
-				A954A8D813EE98B30094E3FE /* swunicod.cpp */,
 				A954A8D913EE98B30094E3FE /* swversion.cpp */,
 				A954A8DA13EE98B30094E3FE /* url.cpp */,
 				A954A8DB13EE98B30094E3FE /* utilstr.cpp */,
@@ -3005,7 +3002,6 @@
 				A954ACBB13EEA0C10094E3FE /* roman.cpp in Sources */,
 				A954ACBC13EEA0C10094E3FE /* swbuf.cpp in Sources */,
 				A954ACBD13EEA0C10094E3FE /* swobject.cpp in Sources */,
-				A954ACBE13EEA0C10094E3FE /* swunicod.cpp in Sources */,
 				A954ACBF13EEA0C10094E3FE /* swversion.cpp in Sources */,
 				A954ACC013EEA0C10094E3FE /* url.cpp in Sources */,
 				A954ACC113EEA0C10094E3FE /* utilstr.cpp in Sources */,

Modified: trunk/bindings/swig/vstudio/libsword_csharpsword.vcproj
===================================================================
--- trunk/bindings/swig/vstudio/libsword_csharpsword.vcproj	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/bindings/swig/vstudio/libsword_csharpsword.vcproj	2013-09-15 00:05:26 UTC (rev 2981)
@@ -752,10 +752,6 @@
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\include\swunicod.h"
-				>
-			</File>
-			<File
 				RelativePath="..\..\..\include\swversion.h"
 				>
 			</File>

Modified: trunk/cmake/sources.cmake
===================================================================
--- trunk/cmake/sources.cmake	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/cmake/sources.cmake	2013-09-15 00:05:26 UTC (rev 2981)
@@ -159,7 +159,6 @@
 	src/utilfuns/swobject.cpp
 	src/utilfuns/utilstr.cpp
 	src/utilfuns/utilxml.cpp
-	src/utilfuns/swunicod.cpp
 	src/utilfuns/swversion.cpp
 	src/utilfuns/swbuf.cpp
 	src/utilfuns/ftpparse.c
@@ -344,7 +343,6 @@
 	include/swobject.h
 	include/swsearchable.h
 	include/swtext.h
-	include/swunicod.h
     "${CMAKE_CURRENT_BINARY_DIR}/include/swversion.h"
 	include/sysdata.h
 

Modified: trunk/include/Makefile.am
===================================================================
--- trunk/include/Makefile.am	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/include/Makefile.am	2013-09-15 00:05:26 UTC (rev 2981)
@@ -111,7 +111,6 @@
 pkginclude_HEADERS += $(swincludedir)/swobject.h
 pkginclude_HEADERS += $(swincludedir)/swsearchable.h
 pkginclude_HEADERS += $(swincludedir)/swtext.h
-pkginclude_HEADERS += $(swincludedir)/swunicod.h
 pkginclude_HEADERS += $(swincludedir)/swversion.h
 pkginclude_HEADERS += $(swincludedir)/sysdata.h
 

Deleted: trunk/include/swunicod.h
===================================================================
--- trunk/include/swunicod.h	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/include/swunicod.h	2013-09-15 00:05:26 UTC (rev 2981)
@@ -1,47 +0,0 @@
-/******************************************************************************
- *
- *  swunicod.h -	Unicode functions
- *
- * $Id$
- * 
- * Copyright 2001-2013 CrossWire Bible Society (http://www.crosswire.org)
- *      CrossWire Bible Society
- *      P. O. Box 2528
- *      Tempe, AZ  85280-2528
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation version 2.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- */
-
-
-#ifndef SWUNICOD_H
-#define SWUNICOD_H
-
-#include <defs.h>
-SWORD_NAMESPACE_START
-
-/** Converts a 32-bit unsigned integer UTF-32 value into a UTF-8 encoded 1-6 byte array
- * @param utf32 the UTF-32 Unicode code point value
- * @param utf8 pointer to an array of 6 unsigned chars to contain the UTF-8 value
- * @return utf8
- */
-unsigned char* UTF32to8 (unsigned long utf32, unsigned char * utf8);
-
-
-/** Converts a UTF-8 encoded 1-6 byte array into a 32-bit unsigned integer UTF-32 value
- * @param utf8 pointer to an array of 6 unsigned chars containing the UTF-8 value, starting in the utf8[0]
- * @param utf32 the UTF-32 Unicode code point value
- * @return utf32
- */
-unsigned long UTF8to32 (unsigned char * utf8, unsigned long utf32);
-
-SWORD_NAMESPACE_END
-
-#endif

Modified: trunk/include/utilstr.h
===================================================================
--- trunk/include/utilstr.h	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/include/utilstr.h	2013-09-15 00:05:26 UTC (rev 2981)
@@ -59,6 +59,19 @@
 
 
 /******************************************************************************
+ * getUTF8FromUniChar - retrieves us UTF8 string from a
+ * 					Unicode codepoint
+ *
+ * ENT:	uchar - unicode codepoint value
+ *
+ * RET:	buf - a UTF8 string which consists of the proper UTF8 sequence of
+ * 				bytes for the given Unicode codepoint
+ */
+
+SWBuf getUTF8FromUniChar(__u32 uchar);
+
+
+/******************************************************************************
  * assureValidUTF8 - iterates the supplied UTF-8 buffer and checks for validity
  * 					replacing invalid bytes if necessary and returning a
  *					verified UTF8 buffer, leaving the original input

Modified: trunk/lib/bcppmake/libsword.bdsproj
===================================================================
--- trunk/lib/bcppmake/libsword.bdsproj	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/lib/bcppmake/libsword.bdsproj	2013-09-15 00:05:26 UTC (rev 2981)
@@ -429,7 +429,6 @@
         <FILE FILENAME="..\..\src\utilfuns\roman.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="roman" FORMNAME="" DESIGNCLASS=""/>
         <FILE FILENAME="..\..\src\utilfuns\swbuf.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="swbuf" FORMNAME="" DESIGNCLASS=""/>
         <FILE FILENAME="..\..\src\utilfuns\swobject.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="swobject" FORMNAME="" DESIGNCLASS=""/>
-        <FILE FILENAME="..\..\src\utilfuns\swunicod.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="swunicod" FORMNAME="" DESIGNCLASS=""/>
         <FILE FILENAME="..\..\src\utilfuns\swversion.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="swversion" FORMNAME="" DESIGNCLASS=""/>
         <FILE FILENAME="..\..\src\utilfuns\url.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="url" FORMNAME="" DESIGNCLASS=""/>
         <FILE FILENAME="..\..\src\utilfuns\utilstr.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="utilstr" FORMNAME="" DESIGNCLASS=""/>

Modified: trunk/lib/bcppmake/libsword.bpf
===================================================================
--- trunk/lib/bcppmake/libsword.bpf	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/lib/bcppmake/libsword.bpf	2013-09-15 00:05:26 UTC (rev 2981)
@@ -29,7 +29,6 @@
 USEUNIT("..\..\src\utilfuns\roman.cpp");
 USEUNIT("..\..\src\utilfuns\swbuf.cpp");
 USEUNIT("..\..\src\utilfuns\swobject.cpp");
-USEUNIT("..\..\src\utilfuns\swunicod.cpp");
 USEUNIT("..\..\src\utilfuns\swversion.cpp");
 USEUNIT("..\..\src\utilfuns\url.cpp");
 USEUNIT("..\..\src\utilfuns\utilstr.cpp");

Modified: trunk/lib/bcppmake/libsword.bpr
===================================================================
--- trunk/lib/bcppmake/libsword.bpr	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/lib/bcppmake/libsword.bpr	2013-09-15 00:05:26 UTC (rev 2981)
@@ -16,7 +16,7 @@
       ..\..\src\mgr\swlocale.obj ..\..\src\mgr\swmgr.obj 
       ..\..\src\mgr\curlftpt.obj ..\..\src\utilfuns\utilxml.obj 
       ..\..\src\utilfuns\roman.obj ..\..\src\utilfuns\swbuf.obj 
-      ..\..\src\utilfuns\swobject.obj ..\..\src\utilfuns\swunicod.obj 
+      ..\..\src\utilfuns\swobject.obj 
       ..\..\src\utilfuns\swversion.obj ..\..\src\utilfuns\url.obj 
       ..\..\src\utilfuns\utilstr.obj 
       ..\..\src\modules\comments\hrefcom\hrefcom.obj 
@@ -309,4 +309,4 @@
 ProjectLang=
 RootDir=
   </IDEOPTIONS>
-</PROJECT>
\ No newline at end of file
+</PROJECT>

Modified: trunk/lib/vcppmake/libsword.vcxproj
===================================================================
--- trunk/lib/vcppmake/libsword.vcxproj	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/lib/vcppmake/libsword.vcxproj	2013-09-15 00:05:26 UTC (rev 2981)
@@ -223,7 +223,6 @@
     <ClCompile Include="..\..\src\modules\filters\swoptfilter.cpp" />
     <ClCompile Include="..\..\src\mgr\swsearchable.cpp" />
     <ClCompile Include="..\..\src\modules\texts\swtext.cpp" />
-    <ClCompile Include="..\..\src\utilfuns\swunicod.cpp" />
     <ClCompile Include="..\..\src\utilfuns\swversion.cpp" />
     <ClCompile Include="..\..\src\modules\filters\teixhtml.cpp" />
     <ClCompile Include="..\..\src\modules\filters\teihtmlhref.cpp" />
@@ -405,7 +404,6 @@
     <ClInclude Include="..\..\include\swoptfilter.h" />
     <ClInclude Include="..\..\include\swsearchable.h" />
     <ClInclude Include="..\..\include\swtext.h" />
-    <ClInclude Include="..\..\include\swunicod.h" />
     <ClInclude Include="..\..\include\swversion.h" />
     <ClInclude Include="..\..\include\sysdata.h" />
     <ClInclude Include="..\..\include\teixhtml.h" />
@@ -476,4 +474,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>

Modified: trunk/src/modules/filters/rtfhtml.cpp
===================================================================
--- trunk/src/modules/filters/rtfhtml.cpp	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/src/modules/filters/rtfhtml.cpp	2013-09-15 00:05:26 UTC (rev 2981)
@@ -24,7 +24,7 @@
 #include <stdlib.h>
 #include <rtfhtml.h>
 #include <swbuf.h>
-#include <swunicod.h>
+#include <utilstr.h>
 #include <ctype.h>
 #include <sysdata.h>
 
@@ -48,7 +48,6 @@
 		{
 			// \u12345?
 			if ( *(from+1) == 'u' && (*(from+2) == '-' || isdigit(*(from+2)))) {
-				unsigned char buf[8];
 				from += 2;
 				const char *end = from;
 				while (isdigit(*++end));
@@ -56,7 +55,7 @@
 				num.append(from, end-from);
 				__s16 n = atoi(num.c_str());
 				__u32 u = (__u16)n;
-				text.append((const char *)UTF32to8(u, buf));
+				text.append(getUTF8FromUniChar(u));
 				from += (end-from);
 				continue;
 			}

Modified: trunk/src/utilfuns/Makefile.am
===================================================================
--- trunk/src/utilfuns/Makefile.am	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/src/utilfuns/Makefile.am	2013-09-15 00:05:26 UTC (rev 2981)
@@ -8,7 +8,6 @@
 libsword_la_SOURCES += $(utilfunsdir)/swobject.cpp
 libsword_la_SOURCES += $(utilfunsdir)/utilstr.cpp
 libsword_la_SOURCES += $(utilfunsdir)/utilxml.cpp
-libsword_la_SOURCES += $(utilfunsdir)/swunicod.cpp
 libsword_la_SOURCES += $(utilfunsdir)/swversion.cpp
 libsword_la_SOURCES += $(utilfunsdir)/swbuf.cpp
 libsword_la_SOURCES += $(utilfunsdir)/ftpparse.c

Deleted: trunk/src/utilfuns/swunicod.cpp
===================================================================
--- trunk/src/utilfuns/swunicod.cpp	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/src/utilfuns/swunicod.cpp	2013-09-15 00:05:26 UTC (rev 2981)
@@ -1,151 +0,0 @@
-/******************************************************************************
- *
- *  swunicod.cpp -	Unicode utility functions
- *
- * $Id$
- *
- * Copyright 2001-2013 CrossWire Bible Society (http://www.crosswire.org)
- *      CrossWire Bible Society
- *      P. O. Box 2528
- *      Tempe, AZ  85280-2528
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation version 2.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- */
-
-#include "swunicod.h"
-
-
-SWORD_NAMESPACE_START
-
-
-unsigned char *UTF32to8(unsigned long utf32, unsigned char *utf8) {
-	unsigned int i;
-	for (i = 0; i < 6; i++) utf8[i] = 0;
-
-	if (utf32 < 0x80) {
-		utf8[0] = (char)utf32;
-	}
-	else if (utf32 < 0x800) {
-		i = utf32 & 0x3f;
-		utf8[1] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x1f;
-		utf8[0] = 0xc0 | i;
-	}
-	else if (utf32 < 0x10000) {
-		i = utf32 & 0x3f;
-		utf8[2] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x3f;
-		utf8[1] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x0f;
-		utf8[0] = 0xe0 | i;
-	}
-	else if (utf32 < 0x200000) {
-		i = utf32 & 0x3f;
-		utf8[3] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x3f;
-		utf8[2] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x3f;
-		utf8[1] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x07;
-		utf8[0] = 0xf0 | i;
-	}
-	else if (utf32 < 0x4000000) {
-		i = utf32 & 0x3f;
-		utf8[4] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x3f;
-		utf8[3] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x3f;
-		utf8[2] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x3f;
-		utf8[1] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x03;
-		utf8[0] = 0xf8 | i;
-	}
-	else if (utf32 < 0x80000000) {
-		i = utf32 & 0x3f;
-		utf8[5] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x3f;
-		utf8[4] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x3f;
-		utf8[3] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x3f;
-		utf8[2] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x3f;
-		utf8[1] = 0x80 | i;
-		utf32 >>= 6;
-
-		i = utf32 & 0x01;
-		utf8[0] = 0xfc | i;
-	}
-
-	return utf8;
-}
-
-
-unsigned long UTF8to32(unsigned char *utf8) {
-
-	unsigned char i = utf8[0];
-	unsigned char count;
-	unsigned long utf32 = 0;
-
-	for (count = 0; i & 0x80; count++) i <<= 1;
-	if (!count) {
-		return utf8[0];
-	}
-	else if (count == 1) {
-		return 0xffff;
-	}
-	else {
-		count--;
-		utf32 = i >> count;
-		for (i = 1; i <= count; i++) {
-			if ((0xc0 & utf8[i]) != 0x80) {
-				return  0xffff;
-			}
-			utf32 <<= 6;
-			utf32 |= (utf8[i] & 0x3f);
-		}
-	}
-
-	return utf32;
-}
-
-
-SWORD_NAMESPACE_END
-

Modified: trunk/src/utilfuns/utilstr.cpp
===================================================================
--- trunk/src/utilfuns/utilstr.cpp	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/src/utilfuns/utilstr.cpp	2013-09-15 00:05:26 UTC (rev 2981)
@@ -247,8 +247,100 @@
 
 
 SWBuf getUTF8FromUniChar(__u32 uchar) {
-	// TODO: finish this logic
-	return SWBuf((char)uchar);
+	SWBuf retVal("", 7);
+	unsigned int i;
+
+	if (uchar < 0x80) {
+		retVal.append((unsigned char)uchar);
+		retVal.setSize(1);
+	}
+	else if (uchar < 0x800) {
+		i = uchar & 0x3f;
+		retVal[1] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x1f;
+		retVal[0] = (unsigned char)(0xc0 | i);
+		retVal.setSize(2);
+	}
+	else if (uchar < 0x10000) {
+		i = uchar & 0x3f;
+		retVal[2] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x3f;
+		retVal[1] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x0f;
+		retVal[0] = (unsigned char)(0xe0 | i);
+		retVal.setSize(3);
+	}
+	else if (uchar < 0x200000) {
+		i = uchar & 0x3f;
+		retVal[3] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x3f;
+		retVal[2] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x3f;
+		retVal[1] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x07;
+		retVal[0] = (unsigned char)(0xf0 | i);
+		retVal.setSize(4);
+	}
+	else if (uchar < 0x4000000) {
+		i = uchar & 0x3f;
+		retVal[4] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x3f;
+		retVal[3] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x3f;
+		retVal[2] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x3f;
+		retVal[1] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x03;
+		retVal[0] = (unsigned char)(0xf8 | i);
+		retVal.setSize(5);
+	}
+	else if (uchar < 0x80000000) {
+		i = uchar & 0x3f;
+		retVal[5] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x3f;
+		retVal[4] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x3f;
+		retVal[3] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x3f;
+		retVal[2] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x3f;
+		retVal[1] = (unsigned char)(0x80 | i);
+		uchar >>= 6;
+
+		i = uchar & 0x01;
+		retVal[0] = (unsigned char)(0xfc | i);
+		retVal.setSize(6);
+	}
+
+	return retVal;
 }
 
 

Modified: trunk/sword.kdevprj
===================================================================
--- trunk/sword.kdevprj	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/sword.kdevprj	2013-09-15 00:05:26 UTC (rev 2981)
@@ -50,7 +50,7 @@
 type=HEADER
 
 [include/Makefile.am]
-files=include/canon.h,include/cipherfil.h,include/defs.h,include/echomod.h,include/entriesblk.h,include/femain.h,include/filemgr.h,include/gbffootnotes.h,include/gbfheadings.h,include/gbfhtml.h,include/swfilter.h,include/gbfhtmlhref.h,include/gbfmorph.h,include/gbfplain.h,include/gbfrtf.h,include/gbfstrongs.h,include/gbfthml.h,include/Greek2Greek.h,include/GreekChars.h,include/hrefcom.h,include/latin1utf16.h,include/latin1utf8.h,include/listkey.h,include/localemgr.h,include/lzsscomprs.h,include/plainfootnotes.h,include/plainhtml.h,include/rawcom.h,include/rawfiles.h,include/rawld.h,include/rawld4.h,include/rawstr.h,include/rawstr4.h,include/rawtext.h,include/rawverse.h,include/regex.h,include/roman.h,include/rtfhtml.h,include/rwphtml.h,include/rwprtf.h,include/sapphire.h,include/scsuutf8.h,include/strkey.h,include/swbasicfilter.h,include/swbyteswap.h,include/swcipher.h,include/swcom.h,include/swcomprs.h,include/swconfig.h,include/swdisp.h,include/swdisprtf.h,include/swdisprtfchap.h,include/swencodingmgr.h,include/swkey.h,include/swld.h,include/swlocale.h,include/swlog.h,include/swmacs.h,include/swmarkupmgr.h,include/swmgr.h,include/swmodule.h,include/swobject.h,include/swtext.h,include/swunicod.h,include/swwinlog.h,include/tbdisp.h,include/thmlgbf.h,include/thmlhtml.h,include/thmlhtmlhref.h,include/thmlplain.h,include/thmlrtf.h,include/unicodertf.h,include/unixstr.h,include/untgz.h,include/utf16utf8.h,include/utf8cantillation.h,include/utf8greekaccents.h,include/utf8arabicpoints.h,include/utf8hebrewpoints.h,include/utf8html.h,include/utf8latin1.h,include/utf8transliterator.h,include/utf8utf16.h,include/utilconf.h,include/utilfuns.h,include/utilstr.h,include/versekey.h,include/zcom.h,include/zconf.h,include/zipcomprs.h,include/zlib.h,include/ztext.h,include/zverse.h,include/thmlfootnotes.h,include/thmlheadings.h,include/thmllemma.h,include/thmlmorph.h,include/thmlscripref.h,include/thmlstrongs.h,include/utf8cnormalizer.h,include/utf8arshaping.h,include/utf8bidireorder.h,include/utf8nfc.h,include/utf8nfkd.h,include/encfiltmgr.h,include/swversion.h,include/swfiltermgr.h,include/markupfiltmgr.h,include/rawgenbook.h,include/swgenbook.h,include/treekey.h,include/thmlvariants.h,include/treekeyidx.h,include/zld.h,include/zstr.h,include/swinputmeth.h,include/nullim.h,include/hebrewmcim.h,include/flatapi.h,include/cdsourcemgr.h,include/ftpparse.h,include/gbfosis.h,include/gbfredletterwords.h,include/greeklexattribs.h,include/installmgr.h,include/osismorph.h,include/osisstrongs.h,include/remotesourcemgr.h,include/multimapwdef.h,include/swcacher.h,include/swinstallmgr.h,include/swremotemgr.h,include/swsourcemgr.h,include/sysdata.h,include/thmlosis.h,include/swbuf.h,include/osisplain.h,include/osisrtf.h
+files=include/canon.h,include/cipherfil.h,include/defs.h,include/echomod.h,include/entriesblk.h,include/femain.h,include/filemgr.h,include/gbffootnotes.h,include/gbfheadings.h,include/gbfhtml.h,include/swfilter.h,include/gbfhtmlhref.h,include/gbfmorph.h,include/gbfplain.h,include/gbfrtf.h,include/gbfstrongs.h,include/gbfthml.h,include/Greek2Greek.h,include/GreekChars.h,include/hrefcom.h,include/latin1utf16.h,include/latin1utf8.h,include/listkey.h,include/localemgr.h,include/lzsscomprs.h,include/plainfootnotes.h,include/plainhtml.h,include/rawcom.h,include/rawfiles.h,include/rawld.h,include/rawld4.h,include/rawstr.h,include/rawstr4.h,include/rawtext.h,include/rawverse.h,include/regex.h,include/roman.h,include/rtfhtml.h,include/rwphtml.h,include/rwprtf.h,include/sapphire.h,include/scsuutf8.h,include/strkey.h,include/swbasicfilter.h,include/swbyteswap.h,include/swcipher.h,include/swcom.h,include/swcomprs.h,include/swconfig.h,include/swdisp.h,include/swdisprtf.h,include/swdisprtfchap.h,include/swencodingmgr.h,include/swkey.h,include/swld.h,include/swlocale.h,include/swlog.h,include/swmacs.h,include/swmarkupmgr.h,include/swmgr.h,include/swmodule.h,include/swobject.h,include/swtext.h,include/swwinlog.h,include/tbdisp.h,include/thmlgbf.h,include/thmlhtml.h,include/thmlhtmlhref.h,include/thmlplain.h,include/thmlrtf.h,include/unicodertf.h,include/unixstr.h,include/untgz.h,include/utf16utf8.h,include/utf8cantillation.h,include/utf8greekaccents.h,include/utf8arabicpoints.h,include/utf8hebrewpoints.h,include/utf8html.h,include/utf8latin1.h,include/utf8transliterator.h,include/utf8utf16.h,include/utilconf.h,include/utilfuns.h,include/utilstr.h,include/versekey.h,include/zcom.h,include/zconf.h,include/zipcomprs.h,include/zlib.h,include/ztext.h,include/zverse.h,include/thmlfootnotes.h,include/thmlheadings.h,include/thmllemma.h,include/thmlmorph.h,include/thmlscripref.h,include/thmlstrongs.h,include/utf8cnormalizer.h,include/utf8arshaping.h,include/utf8bidireorder.h,include/utf8nfc.h,include/utf8nfkd.h,include/encfiltmgr.h,include/swversion.h,include/swfiltermgr.h,include/markupfiltmgr.h,include/rawgenbook.h,include/swgenbook.h,include/treekey.h,include/thmlvariants.h,include/treekeyidx.h,include/zld.h,include/zstr.h,include/swinputmeth.h,include/nullim.h,include/hebrewmcim.h,include/flatapi.h,include/cdsourcemgr.h,include/ftpparse.h,include/gbfosis.h,include/gbfredletterwords.h,include/greeklexattribs.h,include/installmgr.h,include/osismorph.h,include/osisstrongs.h,include/remotesourcemgr.h,include/multimapwdef.h,include/swcacher.h,include/swinstallmgr.h,include/swremotemgr.h,include/swsourcemgr.h,include/sysdata.h,include/thmlosis.h,include/swbuf.h,include/osisplain.h,include/osisrtf.h
 sub_dirs=
 type=normal
 
@@ -576,12 +576,6 @@
 install_location=
 type=HEADER
 
-[include/swunicod.h]
-dist=true
-install=false
-install_location=
-type=HEADER
-
 [include/swversion.h]
 dist=true
 install=false
@@ -1728,7 +1722,7 @@
 type=SOURCE
 
 [src/utilfuns/Makefile.am]
-files=src/utilfuns/Greek2Greek.cpp,src/utilfuns/regex.c,src/utilfuns/roman.c,src/utilfuns/sub.c,src/utilfuns/swunicod.cpp,src/utilfuns/unixstr.cpp,src/utilfuns/utilconf.cpp,src/utilfuns/utilstr.cpp,src/utilfuns/swversion.cpp,src/utilfuns/roman.cpp,src/utilfuns/ftpparse.c,src/utilfuns/swbuf.cpp,src/utilfuns/utilweb.cpp,src/utilfuns/utilxml.cpp
+files=src/utilfuns/Greek2Greek.cpp,src/utilfuns/regex.c,src/utilfuns/roman.c,src/utilfuns/sub.c,src/utilfuns/unixstr.cpp,src/utilfuns/utilconf.cpp,src/utilfuns/utilstr.cpp,src/utilfuns/swversion.cpp,src/utilfuns/roman.cpp,src/utilfuns/ftpparse.c,src/utilfuns/swbuf.cpp,src/utilfuns/utilweb.cpp,src/utilfuns/utilxml.cpp
 sharedlib_LDFLAGS=-version-info 0:0:1
 sharedlib_rootname=utilfuns
 sub_dirs=zlib
@@ -1770,12 +1764,6 @@
 install_location=
 type=SOURCE
 
-[src/utilfuns/swunicod.cpp]
-dist=true
-install=false
-install_location=
-type=SOURCE
-
 [src/utilfuns/swversion.cpp]
 dist=true
 install=false

Modified: trunk/utilities/kylixmake/libsword.bpr
===================================================================
--- trunk/utilities/kylixmake/libsword.bpr	2013-09-14 21:51:47 UTC (rev 2980)
+++ trunk/utilities/kylixmake/libsword.bpr	2013-09-15 00:05:26 UTC (rev 2981)
@@ -4,7 +4,7 @@
   <MACROS>
     <VERSION value="BCB.06.10"/>
     <PROJECT value="libsword.a"/>
-    <OBJFILES value="../../src/utilfuns/Greek2Greek.o ../../src/utilfuns/swunicod.o 
+    <OBJFILES value="../../src/utilfuns/Greek2Greek.o 
       ../../src/utilfuns/swversion.o ../../src/utilfuns/utilconf.o 
       ../../src/utilfuns/utilstr.o ../../src/keys/listkey.o 
       ../../src/keys/strkey.o ../../src/keys/swkey.o ../../src/keys/treekey.o 
@@ -109,7 +109,6 @@
   <FILELIST>
       <FILE FILENAME="libsword.bpf" FORMNAME="" UNITNAME="libsword" CONTAINERID="BPF" DESIGNCLASS="" LOCALCOMMAND=""/>
       <FILE FILENAME="../../src/utilfuns/Greek2Greek.cpp" FORMNAME="" UNITNAME="Greek2Greek.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
-      <FILE FILENAME="../../src/utilfuns/swunicod.cpp" FORMNAME="" UNITNAME="swunicod.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
       <FILE FILENAME="../../src/utilfuns/swversion.cpp" FORMNAME="" UNITNAME="swversion.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
       <FILE FILENAME="../../src/utilfuns/utilconf.cpp" FORMNAME="" UNITNAME="utilconf.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
       <FILE FILENAME="../../src/utilfuns/utilstr.cpp" FORMNAME="" UNITNAME="utilstr.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>




More information about the sword-cvs mailing list