summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-4.6/test/perf
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2010-12-03 09:05:05 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2010-12-03 09:05:05 +0000
commite04c6a878f5044d36eaa95d4c2318e0381a32998 (patch)
tree5b7c36578140e48c0114863004c8375ea55db21d /Build/source/libs/icu/icu-4.6/test/perf
parentfa438554bd1a061515cd8f5f46fbe311ff08dcd6 (diff)
icu 4.6
git-svn-id: svn://tug.org/texlive/trunk@20645 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/icu/icu-4.6/test/perf')
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.cpp193
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.h446
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.vcxproj117
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters39
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/Makefile.in82
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/ReadMe.txt22
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/breakdata.h17
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/collationdata.h268
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/datedata.h52
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/Makefile.in92
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/README61
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/charperf/CharPerf.pl55
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/charperf/CharPerf_r.pl59
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/charperf/Makefile.in79
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.cpp255
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.h239
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.vcxproj273
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.vcxproj.filters27
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/collationperf/CollPerf.pl277
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/collationperf/Makefile.in80
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/collationperf/collperf.cpp1755
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/collationperf/readme.html84
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/collperf/CollPerf.pl95
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/collperf/CollPerf_r.pl79
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/collperf/Makefile.in79
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.cpp880
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.vcxproj262
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.vcxproj.filters22
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/convperf/ConvPerf_r.pl68
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/convperf/Makefile.in79
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.cpp654
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.h568
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.vcxproj274
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.vcxproj.filters30
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/convperf/convperf_ansi.pl56
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/convperf/convperf_iml.pl62
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/convperf/data.h2731
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/normperf/Makefile.in79
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/normperf/NormPerf.pl59
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/normperf/NormPerf_r.pl88
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.cpp76
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.h231
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.vcproj462
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.cpp505
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.h353
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.vcxproj273
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.vcxproj.filters27
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/perf.sln139
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/perldriver/Common.pl38
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/perldriver/Dataset.pm139
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/perldriver/Format.pm166
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/perldriver/Output.pm389
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/perldriver/PerfFramework.pm391
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/Makefile.in79
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/StrSrchPerf_r.pl62
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.cpp148
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.h137
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.vcxproj273
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.vcxproj.filters27
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/Makefile.in79
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/ubrkperf/UBrkPerf.pl94
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/UBrkPerf_r.pl86
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.cpp251
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.dsp172
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.h137
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.vcxproj265
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.vcxproj.filters27
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf20.dsp172
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperfold.cpp771
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperfold.dsp168
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ucnvavailperf/ucnvavailperf.cpp129
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ucnvavailperf/ucnvavailperf.vcxproj97
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/unisetperf/Makefile.in78
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/bitset.cpp197
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/contperf.bat19
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/contperf.sh23
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span16perf.bat19
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span16perf.sh23
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span8perf.bat19
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span8perf.sh23
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/trieset.cpp111
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/unicont.h34
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.cpp441
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.pl86
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.vcxproj244
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/usetperf/Makefile.in79
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/usetperf/UsetPerf.pl56
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/usetperf/bitset.cpp63
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/usetperf/bitset.h38
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.cpp143
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.vcxproj278
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.vcxproj.filters33
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/Makefile.in79
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf.pl75
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf_r.pl79
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.cpp377
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.h549
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj273
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj.filters27
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/utfperf/Makefile.in79
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/utfperf/UtfPerf.pl59
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.cpp365
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.vcxproj243
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.vcxproj.filters22
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/Makefile.in79
-rwxr-xr-xBuild/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.bat19
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.cpp261
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.pl59
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.sh25
-rw-r--r--Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.vcxproj243
110 files changed, 22020 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.cpp
new file mode 100644
index 00000000000..afb98212443
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.cpp
@@ -0,0 +1,193 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2010,International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+
+#include "DateFmtPerf.h"
+#include "uoptions.h"
+#include <stdio.h>
+#include <fstream>
+
+#include <iostream>
+using namespace std;
+
+DateFormatPerfTest::DateFormatPerfTest(int32_t argc, const char* argv[], UErrorCode& status)
+: UPerfTest(argc,argv,status) {
+
+ if (locale == NULL){
+ locale = "en_US"; // set default locale
+ }
+}
+
+DateFormatPerfTest::~DateFormatPerfTest()
+{
+}
+
+UPerfFunction* DateFormatPerfTest::runIndexedTest(int32_t index, UBool exec,const char* &name, char* par) {
+
+ //exec = true;
+
+ switch (index) {
+ TESTCASE(0,DateFmt250);
+ TESTCASE(1,DateFmt10000);
+ TESTCASE(2,DateFmt100000);
+ TESTCASE(3,BreakItWord250);
+ TESTCASE(4,BreakItWord10000);
+ TESTCASE(5,BreakItChar250);
+ TESTCASE(6,BreakItChar10000);
+ TESTCASE(7,NumFmt10000);
+ TESTCASE(8,NumFmt100000);
+ TESTCASE(9,Collation10000);
+ TESTCASE(10,Collation100000);
+
+ default:
+ name = "";
+ return NULL;
+ }
+ return NULL;
+}
+
+
+UPerfFunction* DateFormatPerfTest::DateFmt250(){
+ DateFmtFunction* func= new DateFmtFunction(1, locale);
+ return func;
+}
+
+UPerfFunction* DateFormatPerfTest::DateFmt10000(){
+ DateFmtFunction* func= new DateFmtFunction(40, locale);
+ return func;
+}
+
+UPerfFunction* DateFormatPerfTest::DateFmt100000(){
+ DateFmtFunction* func= new DateFmtFunction(400, locale);
+ return func;
+}
+
+UPerfFunction* DateFormatPerfTest::BreakItWord250(){
+ BreakItFunction* func= new BreakItFunction(250, true);
+ return func;
+}
+
+UPerfFunction* DateFormatPerfTest::BreakItWord10000(){
+ BreakItFunction* func= new BreakItFunction(10000, true);
+ return func;
+}
+
+UPerfFunction* DateFormatPerfTest::BreakItChar250(){
+ BreakItFunction* func= new BreakItFunction(250, false);
+ return func;
+}
+
+UPerfFunction* DateFormatPerfTest::BreakItChar10000(){
+ BreakItFunction* func= new BreakItFunction(10000, false);
+ return func;
+}
+
+UPerfFunction* DateFormatPerfTest::NumFmt10000(){
+ NumFmtFunction* func= new NumFmtFunction(10000, locale);
+ return func;
+}
+
+UPerfFunction* DateFormatPerfTest::NumFmt100000(){
+ NumFmtFunction* func= new NumFmtFunction(100000, locale);
+ return func;
+}
+
+UPerfFunction* DateFormatPerfTest::Collation10000(){
+ CollationFunction* func= new CollationFunction(40, locale);
+ return func;
+}
+
+UPerfFunction* DateFormatPerfTest::Collation100000(){
+ CollationFunction* func= new CollationFunction(400, locale);
+ return func;
+}
+
+
+
+int main(int argc, const char* argv[]){
+
+ // -x Filename.xml
+ if((argc>1)&&(strcmp(argv[1],"-x") == 0))
+ {
+ if(argc < 3) {
+ fprintf(stderr, "Usage: %s -x <outfile>.xml\n", argv[0]);
+ return 1;
+ // not enough arguments
+ }
+
+ cout << "ICU version - " << U_ICU_VERSION << endl;
+ UErrorCode status = U_ZERO_ERROR;
+
+ // Declare functions
+ UPerfFunction *functions[5];
+ functions[0] = new DateFmtFunction(40, "en");
+ functions[1] = new BreakItFunction(10000, true); // breakIterator word
+ functions[2] = new BreakItFunction(10000, false); // breakIterator char
+ functions[3] = new NumFmtFunction(100000, "en");
+ functions[4] = new CollationFunction(400, "en");
+
+ // Perform time recording
+ double t[5];
+ for(int i = 0; i < 5; i++) t[i] = 0;
+
+ for(int i = 0; i < 10; i++)
+ for(int j = 0; j < 5; j++)
+ t[j] += (functions[j]->time(1, &status) / 10);
+
+
+ // Output results as .xml
+ ofstream out;
+ out.open(argv[2]);
+
+ out << "<perfTestResults icu=\"c\" version=\"" << U_ICU_VERSION << "\">" << endl;
+
+ for(int i = 0; i < 5; i++)
+ {
+ out << " <perfTestResult" << endl;
+ out << " test=\"";
+ switch(i)
+ {
+ case 0: out << "DateFormat"; break;
+ case 1: out << "BreakIterator Word"; break;
+ case 2: out << "BreakIterator Char"; break;
+ case 3: out << "NumbFormat"; break;
+ case 4: out << "Collation"; break;
+ }
+ out << "\"" << endl;
+ int iter = 10000;
+ if(i > 2) iter = 100000;
+ out << " iterations=\"" << iter << "\"" << endl;
+ out << " time=\"" << t[i] << "\" />" << endl;
+ }
+ out << "</perfTestResults>" << endl;
+ out.close();
+
+ return 0;
+ }
+
+
+ // Normal performance test mode
+ UErrorCode status = U_ZERO_ERROR;
+
+ DateFormatPerfTest test(argc, argv, status);
+
+
+ if(U_FAILURE(status)){ // ERROR HERE!!!
+ cout << "initialize failed! " << status << endl;
+ return status;
+ }
+ //cout << "Done initializing!\n" << endl;
+
+ if(test.run()==FALSE){
+ cout << "run failed!" << endl;
+ fprintf(stderr,"FAILED: Tests could not be run please check the arguments.\n");
+ return -1;
+ }
+ cout << "done!" << endl;
+
+ return 0;
+} \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.h b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.h
new file mode 100644
index 00000000000..8227749491a
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.h
@@ -0,0 +1,446 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2010,International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+
+#ifndef _DATEFMTPERF_H
+#define _DATEFMTPERF_H
+
+
+#include "unicode/stringpiece.h"
+#include "unicode/unistr.h"
+#include "unicode/uperf.h"
+
+#include "unicode/utypes.h"
+#include "unicode/datefmt.h"
+#include "unicode/calendar.h"
+#include "unicode/uclean.h"
+#include "unicode/brkiter.h"
+#include "unicode/numfmt.h"
+#include "unicode/coll.h"
+#include "util.h"
+
+#include "datedata.h"
+#include "breakdata.h"
+#include "collationdata.h"
+
+#include <stdlib.h>
+#include <fstream>
+#include <string>
+
+#include <iostream>
+using namespace std;
+
+// Stubs for Windows API functions when building on UNIXes.
+//
+#if defined(U_WINDOWS)
+// do nothing
+#else
+#define _UNICODE
+typedef int DWORD;
+inline int FoldStringW(DWORD dwMapFlags, const UChar* lpSrcStr,int cchSrc, UChar* lpDestStr,int cchDest);
+#endif
+
+class BreakItFunction : public UPerfFunction
+{
+private:
+ int num;
+ bool wordIteration;
+
+public:
+
+ BreakItFunction(){num = -1;}
+ BreakItFunction(int a, bool b){num = a; wordIteration = b;}
+
+ virtual void call(UErrorCode *status)
+ {
+ BreakIterator* boundary;
+
+ if(wordIteration)
+ {
+ for(int i = 0; i < num; i++)
+ {
+ boundary = BreakIterator::createWordInstance("en", *status);
+ boundary->setText(str);
+
+ int32_t start = boundary->first();
+ for (int32_t end = boundary->next();
+ end != BreakIterator::DONE;
+ start = end, end = boundary->next())
+ {
+ printTextRange( *boundary, start, end );
+ }
+ }
+ }
+
+ else // character iteration
+ {
+ for(int i = 0; i < num; i++)
+ {
+ boundary = BreakIterator::createCharacterInstance(Locale::getUS(), *status);
+ boundary->setText(str);
+
+ int32_t start = boundary->first();
+ for (int32_t end = boundary->next();
+ end != BreakIterator::DONE;
+ start = end, end = boundary->next())
+ {
+ printTextRange( *boundary, start, end );
+ }
+ }
+ }
+
+
+ }
+
+ virtual long getOperationsPerIteration()
+ {
+ if(wordIteration) return 125*num;
+ else return 355*num;
+ }
+
+ void printUnicodeString(const UnicodeString &s) {
+ char charBuf[1000];
+ s.extract(0, s.length(), charBuf, sizeof(charBuf)-1, 0);
+ charBuf[sizeof(charBuf)-1] = 0;
+ printf("%s", charBuf);
+ }
+
+
+ void printTextRange( BreakIterator& iterator,
+ int32_t start, int32_t end )
+ {
+ CharacterIterator *strIter = iterator.getText().clone();
+ UnicodeString s;
+ strIter->getText(s);
+ //printUnicodeString(UnicodeString(s, start, end-start));
+ //puts("");
+ delete strIter;
+ }
+
+ // Print the given string to stdout (for debugging purposes)
+ void uprintf(const UnicodeString &str) {
+ char *buf = 0;
+ int32_t len = str.length();
+ int32_t bufLen = len + 16;
+ int32_t actualLen;
+ buf = new char[bufLen + 1];
+ actualLen = str.extract(0, len, buf/*, bufLen*/); // Default codepage conversion
+ buf[actualLen] = 0;
+ printf("%s", buf);
+ delete[] buf;
+ }
+
+};
+
+class DateFmtFunction : public UPerfFunction
+{
+
+private:
+ int num;
+ char locale[25];
+public:
+
+ DateFmtFunction()
+ {
+ num = -1;
+ }
+
+ DateFmtFunction(int a, const char* loc)
+ {
+ num = a;
+ strcpy(locale, loc);
+ }
+
+ virtual void call(UErrorCode* status)
+ {
+
+ UErrorCode status2 = U_ZERO_ERROR;
+ Calendar *cal;
+ TimeZone *zone;
+ UnicodeString str;
+ UDate date;
+
+ cal = Calendar::createInstance(status2);
+ check(status2, "Calendar::createInstance");
+ zone = TimeZone::createTimeZone("GMT"); // Create a GMT zone
+ cal->adoptTimeZone(zone);
+
+ Locale loc(locale);
+ DateFormat *fmt;
+ fmt = DateFormat::createDateTimeInstance(
+ DateFormat::kShort, DateFormat::kFull, loc);
+
+
+ // (dates are imported from datedata.h)
+ for(int j = 0; j < num; j++)
+ for(int i = 0; i < NUM_DATES; i++)
+ {
+ cal->clear();
+ cal->set(years[i], months[i], days[i]);
+ date = cal->getTime(status2);
+ check(status2, "Calendar::getTime");
+
+ fmt->setCalendar(*cal);
+
+ // Format the date
+ str.remove();
+ fmt->format(date, str, status2);
+
+
+ // Display the formatted date string
+ //uprintf(str);
+ //printf("\n");
+
+ }
+
+ delete fmt;
+ delete cal;
+ //u_cleanup();
+ }
+
+ virtual long getOperationsPerIteration()
+ {
+ return NUM_DATES * num;
+ }
+
+ // Print the given string to stdout (for debugging purposes)
+ void uprintf(const UnicodeString &str) {
+ char *buf = 0;
+ int32_t len = str.length();
+ int32_t bufLen = len + 16;
+ int32_t actualLen;
+ buf = new char[bufLen + 1];
+ actualLen = str.extract(0, len, buf/*, bufLen*/); // Default codepage conversion
+ buf[actualLen] = 0;
+ printf("%s", buf);
+ delete[] buf;
+ }
+
+ // Verify that a UErrorCode is successful; exit(1) if not
+ void check(UErrorCode& status, const char* msg) {
+ if (U_FAILURE(status)) {
+ printf("ERROR: %s (%s)\n", u_errorName(status), msg);
+ exit(1);
+ }
+ }
+
+};
+
+class NumFmtFunction : public UPerfFunction
+{
+
+private:
+ int num;
+ char locale[25];
+public:
+
+ NumFmtFunction()
+ {
+ num = -1;
+ }
+
+ NumFmtFunction(int a, const char* loc)
+ {
+ num = a;
+ strcpy(locale, loc);
+ }
+
+ virtual void call(UErrorCode* status2)
+ {
+ Locale loc(locale);
+ UErrorCode status = U_ZERO_ERROR;
+
+ // Create a number formatter for the locale
+ NumberFormat *fmt = NumberFormat::createInstance(loc, status);
+
+ // Parse a string. The string uses the digits '0' through '9'
+ // and the decimal separator '.', standard in the US locale
+
+ for(int i = 0; i < num; i++)
+ {
+ UnicodeString str("9876543210.123");
+ Formattable result;
+ fmt->parse(str, result, status);
+
+ //uprintf(formattableToString(result));
+ //printf("\n");
+
+ // Take the number parsed above, and use the formatter to
+ // format it.
+ str.remove(); // format() will APPEND to this string
+ fmt->format(result, str, status);
+
+ //uprintf(str);
+ //printf("\n");
+ }
+
+ delete fmt; // Release the storage used by the formatter
+ }
+
+ enum {
+ U_SPACE=0x20,
+ U_DQUOTE=0x22,
+ U_COMMA=0x2c,
+ U_LEFT_SQUARE_BRACKET=0x5b,
+ U_BACKSLASH=0x5c,
+ U_RIGHT_SQUARE_BRACKET=0x5d,
+ U_SMALL_U=0x75
+ };
+
+ // Create a display string for a formattable
+ UnicodeString formattableToString(const Formattable& f) {
+ switch (f.getType()) {
+ case Formattable::kDate:
+ // TODO: Finish implementing this
+ return UNICODE_STRING_SIMPLE("Formattable_DATE_TBD");
+ case Formattable::kDouble:
+ {
+ char buf[256];
+ sprintf(buf, "%gD", f.getDouble());
+ return UnicodeString(buf, "");
+ }
+ case Formattable::kLong:
+ case Formattable::kInt64:
+ {
+ char buf[256];
+ sprintf(buf, "%ldL", f.getLong());
+ return UnicodeString(buf, "");
+ }
+ case Formattable::kString:
+ return UnicodeString((UChar)U_DQUOTE).append(f.getString()).append((UChar)U_DQUOTE);
+ case Formattable::kArray:
+ {
+ int32_t i, count;
+ const Formattable* array = f.getArray(count);
+ UnicodeString result((UChar)U_LEFT_SQUARE_BRACKET);
+ for (i=0; i<count; ++i) {
+ if (i > 0) {
+ (result += (UChar)U_COMMA) += (UChar)U_SPACE;
+ }
+ result += formattableToString(array[i]);
+ }
+ result += (UChar)U_RIGHT_SQUARE_BRACKET;
+ return result;
+ }
+ default:
+ return UNICODE_STRING_SIMPLE("INVALID_Formattable");
+ }
+ }
+
+ virtual long getOperationsPerIteration()
+ {
+ return num;
+ }
+
+ // Print the given string to stdout using the UTF-8 converter (for debugging purposes only)
+ void uprintf(const UnicodeString &str) {
+ char stackBuffer[100];
+ char *buf = 0;
+
+ int32_t bufLen = str.extract(0, 0x7fffffff, stackBuffer, sizeof(stackBuffer), "UTF-8");
+ if(bufLen < sizeof(stackBuffer)) {
+ buf = stackBuffer;
+ } else {
+ buf = new char[bufLen + 1];
+ bufLen = str.extract(0, 0x7fffffff, buf, bufLen + 1, "UTF-8");
+ }
+ printf("%s", buf);
+ if(buf != stackBuffer) {
+ delete[] buf;
+ }
+ }
+};
+
+class CollationFunction : public UPerfFunction
+{
+
+private:
+ int num;
+ char locale[25];
+ UnicodeString *collation_strings;
+
+ /**
+ * Unescape the strings
+ */
+ void init() {
+ uint32_t listSize = sizeof(collation_strings_escaped)/sizeof(collation_strings_escaped[0]);
+ collation_strings = new UnicodeString[listSize];
+ for(uint32_t k=0;k<listSize;k++) {
+ collation_strings[k] = collation_strings_escaped[k].unescape();
+ }
+ UnicodeString shorty((UChar32)0x12345);
+ }
+public:
+
+ CollationFunction()
+ {
+ num = -1;
+
+ init();
+ }
+
+ ~CollationFunction() {
+ delete [] collation_strings;
+ }
+
+ CollationFunction(int a, const char* loc)
+ {
+ num = a;
+ strcpy(locale, loc);
+ init();
+ }
+
+ virtual void call(UErrorCode* status2)
+ {
+ uint32_t listSize = sizeof(collation_strings_escaped)/sizeof(collation_strings_escaped[0]);
+ UErrorCode status = U_ZERO_ERROR;
+ Collator *coll = Collator::createInstance(Locale(locale), status);
+
+ for(int k = 0; k < num; k++)
+ {
+ uint32_t i, j;
+ for(i=listSize-1; i>=1; i--) {
+ for(j=0; j<i; j++) {
+ if(coll->compare(collation_strings[j], collation_strings[j+1]) == UCOL_LESS) {
+ //cout << "Success!" << endl;
+ }
+ }
+ }
+ }
+ delete coll;
+ }
+
+ virtual long getOperationsPerIteration()
+ {
+ return num;
+ }
+};
+
+class DateFormatPerfTest : public UPerfTest
+{
+private:
+
+public:
+
+ DateFormatPerfTest(int32_t argc, const char* argv[], UErrorCode& status);
+ ~DateFormatPerfTest();
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par);
+
+ UPerfFunction* DateFmt250();
+ UPerfFunction* DateFmt10000();
+ UPerfFunction* DateFmt100000();
+ UPerfFunction* BreakItWord250();
+ UPerfFunction* BreakItWord10000();
+ UPerfFunction* BreakItChar250();
+ UPerfFunction* BreakItChar10000();
+ UPerfFunction* NumFmt10000();
+ UPerfFunction* NumFmt100000();
+ UPerfFunction* Collation10000();
+ UPerfFunction* Collation100000();
+};
+
+#endif // DateFmtPerf
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.vcxproj
new file mode 100644
index 00000000000..fda711af78f
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.vcxproj
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B5E59422-0C52-4469-AB69-0C2AFD6E37A5}</ProjectGuid>
+ <RootNamespace>DateFmtPerf</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\x86\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\x86\$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\x86\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/datefmtperf.exe</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;icuucd.lib;icuind.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/datefmtperf.exe</OutputFile>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Release/DateFmtPerf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>
+ </OptimizeReferences>
+ <EnableCOMDATFolding>
+ </EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>
+ </LinkTimeCodeGeneration>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="DateFmtPerf.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="breakdata.h" />
+ <ClInclude Include="collationdata.h" />
+ <ClInclude Include="datedata.h" />
+ <ClInclude Include="DateFmtPerf.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="ReadMe.txt" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters
new file mode 100644
index 00000000000..ce94acfbf8b
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="DateFmtPerf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="breakdata.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="collationdata.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="datedata.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="DateFmtPerf.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="ReadMe.txt" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/Makefile.in
new file mode 100644
index 00000000000..eba8e388dcb
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/Makefile.in
@@ -0,0 +1,82 @@
+## Makefile.in for ICU - test/perf/ubrkperf
+## Copyright (c) 2001-2010, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/DateFmtPerf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = DateFmtPerf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_builddir)/i18n -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = DateFmtPerf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+xperf: $(TARGET)
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) ./$(TARGET) -x $(top_builddir)/perf-output.xml
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/ReadMe.txt b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/ReadMe.txt
new file mode 100644
index 00000000000..9f69351bf47
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/ReadMe.txt
@@ -0,0 +1,22 @@
+**********************************************************************
+* Copyright (c) 2002-2010,International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+
+
+The purpose of this performance test is to test the "real world" applications of ICU, such as Date Formatting and the Break Iterator. In both of these cases, the performance test function does all of the work, i.e. initializing, formatting, etc.
+
+There is no Perl script associated with this performance test, due to the fact that the performance test results in a different time if it is allowed to run more than once per execution of the executable. We are only interested in the first time returned by the executable in order to maintain accurate "real world" results. For this to happen, make sure to run the executable with the -i 1 and -p 1 options.
+
+There are 7 tests contained in this performance test:
+DateFmt250: Tests date formatting with 250 dates
+DateFmt10000: Tests date formatting with 10,000 dates
+DateFmt100000: Tests date formatting with 100,000 dates
+BreakItWord250: Tests word break iteration with 250 iterations.
+BreakItWord10000: Tests word break iteration with 10000 iterations.
+BreakItChar250: Tests character break iteration with 250 iterations.
+BreakItChar10000: Tests character break iteration with 10000 iterations.
+
+For example:
+datefmtperf.exe -i 1 -p 1 DateFmt250 \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/breakdata.h b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/breakdata.h
new file mode 100644
index 00000000000..5c21c0f12fe
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/breakdata.h
@@ -0,0 +1,17 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2010,International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+
+#include "unicode/unistr.h"
+
+
+UnicodeString str =
+"Please note neither this listing nor its contents are final til midnight of the last day of the month of any such announcement."
+"The official release date of all Project Gutenberg Etexts is at"
+"Midnight, Central Time, of the last day of the stated month. A"
+"preliminary version may often be posted for suggestion, comment"
+"and editing by those who wish to do so.";
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/collationdata.h b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/collationdata.h
new file mode 100644
index 00000000000..47c00fc80a2
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/collationdata.h
@@ -0,0 +1,268 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2010,International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+
+
+#include "unicode/ustring.h"
+
+/*
+ * Processed through '[^\u0000-\u007f] Any-Hex/C' and then \u -> \\\u
+ */
+
+UnicodeString collation_strings_escaped [] = {
+ "Brenet, Nicolas-Guy",
+ "Bresdin, Rodolphe",
+ "Breton, Andr\\u00E9",
+ "Breton, Jules",
+ "Brett, John",
+ "Breu the Elder, J\\u00F6rg",
+ "Breu the Younger, J\\u00F6rg",
+ "Brewster Jr., John",
+ "Brewster, Anna Richards",
+ "Brewtnall, Edward Frederick",
+ "Bricher, Alfred Thompson",
+ "Bridges, Fidelia",
+ "Bridges, John",
+ "Bridgewood, J.C.",
+ "Brigden, F.H.",
+ "Briggs, Henry Perronet",
+ "Bright, Henry",
+ "Bril, Paul",
+ "Brion, Gustave",
+ "Briosco, Benedetto",
+ "Briscoe, Arthur",
+ "Bristol, John Bunyan",
+ "Broc, Jean",
+ "Brock, Sir Thomas",
+ "Brockhurst, Gerald Leslie",
+ "Brodsky, Alexander",
+ "Broederlam, Melchior",
+ "Broer, Roger",
+ "Broggini, Luigi",
+ "Broghammer, Joseph",
+ "Brogi, Giacomo",
+ "Brompton, Richard",
+ "Bronzino, Agnolo",
+ "Brooke, William Henry",
+ "Brooker, Bertram",
+ "Brooking, Charles",
+ "Brooks, Cora Smalley",
+ "Brooks, Erica",
+ "Brooks, Henry Jamyn",
+ "Brooks, James",
+ "Brooks, Nicholas Alden",
+ "Brosamer, Hans",
+ "Brouet, Auguste",
+ "Brough, Robert",
+ "Brouwer, Adriaen",
+ "Brown, Bob",
+ "Brown, Christopher",
+ "Brown, Deborah",
+ "Brown, Douglas",
+ "Brown, Ford Madox",
+ "Brown, Frederick James",
+ "Brown, George Loring",
+ "Brown, J. Appleton",
+ "Brown, Joan",
+ "Brown, John George",
+ "Brown, John-Lewis",
+ "Brown, Lucy Madox",
+ "Brown, Mae Bennett",
+ "Brown, Mather",
+ "Brown, Mike",
+ "Brown, Roger",
+ "Brown, W.H.",
+ "Brown, William Mason",
+ "Browne, Archibald",
+ "Browne, Belmore",
+ "Browne, Byron",
+ "Browne, Hablot Knight",
+ "Browne, Henriette",
+ "Browne, Margaret Fitzhugh",
+ "Browne, Matilda",
+ "Browne, Syd",
+ "Brownell, Franklin",
+ "Browning, Colleen",
+ "Browning, Robert Barrett",
+ "Brownscombe, Jennie Augusta",
+ "Bruce, Patrick Henry",
+ "Bruce, William Blair",
+ "Bruch, Klaus von",
+ "Bruegel the Elder, Jan",
+ "Bruegel the Elder, Pieter",
+ "Condo, George",
+ "Cone, Marvin",
+ "Conegliano, Giambattista Cima da",
+ "Congdon, William",
+ "Coninxloo, Gillis van",
+ "Connah, John",
+ "Connard, Philip",
+ "Connell, Stephen",
+ "Connell, Sybil",
+ "Connelly, Brian",
+ "Conrad, Cyril H.",
+ "Conroy, Stephen",
+ "Consagra, Pietro",
+ "Constable, John",
+ "Constable, Lionel Bicknell",
+ "Constant, Benjamin",
+ "Constantin, Dimitro",
+ "Cook of Plymouth, William",
+ "Cook, Ethel",
+ "Cook, Gladys Emerson",
+ "Haddock, A.",
+ "Haden, Sir Francis Seymour",
+ "Haes, Carlos de",
+ "Hahn, Emanuel",
+ "Hahn, Gustav",
+ "Hahn, Herbert C.",
+ "Hahn, William",
+ "Haid, Johann Lorenz",
+ "Haile, Samuel",
+ "Hale, Edward Matthew",
+ "Hale, Ellen Day",
+ "Hale, Josephine",
+ "Hale, Lilian Westcott",
+ "Hale, Philip Leslie",
+ "Hall 1739-1797, John",
+ "Hall 1885, Douglas",
+ "Hall, Ann",
+ "Hall, Bernard",
+ "Hall, Cyrenius",
+ "Hall, Doug",
+ "Hall, George Henry",
+ "Hall, Harry",
+ "Hall, John",
+ "Hall, Pam",
+ "Hall\\u00E9, Edward Charles",
+ "Hallen, Ambrose",
+ "Halley, Peter",
+ "Halliday, Edward Irvine",
+ "Hals, Dirk",
+ "Hals, Frans",
+ "Halsman, Philippe",
+ "Halswelle, Keeley",
+ "Hamblin, Sturtevant J.",
+ "McMaster, Gerald",
+ "McMillan, Leo",
+ "McMillen, Michael",
+ "McNeil, George",
+ "McNicoll, Helen",
+ "McSheehy, Cornelia",
+ "McTaggart, William",
+ "McVeigh, Blanche",
+ "Mead, Mary",
+ "Mead, Ray",
+ "Meadows, Bernard",
+ "Meatyard, Ralph Eugene",
+ "Meckenem, Israhel van",
+ "Meegan, Tim",
+ "Mehoffer, J\\u00F3zef",
+ "Meidias Painter, The",
+ "Meidner, Ludwig",
+ "Meireles de Lima, V\\u00EDtor",
+ "Meissner, Leo J.",
+ "Meissonier, Jean-Louis-Ernest",
+ "Meistermann, Georg",
+ "Meit, Conrad",
+ "Melchers, Gari",
+ "Meldrum, Max",
+ "Meleager Painter, The",
+ "Mel\\u00E9ndez, Luis Egidio",
+ "Mellan, Claude",
+ "Mellery, Xavier",
+ "Melli, Roberto",
+ "Mellis, Margaret",
+ "Peale, Rembrandt",
+ "Peale, Rubens",
+ "Peale, Sarah Miriam",
+ "Peale, Titian",
+ "Pearce, Charles Sprague",
+ "Pearce, Edward",
+ "Pearce, Gary",
+ "Pearlstein, Philip",
+ "Pearson, Bruce",
+ "Pearson, Marguerite Stuber",
+ "Pearson, Mary Martha",
+ "Pechstein, Max",
+ "Pecht, August Friedrich",
+ "Peck, Augustus H.",
+ "Pedro de la Cuadra",
+ "Pedro de Mena",
+ "Peed, Michael",
+ "Peel, Paul",
+ "Peeters I, Bonaventura",
+ "Peeters, Clara",
+ "Pei, I.M.",
+ "Pelham, Peter",
+ "Pellan, Alfred",
+ "Pellegrin, Honor\\u00E9",
+ "Pellegrini, Domenico",
+ "Pellegrini, Giovanni Antonio",
+ "Pelouse, L\\u00E9on-Germain",
+ "Pels, Marsha",
+ "Pemberton, Sophie",
+ "Pe\\u00F1a, Tonita",
+ "Penck, A.R.",
+ "Pencz, Georg",
+ "P\\u00E8ne du Bois, Guy",
+ "Penn, Irving",
+ "Pennell, Joseph",
+ "Rosso, Mino",
+ "Roszak, Theodore",
+ "Rotari, Pietro",
+ "Rotella, Mimmo",
+ "Roth, Ernest David",
+ "Rothenberg, Susan",
+ "Rothenstein, Michael",
+ "Rothenstein, Sir William",
+ "Rothermel, Peter Frederick",
+ "Rothko, Mark",
+ "Rothschild, Gail",
+ "Rothstein, Arthur",
+ "Rottenhammer, Hans",
+ "Rouault, Georges",
+ "Roubiliac, Louis-Fran\\u00E7ois",
+ "Rouget, Georges",
+ "Rousseau, Henri",
+ "Rousseau, Th\\u00E9odore",
+ "Roussel, Ker Xavier",
+ "Roussel, Th\\u00E9odore",
+ "Rousselet, Gilles",
+ "Roux, Ange-Joseph Antoine",
+ "Roux, Fran\\u00E7ois Geoffroi",
+ "Roux, Fran\\u00E7ois Joseph Fr\\u00E9d\\u00E9ric",
+ "Roux, Joseph",
+ "Roux, Louis",
+ "Roux, Mathieu Antoine",
+ "Roux-Champion, Joseph Victor",
+ "Rowan, Patrick",
+ "Rowe, Sandra",
+ "Rowlandson, Thomas",
+ "Rowley, Reuben",
+ "Royen, Willem Frederik van",
+ "Rrap, Julie",
+ "Rubens, Pete Paul",
+ "Rubin, Reuven",
+ "Rublev, Andrei",
+ "Rude, Fran\\u00E7ois",
+ "Rude, Olaf",
+ "Ruelas, Julio",
+ "Ruff, Thomas",
+ "Schmidt, Katherine",
+ "Schmidt-Rottluff, Karl",
+ "Schmutzer, Ferdinand",
+ "Schnabel, Julian",
+ "Schneider, Bernhard",
+ "Schnorr von Carolsfeld, Julius",
+ "Scholder, Fritz",
+ "Scholderer, Otto",
+ "Schonfeld, Johann Heinrich",
+ "Schongauer, Martin",
+ "Schwieger, C. Robert"
+};
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/datedata.h b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/datedata.h
new file mode 100644
index 00000000000..ed3cdb63671
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/DateFmtPerf/datedata.h
@@ -0,0 +1,52 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2010,International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+
+int NUM_DATES = 250;
+
+static int days[] = {
+ 21, 6, 6, 14, 2, 11, 18, 15, 10, 2, 19, 26, 3, 10, 5, 21, 5, 13, 18, 19, 13, 1, 14, 7, 8,
+ 4, 1, 3, 27, 28, 9, 28, 16, 4, 26, 12, 17, 19, 9, 5, 17, 26, 12, 24, 6, 26, 8, 10, 6, 22,
+ 18, 8, 19, 14, 28, 6, 2, 17, 11, 3, 14, 3, 6, 19, 5, 4, 18, 18, 15, 10, 26, 13, 6, 13, 16,
+ 23, 1, 26, 25, 26, 27, 25, 16, 12, 21, 8, 5, 28, 21, 6, 17, 26, 2, 17, 24, 8, 15, 9, 4, 24,
+ 19, 1, 25, 23, 7, 3, 1, 19, 28, 11, 5, 1, 13, 25, 7, 25, 12, 13, 15, 11, 5, 21, 24, 12, 27,
+ 18, 23, 14, 8, 3, 8, 9, 22, 20, 10, 27, 11, 23, 10, 19, 9, 5, 28, 19, 6, 27, 28, 19, 12, 15,
+ 24, 2, 22, 23, 19, 16, 3, 18, 15, 9, 19, 23, 8, 6, 11, 14, 28, 10, 2, 13, 20, 4, 15, 24, 17,
+ 28, 20, 13, 9, 15, 24, 27, 28, 13, 20, 14, 22, 7, 15, 21, 15, 25, 12, 12, 6, 26, 14, 21, 20, 26,
+ 16, 5, 9, 22, 4, 20, 21, 20, 9, 26, 4, 1, 4, 10, 21, 12, 19, 21, 25, 20, 5, 7, 24, 15, 27,
+ 18, 5, 27, 9, 4, 18, 9, 25, 8, 20, 12, 16, 4, 8, 20, 26, 3, 24, 21, 5, 18, 13, 20, 15, 21
+};
+
+
+static int months[] = {
+ 0, 3, 8, 6, 5, 8, 7, 1, 8, 6, 0, 1, 5, 1, 9, 5, 4, 2, 3, 5, 5, 9, 11, 10, 1,
+ 1, 1, 11, 5, 6, 7, 8, 0, 10, 9, 10, 0, 0, 10, 11, 10, 9, 0, 4, 7, 4, 4, 1, 8, 1,
+ 7, 11, 2, 11, 0, 10, 11, 0, 8, 3, 1, 10, 2, 9, 0, 7, 8, 8, 0, 1, 11, 9, 5, 0, 1,
+ 6, 2, 10, 6, 11, 9, 2, 6, 3, 1, 4, 2, 9, 0, 8, 10, 4, 0, 2, 5, 2, 8, 3, 5, 2,
+ 0, 7, 10, 2, 5, 11, 2, 0, 7, 5, 7, 3, 2, 11, 9, 11, 4, 8, 3, 7, 0, 11, 5, 0, 0,
+ 6, 1, 3, 5, 2, 6, 10, 1, 2, 11, 11, 6, 6, 9, 6, 2, 3, 7, 6, 8, 0, 7, 8, 9, 7,
+ 9, 1, 4, 10, 1, 2, 7, 10, 10, 5, 6, 11, 6, 9, 7, 6, 10, 6, 1, 0, 6, 8, 3, 6, 10,
+ 4, 9, 10, 4, 7, 0, 6, 11, 10, 3, 4, 9, 1, 10, 10, 0, 3, 4, 3, 3, 11, 10, 4, 7, 11,
+ 9, 6, 2, 2, 5, 4, 9, 0, 8, 9, 5, 2, 3, 11, 0, 6, 9, 11, 6, 2, 5, 7, 8, 5, 5,
+ 6, 1, 4, 5, 11, 10, 8, 3, 11, 8, 4, 6, 8, 2, 10, 9, 5, 6, 6, 4, 0, 2, 2, 6, 0
+};
+
+
+static int years[] = {
+ 1857, 1824, 1626, 1794, 1782, 1842, 1721, 1657, 1899, 1866, 1827, 1840, 1982, 1681, 1683, 1698, 1795, 1896, 1690, 1961, 1628, 1821, 1790, 1863, 1812,
+ 1928, 1634, 1874, 1910, 1800, 1745, 1884, 1627, 1717, 1956, 1694, 1807, 1874, 1955, 1777, 1925, 1937, 1640, 1897, 1825, 1938, 1727, 1743, 1827, 1834,
+ 1626, 1641, 2004, 1884, 1984, 1768, 1864, 1622, 1845, 1645, 1876, 1723, 1877, 1720, 1641, 2008, 1850, 1727, 1742, 1957, 1902, 1624, 1692, 1931, 1962,
+ 1652, 1986, 1724, 1692, 1735, 1897, 1651, 1911, 1976, 1714, 1673, 1972, 1825, 1724, 1745, 1863, 1763, 1793, 1777, 1772, 1834, 1680, 1997, 1632, 1896,
+ 1829, 1874, 1645, 2001, 1892, 1995, 1725, 1939, 1973, 1651, 1951, 1711, 1946, 1961, 2006, 1896, 1660, 1769, 1903, 1735, 1938, 1628, 1899, 1977, 1635,
+ 1902, 1787, 1734, 1747, 1752, 1850, 1998, 1658, 1754, 1636, 1873, 1730, 1991, 1860, 1835, 1775, 1948, 1610, 1899, 1689, 1742, 1836, 1839, 1748, 1999,
+ 1779, 1982, 1809, 1965, 2007, 1633, 1885, 1991, 1685, 1983, 1831, 1933, 1804, 1827, 1903, 1859, 1767, 1916, 1978, 1697, 1732, 1713, 1618, 1770, 1651,
+ 1935, 1994, 1799, 1803, 1680, 1760, 1616, 1894, 1881, 1899, 1862, 1789, 1665, 1827, 1792, 1886, 1689, 1791, 1968, 1961, 1997, 1850, 1616, 1866, 1637,
+ 1951, 1695, 1617, 1976, 1924, 1634, 1726, 1678, 1843, 1689, 1751, 1759, 1794, 1631, 1996, 1774, 1828, 1629, 1953, 1756, 1673, 1964, 1898, 1802, 2000,
+ 1956, 1718, 1774, 1997, 1894, 1634, 1953, 1622, 1779, 1743, 1636, 1735, 1735, 1837, 1740, 1781, 1702, 1830, 1905, 1920, 1857, 1767, 1726, 1873, 1620
+};
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/Makefile.in
new file mode 100644
index 00000000000..69e4dba97f5
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/Makefile.in
@@ -0,0 +1,92 @@
+## Makefile.in for ICU tests
+## Copyright (c) 1999-2010, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf
+
+@ICUIO_TRUE@IOTEST = iotest
+
+## Files to remove for 'make clean'
+CLEANFILES = *~
+
+SUBDIRS = collationperf charperf normperf ubrkperf unisetperf usetperf ustrperf utfperf utrie2perf DateFmtPerf
+
+# Subdirs that support 'xperf'
+XSUBDIRS = DateFmtPerf
+
+## List of phony targets
+.PHONY : everything all all-local all-recursive install install-local \
+install-recursive clean clean-local clean-recursive distclean \
+distclean-local distclean-recursive dist dist-recursive dist-local \
+check check-recursive check-local xperf xperf-recursive
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+everything: all-recursive all-local
+all:
+ifneq ($(RECURSIVE),YES)
+ @echo simply use \`make\' \(or \`make everything\'\) to do all
+endif
+
+install: install-recursive install-local
+clean: clean-recursive clean-local
+distclean : distclean-recursive distclean-local
+ $(RMV) hdrtst/Makefile
+ $(RMV) perf/convperf/Makefile
+
+dist: dist-recursive dist-local
+check: everything check-recursive check-local
+check-recursive: all-recursive
+
+xperf: everything
+ list='$(XSUBDIRS)'; for xsubdir in $$list; do \
+ $(MAKE) -w -C $$xsubdir xperf; \
+ done
+
+## Recursive targets
+all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive:
+ @dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-local"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $$local_target) || exit; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) "$$target-local" || exit; \
+ fi
+
+all-local:
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/README b/Build/source/libs/icu/icu-4.6/test/perf/README
new file mode 100644
index 00000000000..03acaaed8c7
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/README
@@ -0,0 +1,61 @@
+Copyright (C) 2008, International Business Machines
+Corporation and others. All Rights Reserved.
+
+README for ICU4C Performance Test
+
+Introduction:
+The performance tests in ICU4C compares various aspects of ICU against previous versions of ICU,
+Posix, and/or Windows. Some tests only run on Windows and are labeled accordingly.All of the
+performance tests are driven by a perl-based script which calls the underlying C program and
+displays the statistical analysis of the test in an easy to read HTML web page. Each test will
+have its own web page.
+
+
+Requirements:
+The most up to date tests are in ICU 4.0 and later. In addition, most tests depend on data which are
+in a seperate repository.
+
+Data repository:
+http://source.icu-project.org/repos/icu/data/trunk/test/perf
+There are 3 folders in here: collation, conversion, and udr.
+
+
+Running Performance Test:
+
+1) You should create a directory to hold the ICU (current and previous versions) and the data.
+ (e.g. C:\ICUPerformanceTest)
+
+2) Checkout the current ICU and 2 previous versions (for proper regression testing) and the data
+ into the ICUPerformanceTest directory.
+
+3) Do a general build on all the ICUs either through Visual Studios or with the Makefile.
+
+4) Build the ICU performance tests either through Visual Studios or with the Makefile.
+ (The location of the performance test is: icu/source/test/perf)
+
+5) Go to perf/perldriver and edit Common.pl.
+ In this file, you will need to set a few variables:
+ a) ICU version numbers
+ b) Path to the performance test data
+ c) Path to the root directory of the different versions of ICU
+ d) Whether or not you are running the test on Windows
+ * The Path needs to be absolute
+ * All other variables should be left as is
+
+6) In the perf directory, there are several other directories for the various tests that can be run.
+ (e.g. convperf (Conversion tests)). Go to each directory and execute the perl script for each test
+ you want to run. (e.g. CharPerf_r.pl in CharPerf directory)
+ * You only need to run the perl script from the latest ICU version. The corresponding perl script
+ in the previous versions of ICU do not need to be run seperately.
+ * All of the test result web pages will be stored in perf/results.
+
+
+Note: When running on Windows, cygwin is preferred.
+Note: If a test needs to be run on Windows, a message will be displayed.
+Note: After building the performance tests, it is a good idea to execute each C program to ensure that each
+ test can run. (e.g. convperf.exe)
+Note: To run the actual performance test, you will need to setup Perl with the following modules:
+ a) Statistics/Distribution.pm
+ b) Statistics/Descriptive.pm
+Note: Some tests take a while depending on the machine it is running on so a script to run each performance test's
+ perl script might be helpful.
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/charperf/CharPerf.pl b/Build/source/libs/icu/icu-4.6/test/perf/charperf/CharPerf.pl
new file mode 100755
index 00000000000..cf03bc4bfa0
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/charperf/CharPerf.pl
@@ -0,0 +1,55 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"Character property performance: ICU".$ICULatestVersion." vs. STDLib",
+ "headers"=>"StdLib ICU".$ICULatestVersion,
+ "operationIs"=>"code point",
+ "timePerOperationIs"=>"Time per code point",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>"Not Using Data Files",
+ "outputDir"=>"../results"
+ };
+
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p;
+if ($OnWindows) {
+ $p = $ICUPathLatest."/charperf/$WindowsPlatform/Release/charperf.exe";
+} else {
+ $p = $ICUPathLatest."/charperf/charperf";
+}
+
+my $tests = {
+"isAlpha", ["$p TestStdLibIsAlpha" , "$p TestIsAlpha" ],
+"isUpper", ["$p TestStdLibIsUpper" , "$p TestIsUpper" ],
+"isLower", ["$p TestStdLibIsLower" , "$p TestIsLower" ],
+"isDigit", ["$p TestStdLibIsDigit" , "$p TestIsDigit" ],
+"isSpace", ["$p TestStdLibIsSpace" , "$p TestIsSpace" ],
+"isAlphaNumeric", ["$p TestStdLibIsAlphaNumeric" , "$p TestIsAlphaNumeric" ],
+"isPrint", ["$p TestStdLibIsPrint" , "$p TestIsPrint" ],
+"isControl", ["$p TestStdLibIsControl" , "$p TestIsControl" ],
+"toLower", ["$p TestStdLibToLower" , "$p TestToLower" ],
+"toUpper", ["$p TestStdLibToUpper" , "$p TestToUpper" ],
+"isWhiteSpace", ["$p TestStdLibIsWhiteSpace" , "$p TestIsWhiteSpace" ],
+};
+
+my $dataFiles;
+
+runTests($options, $tests, $dataFiles);
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/charperf/CharPerf_r.pl b/Build/source/libs/icu/icu-4.6/test/perf/charperf/CharPerf_r.pl
new file mode 100644
index 00000000000..ffd858ae659
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/charperf/CharPerf_r.pl
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines
+# * Corporation and others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"Character property performance regression: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"code point",
+ "timePerOperationIs"=>"Time per code point",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>"Not Using Data Files",
+ "outputDir"=>"../results"
+ };
+
+# programs
+
+my $p1; # Previous
+my $p2; # Latest
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious."/charperf/$WindowsPlatform/Release/charperf.exe";
+ $p2 = $ICUPathLatest."/charperf/$WindowsPlatform/Release/charperf.exe";
+} else {
+ $p1 = $ICUPathPrevious."/charperf/charperf";
+ $p2 = $ICUPathLatest."/charperf/charperf";
+}
+
+my $dataFiles = "";
+
+
+my $tests = {
+"isAlpha", ["$p1 TestIsAlpha" , "$p2 TestIsAlpha" ],
+"isUpper", ["$p1 TestIsUpper" , "$p2 TestIsUpper" ],
+"isLower", ["$p1 TestIsLower" , "$p2 TestIsLower" ],
+"isDigit", ["$p1 TestIsDigit" , "$p2 TestIsDigit" ],
+"isSpace", ["$p1 TestIsSpace" , "$p2 TestIsSpace" ],
+"isAlphaNumeric", ["$p1 TestIsAlphaNumeric" , "$p2 TestIsAlphaNumeric" ],
+"isPrint", ["$p1 TestIsPrint" , "$p2 TestIsPrint" ],
+"isControl", ["$p1 TestIsControl" , "$p2 TestIsControl" ],
+"toLower", ["$p1 TestToLower" , "$p2 TestToLower" ],
+"toUpper", ["$p1 TestToUpper" , "$p2 TestToUpper" ],
+"isWhiteSpace", ["$p1 TestIsWhiteSpace" , "$p2 TestIsWhiteSpace" ],
+};
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/charperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/charperf/Makefile.in
new file mode 100644
index 00000000000..610b90d84ca
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/charperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/charperf
+## Copyright (c) 2001-2006, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/charperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = charperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = charperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.cpp
new file mode 100644
index 00000000000..c964625bf2f
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.cpp
@@ -0,0 +1,255 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (C) 2002-2006 IBM, Inc. All Rights Reserved.
+ *
+ ********************************************************************/
+/*****************************************************************************
+* File charperf.cpp
+*
+* Modification History:
+* Name Description
+* Syn Wee Quek First Version
+******************************************************************************
+*/
+
+/**
+ * This program tests character properties performance.
+ * APIs tested:
+ * ICU4C
+ * Windows
+ */
+
+#include "charperf.h"
+#include "uoptions.h"
+
+UOption options[] = {
+ UOPTION_DEF("min", 'n', UOPT_REQUIRES_ARG),
+ UOPTION_DEF("min", 'x', UOPT_REQUIRES_ARG),
+};
+int MIN_OPTION_ = 0;
+int MAX_OPTION_ = 1;
+
+int main(int argc, const char *argv[])
+{
+ UErrorCode status = U_ZERO_ERROR;
+ CharPerformanceTest test(argc, argv, status);
+ if (U_FAILURE(status)){
+ return status;
+ }
+ if (test.run() == FALSE){
+ fprintf(stderr, "FAILED: Tests could not be run please check the "
+ "arguments.\n");
+ return -1;
+ }
+ return 0;
+}
+
+CharPerformanceTest::CharPerformanceTest(int32_t argc, const char *argv[],
+ UErrorCode &status)
+ : UPerfTest(argc, argv, status)
+{
+ if (status== U_ILLEGAL_ARGUMENT_ERROR){
+ fprintf(stderr,gUsageString, "charperf");
+ return;
+ }
+ if (U_FAILURE(status)){
+ fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n",
+ u_errorName(status));
+ return;
+ }
+
+ if (_remainingArgc < 0) {
+ // that means there are some -names not matched in the super class
+ // first tag is always skipped in u_parseArgs
+ int size = - _remainingArgc;
+ argv += argc - size;
+ argc = size;
+ _remainingArgc = u_parseArgs(argc, (char**)argv,
+ (int32_t)(sizeof(options)/sizeof(options[0])), options);
+ }
+ MIN_ = 0;
+ if (sizeof(wchar_t) > 2) {
+ // for stdlibs like glibc that supports 32 bits wchar
+ // we test for the whole unicode character set by default
+ MAX_ = 0x10ffff;
+ }
+ else {
+ MAX_ = 0xffff;
+ }
+ printf("MAX_ size will be 0x%x\n", MAX_);
+ if (options[MIN_OPTION_].doesOccur) {
+ MIN_ = atoi(options[MIN_OPTION_].value);
+ }
+ if (options[MAX_OPTION_].doesOccur) {
+ MAX_ = atoi(options[MAX_OPTION_].value);
+ }
+}
+
+CharPerformanceTest::~CharPerformanceTest()
+{
+}
+
+UPerfFunction* CharPerformanceTest::runIndexedTest(int32_t index, UBool exec,
+ const char *&name,
+ char* par)
+{
+ switch (index) {
+ TESTCASE(0, TestIsAlpha);
+ TESTCASE(1, TestIsUpper);
+ TESTCASE(2, TestIsLower);
+ TESTCASE(3, TestIsDigit);
+ TESTCASE(4, TestIsSpace);
+ TESTCASE(5, TestIsAlphaNumeric);
+ TESTCASE(6, TestIsPrint);
+ TESTCASE(7, TestIsControl);
+ TESTCASE(8, TestToLower);
+ TESTCASE(9, TestToUpper);
+ TESTCASE(10, TestIsWhiteSpace);
+ TESTCASE(11, TestStdLibIsAlpha);
+ TESTCASE(12, TestStdLibIsUpper);
+ TESTCASE(13, TestStdLibIsLower);
+ TESTCASE(14, TestStdLibIsDigit);
+ TESTCASE(15, TestStdLibIsSpace);
+ TESTCASE(16, TestStdLibIsAlphaNumeric);
+ TESTCASE(17, TestStdLibIsPrint);
+ TESTCASE(18, TestStdLibIsControl);
+ TESTCASE(19, TestStdLibToLower);
+ TESTCASE(20, TestStdLibToUpper);
+ TESTCASE(21, TestStdLibIsWhiteSpace);
+ default:
+ name = "";
+ return NULL;
+ }
+ return NULL;
+}
+
+UPerfFunction* CharPerformanceTest::TestIsAlpha()
+{
+ return new CharPerfFunction(isAlpha, MIN_, MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestIsUpper()
+{
+ return new CharPerfFunction(isUpper, MIN_, MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestIsLower()
+{
+ return new CharPerfFunction(isLower, MIN_, MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestIsDigit()
+{
+ return new CharPerfFunction(isDigit, MIN_, MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestIsSpace()
+{
+ return new CharPerfFunction(isSpace, MIN_, MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestIsAlphaNumeric()
+{
+ return new CharPerfFunction(isAlphaNumeric, MIN_, MAX_);
+}
+
+/**
+* This test may be different since c lib has a type PUNCT and it is printable.
+* iswgraph is not used for testing since it is a subset of iswprint with the
+* exception of returning true for white spaces. no match found in icu4c.
+*/
+UPerfFunction* CharPerformanceTest::TestIsPrint()
+{
+ return new CharPerfFunction(isPrint, MIN_, MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestIsControl()
+{
+ return new CharPerfFunction(isControl, MIN_, MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestToLower()
+{
+ return new CharPerfFunction(toLower, MIN_, MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestToUpper()
+{
+ return new CharPerfFunction(toUpper, MIN_, MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestIsWhiteSpace()
+{
+ return new CharPerfFunction(isWhiteSpace, MIN_, MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestStdLibIsAlpha()
+{
+ return new StdLibCharPerfFunction(StdLibIsAlpha, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestStdLibIsUpper()
+{
+ return new StdLibCharPerfFunction(StdLibIsUpper, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestStdLibIsLower()
+{
+ return new StdLibCharPerfFunction(StdLibIsLower, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestStdLibIsDigit()
+{
+ return new StdLibCharPerfFunction(StdLibIsDigit, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestStdLibIsSpace()
+{
+ return new StdLibCharPerfFunction(StdLibIsSpace, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestStdLibIsAlphaNumeric()
+{
+ return new StdLibCharPerfFunction(StdLibIsAlphaNumeric, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
+
+/**
+* This test may be different since c lib has a type PUNCT and it is printable.
+* iswgraph is not used for testing since it is a subset of iswprint with the
+* exception of returning true for white spaces. no match found in icu4c.
+*/
+UPerfFunction* CharPerformanceTest::TestStdLibIsPrint()
+{
+ return new StdLibCharPerfFunction(StdLibIsPrint, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestStdLibIsControl()
+{
+ return new StdLibCharPerfFunction(StdLibIsControl, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestStdLibToLower()
+{
+ return new StdLibCharPerfFunction(StdLibToLower, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestStdLibToUpper()
+{
+ return new StdLibCharPerfFunction(StdLibToUpper, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
+
+UPerfFunction* CharPerformanceTest::TestStdLibIsWhiteSpace()
+{
+ return new StdLibCharPerfFunction(StdLibIsWhiteSpace, (wchar_t)MIN_,
+ (wchar_t)MAX_);
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.h b/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.h
new file mode 100644
index 00000000000..e23785f84cb
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.h
@@ -0,0 +1,239 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2006, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+#ifndef _CHARPERF_H
+#define _CHARPERF_H
+
+#include "unicode/uchar.h"
+
+#include "unicode/uperf.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <wchar.h>
+#include <wctype.h>
+
+typedef void (*CharPerfFn)(UChar32 ch);
+typedef void (*StdLibCharPerfFn)(wchar_t ch);
+
+class CharPerfFunction : public UPerfFunction
+{
+public:
+ virtual void call(UErrorCode* status)
+ {
+ for (UChar32 i = MIN_; i < MAX_; i ++) {
+ (*m_fn_)(i);
+ }
+ }
+
+ virtual long getOperationsPerIteration()
+ {
+ return MAX_ - MIN_;
+ }
+ CharPerfFunction(CharPerfFn func, UChar32 min, UChar32 max)
+ {
+ m_fn_ = func;
+ MIN_ = min;
+ MAX_ = max;
+ }
+
+private:
+ CharPerfFn m_fn_;
+ UChar32 MIN_;
+ UChar32 MAX_;
+};
+
+class StdLibCharPerfFunction : public UPerfFunction
+{
+public:
+ virtual void call(UErrorCode* status)
+ {
+ // note wchar_t is unsigned, it will revert to 0 once it reaches
+ // 65535
+ for (wchar_t i = MIN_; i < MAX_; i ++) {
+ (*m_fn_)(i);
+ }
+ }
+
+ virtual long getOperationsPerIteration()
+ {
+ return MAX_ - MIN_;
+ }
+
+ StdLibCharPerfFunction(StdLibCharPerfFn func, wchar_t min, wchar_t max)
+ {
+ m_fn_ = func;
+ MIN_ = min;
+ MAX_ = max;
+ }
+
+ ~StdLibCharPerfFunction()
+ {
+ }
+
+private:
+ StdLibCharPerfFn m_fn_;
+ wchar_t MIN_;
+ wchar_t MAX_;
+};
+
+class CharPerformanceTest : public UPerfTest
+{
+public:
+ CharPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
+ ~CharPerformanceTest();
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
+ const char *&name,
+ char *par = NULL);
+ UPerfFunction* TestIsAlpha();
+ UPerfFunction* TestIsUpper();
+ UPerfFunction* TestIsLower();
+ UPerfFunction* TestIsDigit();
+ UPerfFunction* TestIsSpace();
+ UPerfFunction* TestIsAlphaNumeric();
+ UPerfFunction* TestIsPrint();
+ UPerfFunction* TestIsControl();
+ UPerfFunction* TestToLower();
+ UPerfFunction* TestToUpper();
+ UPerfFunction* TestIsWhiteSpace();
+ UPerfFunction* TestStdLibIsAlpha();
+ UPerfFunction* TestStdLibIsUpper();
+ UPerfFunction* TestStdLibIsLower();
+ UPerfFunction* TestStdLibIsDigit();
+ UPerfFunction* TestStdLibIsSpace();
+ UPerfFunction* TestStdLibIsAlphaNumeric();
+ UPerfFunction* TestStdLibIsPrint();
+ UPerfFunction* TestStdLibIsControl();
+ UPerfFunction* TestStdLibToLower();
+ UPerfFunction* TestStdLibToUpper();
+ UPerfFunction* TestStdLibIsWhiteSpace();
+
+private:
+ UChar32 MIN_;
+ UChar32 MAX_;
+};
+
+inline void isAlpha(UChar32 ch)
+{
+ u_isalpha(ch);
+}
+
+inline void isUpper(UChar32 ch)
+{
+ u_isupper(ch);
+}
+
+inline void isLower(UChar32 ch)
+{
+ u_islower(ch);
+}
+
+inline void isDigit(UChar32 ch)
+{
+ u_isdigit(ch);
+}
+
+inline void isSpace(UChar32 ch)
+{
+ u_isspace(ch);
+}
+
+inline void isAlphaNumeric(UChar32 ch)
+{
+ u_isalnum(ch);
+}
+
+/**
+* This test may be different since c lib has a type PUNCT and it is printable.
+* iswgraph is not used for testing since it is a subset of iswprint with the
+* exception of returning true for white spaces. no match found in icu4c.
+*/
+inline void isPrint(UChar32 ch)
+{
+ u_isprint(ch);
+}
+
+inline void isControl(UChar32 ch)
+{
+ u_iscntrl(ch);
+}
+
+inline void toLower(UChar32 ch)
+{
+ u_tolower(ch);
+}
+
+inline void toUpper(UChar32 ch)
+{
+ u_toupper(ch);
+}
+
+inline void isWhiteSpace(UChar32 ch)
+{
+ u_isWhitespace(ch);
+}
+
+inline void StdLibIsAlpha(wchar_t ch)
+{
+ iswalpha(ch);
+}
+
+inline void StdLibIsUpper(wchar_t ch)
+{
+ iswupper(ch);
+}
+
+inline void StdLibIsLower(wchar_t ch)
+{
+ iswlower(ch);
+}
+
+inline void StdLibIsDigit(wchar_t ch)
+{
+ iswdigit(ch);
+}
+
+inline void StdLibIsSpace(wchar_t ch)
+{
+ iswspace(ch);
+}
+
+inline void StdLibIsAlphaNumeric(wchar_t ch)
+{
+ iswalnum(ch);
+}
+
+/**
+* This test may be different since c lib has a type PUNCT and it is printable.
+* iswgraph is not used for testing since it is a subset of iswprint with the
+* exception of returning true for white spaces. no match found in icu4c.
+*/
+inline void StdLibIsPrint(wchar_t ch)
+{
+ iswprint(ch);
+}
+
+inline void StdLibIsControl(wchar_t ch)
+{
+ iswcntrl(ch);
+}
+
+inline void StdLibToLower(wchar_t ch)
+{
+ towlower(ch);
+}
+
+inline void StdLibToUpper(wchar_t ch)
+{
+ towupper(ch);
+}
+
+inline void StdLibIsWhiteSpace(wchar_t ch)
+{
+ iswspace(ch);
+}
+
+#endif // CHARPERF_H
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.vcxproj
new file mode 100644
index 00000000000..f4eef04b56f
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.vcxproj
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{D850A4B6-7D94-476E-9392-E9272DA4EAAF}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/charperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/charperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/charperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/charperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/charperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/charperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/charperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/charperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/charperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Release/charperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/charperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/charperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/charperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Release/charperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/charperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/charperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="charperf.cpp">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="charperf.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.vcxproj.filters
new file mode 100644
index 00000000000..705ed32d024
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/charperf/charperf.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{b82f6943-b485-4b2d-a293-1e30ba8961f6}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{d73a4809-c5fd-404d-92ee-5651d0a42677}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{e74182e3-d020-4c5f-9ccd-6a7e1338a196}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="charperf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="charperf.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/collationperf/CollPerf.pl b/Build/source/libs/icu/icu-4.6/test/perf/collationperf/CollPerf.pl
new file mode 100644
index 00000000000..c88e86d9564
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/collationperf/CollPerf.pl
@@ -0,0 +1,277 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+my $p;
+if ($OnWindows) {
+ $p = $ICUPathLatest . "/collationperf/$WindowsPlatform/Release/collationperf.exe";
+}
+else {
+ $p = $ICUPathLatest . "/collationperf/collperf";
+}
+
+my @locale = (
+ "en_US",
+ "da_DK",
+ "de_DE",
+ "fr_FR",
+ "ja_JP",
+ "ja_JP",
+ "ja_JP",
+ "ja_JP",
+ "zh_CN",
+ "zh_CN",
+ "zh_CN",
+ "zh_TW",
+ "zh_TW",
+ "ko_KR",
+ "ko_KR",
+ "ru_RU",
+ "ru_RU",
+ "th_TH",
+ "th_TH"
+);
+
+my $filePath = $CollationDataPath . "/";
+my $filePrefix = "TestNames_";
+my @data = (
+ $filePrefix."Latin.txt",
+ $filePrefix."Latin.txt",
+ $filePrefix."Latin.txt",
+ $filePrefix."Latin.txt",
+ $filePrefix."Latin.txt",
+ $filePrefix."Japanese_h.txt",
+ $filePrefix."Japanese_k.txt",
+ $filePrefix."Asian.txt",
+ $filePrefix."Latin.txt",
+ $filePrefix."Chinese.txt",
+ $filePrefix."Simplified_Chinese.txt",
+ $filePrefix."Latin.txt",
+ $filePrefix."Chinese.txt",
+ $filePrefix."Latin.txt",
+ $filePrefix."Korean.txt",
+ $filePrefix."Latin.txt",
+ $filePrefix."Russian.txt",
+ $filePrefix."Latin.txt",
+ $filePrefix."Thai.txt"
+);
+
+my @resultPER;
+my @resultFIN;
+
+for ( $n = 0 ; $n < @data ; $n++ ) {
+ my $resultICU;
+ my $resultNIX;
+ $resultICU = @locale[$n].",".@data[$n].",";
+ $resultNIX = @locale[$n].",".@data[$n].",";
+ @resultFIN[$n] = @locale[$n].",".@data[$n].",";
+
+ #quicksort
+ my @icu = `$p -locale @locale[$n] -loop 1000 -file $filePath@data[$n] -qsort`;
+ my @nix = `$p -locale @locale[$n] -unix -loop 1000 -file $filePath@data[$n] -qsort`;
+
+ my @icua = split( ' = ', $icu[2] );
+ my @icub = split( ' ', $icua[1] );
+ my @nixa = split( ' = ', $nix[2] );
+ my @nixb = split( ' ', $nixa[1] );
+
+ $resultICU = $resultICU.$icub[0].",";
+ $resultNIX = $resultNIX.$nixb[0].",";
+
+ #keygen time
+ @icu = `$p -locale @locale[$n] -loop 1000 -file $filePath@data[$n] -keygen`;
+ @nix = `$p -locale @locale[$n] -unix -loop 1000 -file $filePath@data[$n] -keygen`;
+
+ @icua = split( ' = ', $icu[2] );
+ @icub = split( ' ', $icua[1] );
+ @nixa = split( ' = ', $nix[2] );
+ @nixb = split( ' ', $nixa[1] );
+
+ $resultICU = $resultICU.$icub[0].",";
+ $resultNIX = $resultNIX.$nixb[0].",";
+
+ #keygen len
+ @icua = split( ' = ', $icu[3] );
+ @nixa = split( ' = ', $nix[3] );
+
+ chomp( @icua[1] );
+ chomp( @nixa[1] );
+
+ $resultICU = $resultICU.$icua[1].",";
+ $resultNIX = $resultNIX.$nixa[1].",";
+
+ my @resultSplitICU;
+ my @resultSplitNIX;
+
+ #percent
+ for ( $i = 0 ; $i < 3 ; $i++ ) {
+ my $percent = 0;
+ @resultSplitICU = split( ',', $resultICU );
+ @resultSplitNIX = split( ',', $resultNIX );
+ if ( @resultSplitICU[ 2 + $i ] > 0 ) {
+ $percent = substr((((
+ @resultSplitNIX[ 2 + $i ] - @resultSplitICU[ 2 + $i ]) / @resultSplitICU[ 2 + $i ]) * 100),
+ 0, 7);
+ }
+ @resultPER[$n] = @resultPER[$n].$percent."%,";
+ }
+
+ #store ICU result
+ for ( $j = 0 ; $j < 3 ; $j++ ) {
+ @resultFIN[$n] = @resultFIN[$n].@resultSplitICU[ 2 + $j ].",";
+ }
+
+ #store Unix result
+ for ( $j = 0 ; $j < 3 ; $j++ ) {
+ @resultFIN[$n] = @resultFIN[$n].@resultSplitNIX[ 2 + $j ].",";
+ }
+
+ #store Percent result
+ @resultFIN[$n] = @resultFIN[$n].@resultPER[$n];
+}
+
+# Print the results in a HTML page
+printOutput();
+
+exit(0);
+
+# This subroutine creates the web page and prints out the results in a table
+sub printOutput {
+ my $title = "Collation: ICU " . $ICULatestVersion . " vs GLIBC";
+ my $html = localtime;
+ $html =~ s/://g; # ':' illegal
+ $html =~ s/\s*\d+$//; # delete year
+ $html =~ s/^\w+\s*//; # delete dow
+ $html = "CollationPerformance $html.html";
+ $html = "../results/" . $html;
+ $html =~ s/ /_/g;
+ open( HTML, ">$html" ) or die "Can't write to $html: $!";
+ print HTML <<EOF;
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Collation: ICU4C vs. glibc</title>
+<link rel="stylesheet" href="../icu.css" type="text/css" />
+</head>
+<body>
+<!--#include virtual="../ssi/header.html" -->
+EOF
+
+ print HTML "<h2>Collation: ICU4C ".$ICULatestVersion." vs. GLIBC</h2>\n";
+
+ print HTML <<EOF;
+<p>The performance test takes a locale and creates a RuleBasedCollator with
+default options. A large list of names is used as data in each test, where the
+names vary according to language. Each Collation operation over the whole list
+is repeated 1000 times. The percentage values in the final column are the most
+useful. They measure differences, where positive is better for ICU4C, and
+negative is better for the compared implementation.</p>
+<h3>Key</h3>
+<table border="1" cellspacing="0" cellpadding="4">
+<tr>
+<th align="left">Operation</th>
+<th align="left">Units</th>
+<th align="left">Description</th>
+</tr>
+<tr>
+<td>strcoll</td>
+<td>nanosecs</td>
+<td>Timing for string collation, an incremental compare of strings.</td>
+</tr>
+<tr>
+<td>keygen</td>
+<td>nanosecs</td>
+<td>Timing for generation of sort keys, used to 'precompile' information so
+that subsequent operations can use binary comparison.</td>
+</tr>
+<tr>
+<td>keylen</td>
+<td>bytes/char</td>
+<td>The average length of the generated sort keys, in bytes per character
+(Unicode/ISO 10646 code point). Generally this is the important field for sort
+key performance, since it directly impacts the time necessary for binary
+comparison, and the overhead of memory usage and retrieval time for sort
+keys.</td>
+</tr>
+</table>
+EOF
+ printData();
+
+ print HTML <<EOF;
+<h3><i>Notes</i></h3>
+<ol>
+<li>As with all performance measurements, the results will vary according to
+the hardware and compiler. The strcoll operation is particularly sensitive; we
+have found that even slight changes in code alignment can produce 10%
+differences.</li>
+<li>For more information on incremental vs. sort key comparison, the importance
+of multi-level sorting, and other features of collation, see <a href=
+"http://www.unicode.org/reports/tr10/">Unicode Collation (UCA)</a>.</li>
+<li>For general information on ICU collation see <a href=
+"/userguide/Collate_Intro.html">User Guide</a>.</li>
+<li>For information on APIs, see <a href="/apiref/icu4c/ucol_8h.html">C</a>,
+<a href="/apiref/icu4c/classCollator.html">C++</a>, or <a href=
+"/apiref/icu4j/com/ibm/icu/text/Collator.html">Java</a>.</li>
+</ol>
+<!--#include virtual="../ssi/footer.html" -->
+</body>
+</html>
+
+EOF
+
+ close(HTML) or die "Can't close $html: $!";
+}
+
+# This subroutine formats and prints the table.
+sub printData() {
+ print HTML <<EOF;
+<h3>Data</h3>
+<table border="1" cellspacing="0" cellpadding="4">
+<tr>
+<td align="left"><b>Locale</b></td>
+<td align="left"><b>Data file</b></td>
+<td align="left"><b>strcoll</b> <i>(ICU)</i></td>
+<td align="left"><b>keygen</b> <i>(ICU)</i></td>
+<td align="left"><b>keylen</b> <i>(ICU)</i></td>
+<td align="left"><b>strcoll</b> <i>(GLIBC)</i></td>
+<td align="left"><b>keygen</b> <i>(GLIBC)</i></td>
+<td align="left"><b>keylen</b> <i>(GLIBC)</i></td>
+<td align="left"><b>strcoll</b> <i>(GLIBC-ICU)/ICU)</i></td>
+<td align="left"><b>keygen</b> <i>(GLIBC-ICU)/ICU)</i></td>
+<td align="left"><b>keylen</b> <i>(GLIBC-ICU)/ICU)</i></td>
+</tr>
+EOF
+
+ for ( $n = 0 ; $n < @resultFIN ; $n++ ) {
+ print HTML "<tr>";
+ my @parsed = split( ',', @resultFIN[$n] );
+ for ( $i = 0 ; $i < @parsed ; $i++ ) {
+ my $value = @parsed[$i];
+ print HTML "<td align=\"center\">";
+
+ if ( $value =~ m/^[-]/ ) {
+ print HTML "<font color=\"red\">$value</font>";
+ }
+ else {
+ print HTML "$value";
+ }
+
+ print HTML "</td>";
+
+ }
+ print HTML "</tr>\n";
+ }
+
+ print HTML<<EOF;
+</table>
+EOF
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/collationperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/collationperf/Makefile.in
new file mode 100644
index 00000000000..a59327124ac
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/collationperf/Makefile.in
@@ -0,0 +1,80 @@
+## Makefile.in for ICU - test/perf/collationperf
+## Copyright (c) 2001-2009, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/collationperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = collperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = collperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+ $(INVOKE) ./$(TARGET) -loop 200 -file $(top_srcdir)/extra/uconv/samples/utf8/utf-8-demo.txt -keygen -shifted
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/collationperf/collperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/collationperf/collperf.cpp
new file mode 100644
index 00000000000..c9dd6c48e68
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/collationperf/collperf.cpp
@@ -0,0 +1,1755 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (C) 2001-2010 IBM, Inc. All Rights Reserved.
+ *
+ ********************************************************************/
+/********************************************************************************
+*
+* File CALLCOLL.C
+*
+* Modification History:
+* Name Description
+* Andy Heninger First Version
+*
+*********************************************************************************
+*/
+
+//
+// This program tests string collation and sort key generation performance.
+// Three APIs can be teste: ICU C , Unix strcoll, strxfrm and Windows LCMapString
+// A file of names is required as input, one per line. It must be in utf-8 or utf-16 format,
+// and include a byte order mark. Either LE or BE format is OK.
+//
+
+const char gUsageString[] =
+ "usage: collperf options...\n"
+ "-help Display this message.\n"
+ "-file file_name utf-16 format file of names.\n"
+ "-locale name ICU locale to use. Default is en_US\n"
+ "-rules file_name Collation rules file (overrides locale)\n"
+ "-langid 0x1234 Windows Language ID number. Default to value for -locale option\n"
+ " see http://msdn.microsoft.com/library/psdk/winbase/nls_8xo3.htm\n"
+ "-win Run test using Windows native services. (ICU is default)\n"
+ "-unix Run test using Unix strxfrm, strcoll services.\n"
+ "-uselen Use API with string lengths. Default is null-terminated strings\n"
+ "-usekeys Run tests using sortkeys rather than strcoll\n"
+ "-strcmp Run tests using u_strcmp rather than strcoll\n"
+ "-strcmpCPO Run tests using u_strcmpCodePointOrder rather than strcoll\n"
+ "-loop nnnn Loopcount for test. Adjust for reasonable total running time.\n"
+ "-iloop n Inner Loop Count. Default = 1. Number of calls to function\n"
+ " under test at each call point. For measuring test overhead.\n"
+ "-terse Terse numbers-only output. Intended for use by scripts.\n"
+ "-french French accent ordering\n"
+ "-frenchoff No French accent ordering (for use with French locales.)\n"
+ "-norm Normalizing mode on\n"
+ "-shifted Shifted mode\n"
+ "-lower Lower case first\n"
+ "-upper Upper case first\n"
+ "-case Enable separate case level\n"
+ "-level n Sort level, 1 to 5, for Primary, Secndary, Tertiary, Quaternary, Identical\n"
+ "-keyhist Produce a table sort key size vs. string length\n"
+ "-binsearch Binary Search timing test\n"
+ "-keygen Sort Key Generation timing test\n"
+ "-qsort Quicksort timing test\n"
+ "-iter Iteration Performance Test\n"
+ "-dump Display strings, sort keys and CEs.\n"
+ ;
+
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include <locale.h>
+#include <errno.h>
+
+#include <unicode/utypes.h>
+#include <unicode/ucol.h>
+#include <unicode/ucoleitr.h>
+#include <unicode/uloc.h>
+#include <unicode/ustring.h>
+#include <unicode/ures.h>
+#include <unicode/uchar.h>
+#include <unicode/ucnv.h>
+#include <unicode/utf8.h>
+
+#ifdef WIN32
+#include <windows.h>
+#else
+//
+// Stubs for Windows API functions when building on UNIXes.
+//
+typedef int DWORD;
+inline int CompareStringW(DWORD, DWORD, UChar *, int, UChar *, int) {return 0;}
+#include <sys/time.h>
+unsigned long timeGetTime() {
+ struct timeval t;
+ gettimeofday(&t, 0);
+ unsigned long val = t.tv_sec * 1000; // Let it overflow. Who cares.
+ val += t.tv_usec / 1000;
+ return val;
+}
+inline int LCMapStringW(DWORD, DWORD, UChar *, int, UChar *, int) {return 0;}
+const int LCMAP_SORTKEY = 0;
+#define MAKELCID(a,b) 0
+const int SORT_DEFAULT = 0;
+#endif
+
+
+
+//
+// Command line option variables
+// These global variables are set according to the options specified
+// on the command line by the user.
+char * opt_fName = 0;
+const char * opt_locale = "en_US";
+int opt_langid = 0; // Defaults to value corresponding to opt_locale.
+char * opt_rules = 0;
+UBool opt_help = FALSE;
+int opt_loopCount = 1;
+int opt_iLoopCount = 1;
+UBool opt_terse = FALSE;
+UBool opt_qsort = FALSE;
+UBool opt_binsearch = FALSE;
+UBool opt_icu = TRUE;
+UBool opt_win = FALSE; // Run with Windows native functions.
+UBool opt_unix = FALSE; // Run with UNIX strcoll, strxfrm functions.
+UBool opt_uselen = FALSE;
+UBool opt_usekeys = FALSE;
+UBool opt_strcmp = FALSE;
+UBool opt_strcmpCPO = FALSE;
+UBool opt_norm = FALSE;
+UBool opt_keygen = FALSE;
+UBool opt_french = FALSE;
+UBool opt_frenchoff = FALSE;
+UBool opt_shifted = FALSE;
+UBool opt_lower = FALSE;
+UBool opt_upper = FALSE;
+UBool opt_case = FALSE;
+int opt_level = 0;
+UBool opt_keyhist = FALSE;
+UBool opt_itertest = FALSE;
+UBool opt_dump = FALSE;
+
+
+
+//
+// Definitions for the command line options
+//
+struct OptSpec {
+ const char *name;
+ enum {FLAG, NUM, STRING} type;
+ void *pVar;
+};
+
+OptSpec opts[] = {
+ {"-file", OptSpec::STRING, &opt_fName},
+ {"-locale", OptSpec::STRING, &opt_locale},
+ {"-langid", OptSpec::NUM, &opt_langid},
+ {"-rules", OptSpec::STRING, &opt_rules},
+ {"-qsort", OptSpec::FLAG, &opt_qsort},
+ {"-binsearch", OptSpec::FLAG, &opt_binsearch},
+ {"-iter", OptSpec::FLAG, &opt_itertest},
+ {"-win", OptSpec::FLAG, &opt_win},
+ {"-unix", OptSpec::FLAG, &opt_unix},
+ {"-uselen", OptSpec::FLAG, &opt_uselen},
+ {"-usekeys", OptSpec::FLAG, &opt_usekeys},
+ {"-strcmp", OptSpec::FLAG, &opt_strcmp},
+ {"-strcmpCPO", OptSpec::FLAG, &opt_strcmpCPO},
+ {"-norm", OptSpec::FLAG, &opt_norm},
+ {"-french", OptSpec::FLAG, &opt_french},
+ {"-frenchoff", OptSpec::FLAG, &opt_frenchoff},
+ {"-shifted", OptSpec::FLAG, &opt_shifted},
+ {"-lower", OptSpec::FLAG, &opt_lower},
+ {"-upper", OptSpec::FLAG, &opt_upper},
+ {"-case", OptSpec::FLAG, &opt_case},
+ {"-level", OptSpec::NUM, &opt_level},
+ {"-keyhist", OptSpec::FLAG, &opt_keyhist},
+ {"-keygen", OptSpec::FLAG, &opt_keygen},
+ {"-loop", OptSpec::NUM, &opt_loopCount},
+ {"-iloop", OptSpec::NUM, &opt_iLoopCount},
+ {"-terse", OptSpec::FLAG, &opt_terse},
+ {"-dump", OptSpec::FLAG, &opt_dump},
+ {"-help", OptSpec::FLAG, &opt_help},
+ {"-?", OptSpec::FLAG, &opt_help},
+ {0, OptSpec::FLAG, 0}
+};
+
+
+//---------------------------------------------------------------------------
+//
+// Global variables pointing to and describing the test file
+//
+//---------------------------------------------------------------------------
+
+//
+// struct Line
+//
+// Each line from the source file (containing a name, presumably) gets
+// one of these structs.
+//
+struct Line {
+ UChar *name;
+ int len;
+ char *winSortKey;
+ char *icuSortKey;
+ char *unixSortKey;
+ char *unixName;
+};
+
+
+
+Line *gFileLines; // Ptr to array of Line structs, one per line in the file.
+int gNumFileLines;
+UCollator *gCol;
+DWORD gWinLCID;
+
+Line **gSortedLines;
+Line **gRandomLines;
+int gCount;
+
+
+
+//---------------------------------------------------------------------------
+//
+// ProcessOptions() Function to read the command line options.
+//
+//---------------------------------------------------------------------------
+UBool ProcessOptions(int argc, const char **argv, OptSpec opts[])
+{
+ int i;
+ int argNum;
+ const char *pArgName;
+ OptSpec *pOpt;
+
+ for (argNum=1; argNum<argc; argNum++) {
+ pArgName = argv[argNum];
+ for (pOpt = opts; pOpt->name != 0; pOpt++) {
+ if (strcmp(pOpt->name, pArgName) == 0) {
+ switch (pOpt->type) {
+ case OptSpec::FLAG:
+ *(UBool *)(pOpt->pVar) = TRUE;
+ break;
+ case OptSpec::STRING:
+ argNum ++;
+ if (argNum >= argc) {
+ fprintf(stderr, "value expected for \"%s\" option.\n", pOpt->name);
+ return FALSE;
+ }
+ *(const char **)(pOpt->pVar) = argv[argNum];
+ break;
+ case OptSpec::NUM:
+ argNum ++;
+ if (argNum >= argc) {
+ fprintf(stderr, "value expected for \"%s\" option.\n", pOpt->name);
+ return FALSE;
+ }
+ char *endp;
+ i = strtol(argv[argNum], &endp, 0);
+ if (endp == argv[argNum]) {
+ fprintf(stderr, "integer value expected for \"%s\" option.\n", pOpt->name);
+ return FALSE;
+ }
+ *(int *)(pOpt->pVar) = i;
+ }
+ break;
+ }
+ }
+ if (pOpt->name == 0)
+ {
+ fprintf(stderr, "Unrecognized option \"%s\"\n", pArgName);
+ return FALSE;
+ }
+ }
+return TRUE;
+}
+
+//---------------------------------------------------------------------------------------
+//
+// Comparison functions for use by qsort.
+//
+// Six flavors, ICU or Windows, SortKey or String Compare, Strings with length
+// or null terminated.
+//
+//---------------------------------------------------------------------------------------
+int ICUstrcmpK(const void *a, const void *b) {
+ gCount++;
+ int t = strcmp((*(Line **)a)->icuSortKey, (*(Line **)b)->icuSortKey);
+ return t;
+}
+
+
+int ICUstrcmpL(const void *a, const void *b) {
+ gCount++;
+ UCollationResult t;
+ t = ucol_strcoll(gCol, (*(Line **)a)->name, (*(Line **)a)->len, (*(Line **)b)->name, (*(Line **)b)->len);
+ if (t == UCOL_LESS) return -1;
+ if (t == UCOL_GREATER) return +1;
+ return 0;
+}
+
+
+int ICUstrcmp(const void *a, const void *b) {
+ gCount++;
+ UCollationResult t;
+ t = ucol_strcoll(gCol, (*(Line **)a)->name, -1, (*(Line **)b)->name, -1);
+ if (t == UCOL_LESS) return -1;
+ if (t == UCOL_GREATER) return +1;
+ return 0;
+}
+
+
+int Winstrcmp(const void *a, const void *b) {
+ gCount++;
+ int t;
+ t = CompareStringW(gWinLCID, 0, (*(Line **)a)->name, -1, (*(Line **)b)->name, -1);
+ return t-2;
+}
+
+
+int UNIXstrcmp(const void *a, const void *b) {
+ gCount++;
+ int t;
+ t = strcoll((*(Line **)a)->unixName, (*(Line **)b)->unixName);
+ return t;
+}
+
+
+int WinstrcmpL(const void *a, const void *b) {
+ gCount++;
+ int t;
+ t = CompareStringW(gWinLCID, 0, (*(Line **)a)->name, (*(Line **)a)->len, (*(Line **)b)->name, (*(Line **)b)->len);
+ return t-2;
+}
+
+
+int WinstrcmpK(const void *a, const void *b) {
+ gCount++;
+ int t = strcmp((*(Line **)a)->winSortKey, (*(Line **)b)->winSortKey);
+ return t;
+}
+
+
+//---------------------------------------------------------------------------------------
+//
+// Function for sorting the names (lines) into a random order.
+// Order is based on a hash of the ICU Sort key for the lines
+// The randomized order is used as input for the sorting timing tests.
+//
+//---------------------------------------------------------------------------------------
+int ICURandomCmp(const void *a, const void *b) {
+ char *ask = (*(Line **)a)->icuSortKey;
+ char *bsk = (*(Line **)b)->icuSortKey;
+ int aVal = 0;
+ int bVal = 0;
+ int retVal;
+ while (*ask != 0) {
+ aVal += aVal*37 + *ask++;
+ }
+ while (*bsk != 0) {
+ bVal += bVal*37 + *bsk++;
+ }
+ retVal = -1;
+ if (aVal == bVal) {
+ retVal = 0;
+ }
+ else if (aVal > bVal) {
+ retVal = 1;
+ }
+ return retVal;
+}
+
+//---------------------------------------------------------------------------------------
+//
+// doKeyGen() Key Generation Timing Test
+//
+//---------------------------------------------------------------------------------------
+void doKeyGen()
+{
+ int line;
+ int loops = 0;
+ int iLoop;
+ int t;
+ int len=-1;
+
+ // Adjust loop count to compensate for file size. Should be order n
+ double dLoopCount = double(opt_loopCount) * (1000. / double(gNumFileLines));
+ int adj_loopCount = int(dLoopCount);
+ if (adj_loopCount < 1) adj_loopCount = 1;
+
+
+ unsigned long startTime = timeGetTime();
+
+ if (opt_win) {
+ for (loops=0; loops<adj_loopCount; loops++) {
+ for (line=0; line < gNumFileLines; line++) {
+ if (opt_uselen) {
+ len = gFileLines[line].len;
+ }
+ for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+ t=LCMapStringW(gWinLCID, LCMAP_SORTKEY,
+ gFileLines[line].name, len,
+ (unsigned short *)gFileLines[line].winSortKey, 5000); // TODO something with length.
+ }
+ }
+ }
+ }
+ else if (opt_icu)
+ {
+ for (loops=0; loops<adj_loopCount; loops++) {
+ for (line=0; line < gNumFileLines; line++) {
+ if (opt_uselen) {
+ len = gFileLines[line].len;
+ }
+ for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+ t = ucol_getSortKey(gCol, gFileLines[line].name, len, (unsigned char *)gFileLines[line].icuSortKey, 5000);
+ }
+ }
+ }
+ }
+ else if (opt_unix)
+ {
+ for (loops=0; loops<adj_loopCount; loops++) {
+ for (line=0; line < gNumFileLines; line++) {
+ for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+ t = strxfrm(gFileLines[line].unixSortKey, gFileLines[line].unixName, 5000);
+ }
+ }
+ }
+ }
+
+ unsigned long elapsedTime = timeGetTime() - startTime;
+ int ns = (int)(float(1000000) * (float)elapsedTime / (float)(adj_loopCount*gNumFileLines));
+
+ if (opt_terse == FALSE) {
+ printf("Sort Key Generation: total # of keys = %d\n", loops*gNumFileLines);
+ printf("Sort Key Generation: time per key = %d ns\n", ns);
+ }
+ else {
+ printf("%d, ", ns);
+ }
+
+ int totalKeyLen = 0;
+ int totalChars = 0;
+ for (line=0; line<gNumFileLines; line++) {
+ totalChars += u_strlen(gFileLines[line].name);
+ if (opt_win) {
+ totalKeyLen += strlen(gFileLines[line].winSortKey);
+ }
+ else if (opt_icu) {
+ totalKeyLen += strlen(gFileLines[line].icuSortKey);
+ }
+ else if (opt_unix) {
+ totalKeyLen += strlen(gFileLines[line].unixSortKey);
+ }
+
+ }
+ if (opt_terse == FALSE) {
+ printf("Key Length / character = %f\n", (float)totalKeyLen / (float)totalChars);
+ } else {
+ printf("%f, ", (float)totalKeyLen / (float)totalChars);
+ }
+}
+
+
+
+//---------------------------------------------------------------------------------------
+//
+// doBinarySearch() Binary Search timing test. Each name from the list
+// is looked up in the full sorted list of names.
+//
+//---------------------------------------------------------------------------------------
+void doBinarySearch()
+{
+
+ gCount = 0;
+ int line;
+ int loops = 0;
+ int iLoop = 0;
+ unsigned long elapsedTime = 0;
+
+ // Adjust loop count to compensate for file size. Should be order n (lookups) * log n (compares/lookup)
+ // Accurate timings do not depend on this being perfect. The correction is just to try to
+ // get total running times of about the right order, so the that user doesn't need to
+ // manually adjust the loop count for every different file size.
+ double dLoopCount = double(opt_loopCount) * 3000. / (log10(gNumFileLines) * double(gNumFileLines));
+ if (opt_usekeys) dLoopCount *= 5;
+ int adj_loopCount = int(dLoopCount);
+ if (adj_loopCount < 1) adj_loopCount = 1;
+
+
+ for (;;) { // not really a loop, just allows "break" to work, to simplify
+ // inadvertantly running more than one test through here.
+ if (opt_strcmp || opt_strcmpCPO)
+ {
+ unsigned long startTime = timeGetTime();
+ typedef int32_t (U_EXPORT2 *PF)(const UChar *, const UChar *);
+ PF pf = u_strcmp;
+ if (opt_strcmpCPO) {pf = u_strcmpCodePointOrder;}
+ //if (opt_strcmp && opt_win) {pf = (PF)wcscmp;} // Damn the difference between int32_t and int
+ // which forces the use of a cast here.
+
+ int r = 0;
+ for (loops=0; loops<adj_loopCount; loops++) {
+
+ for (line=0; line < gNumFileLines; line++) {
+ int hi = gNumFileLines-1;
+ int lo = 0;
+ int guess = -1;
+ for (;;) {
+ int newGuess = (hi + lo) / 2;
+ if (newGuess == guess)
+ break;
+ guess = newGuess;
+ for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+ r = (*pf)((gSortedLines[line])->name, (gSortedLines[guess])->name);
+ }
+ gCount++;
+ if (r== 0)
+ break;
+ if (r < 0)
+ hi = guess;
+ else
+ lo = guess;
+ }
+ }
+ }
+ elapsedTime = timeGetTime() - startTime;
+ break;
+ }
+
+
+ if (opt_icu)
+ {
+ unsigned long startTime = timeGetTime();
+ UCollationResult r = UCOL_EQUAL;
+ for (loops=0; loops<adj_loopCount; loops++) {
+
+ for (line=0; line < gNumFileLines; line++) {
+ int lineLen = -1;
+ int guessLen = -1;
+ if (opt_uselen) {
+ lineLen = (gSortedLines[line])->len;
+ }
+ int hi = gNumFileLines-1;
+ int lo = 0;
+ int guess = -1;
+ for (;;) {
+ int newGuess = (hi + lo) / 2;
+ if (newGuess == guess)
+ break;
+ guess = newGuess;
+ int ri = 0;
+ if (opt_usekeys) {
+ for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+ ri = strcmp((gSortedLines[line])->icuSortKey, (gSortedLines[guess])->icuSortKey);
+ }
+ gCount++;
+ r=UCOL_GREATER; if(ri<0) {r=UCOL_LESS;} else if (ri==0) {r=UCOL_EQUAL;}
+ }
+ else
+ {
+ if (opt_uselen) {
+ guessLen = (gSortedLines[guess])->len;
+ }
+ for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+ r = ucol_strcoll(gCol, (gSortedLines[line])->name, lineLen, (gSortedLines[guess])->name, guessLen);
+ }
+ gCount++;
+ }
+ if (r== UCOL_EQUAL)
+ break;
+ if (r == UCOL_LESS)
+ hi = guess;
+ else
+ lo = guess;
+ }
+ }
+ }
+ elapsedTime = timeGetTime() - startTime;
+ break;
+ }
+
+ if (opt_win)
+ {
+ unsigned long startTime = timeGetTime();
+ int r = 0;
+ for (loops=0; loops<adj_loopCount; loops++) {
+
+ for (line=0; line < gNumFileLines; line++) {
+ int lineLen = -1;
+ int guessLen = -1;
+ if (opt_uselen) {
+ lineLen = (gSortedLines[line])->len;
+ }
+ int hi = gNumFileLines-1;
+ int lo = 0;
+ int guess = -1;
+ for (;;) {
+ int newGuess = (hi + lo) / 2;
+ if (newGuess == guess)
+ break;
+ guess = newGuess;
+ if (opt_usekeys) {
+ for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+ r = strcmp((gSortedLines[line])->winSortKey, (gSortedLines[guess])->winSortKey);
+ }
+ gCount++;
+ r+=2;
+ }
+ else
+ {
+ if (opt_uselen) {
+ guessLen = (gSortedLines[guess])->len;
+ }
+ for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+ r = CompareStringW(gWinLCID, 0, (gSortedLines[line])->name, lineLen, (gSortedLines[guess])->name, guessLen);
+ }
+ if (r == 0) {
+ if (opt_terse == FALSE) {
+ fprintf(stderr, "Error returned from Windows CompareStringW.\n");
+ }
+ exit(-1);
+ }
+ gCount++;
+ }
+ if (r== 2) // strings ==
+ break;
+ if (r == 1) // line < guess
+ hi = guess;
+ else // line > guess
+ lo = guess;
+ }
+ }
+ }
+ elapsedTime = timeGetTime() - startTime;
+ break;
+ }
+
+ if (opt_unix)
+ {
+ unsigned long startTime = timeGetTime();
+ int r = 0;
+ for (loops=0; loops<adj_loopCount; loops++) {
+
+ for (line=0; line < gNumFileLines; line++) {
+ int hi = gNumFileLines-1;
+ int lo = 0;
+ int guess = -1;
+ for (;;) {
+ int newGuess = (hi + lo) / 2;
+ if (newGuess == guess)
+ break;
+ guess = newGuess;
+ if (opt_usekeys) {
+ for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+ r = strcmp((gSortedLines[line])->unixSortKey, (gSortedLines[guess])->unixSortKey);
+ }
+ gCount++;
+ }
+ else
+ {
+ for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+ r = strcoll((gSortedLines[line])->unixName, (gSortedLines[guess])->unixName);
+ }
+ errno = 0;
+ if (errno != 0) {
+ fprintf(stderr, "Error %d returned from strcoll.\n", errno);
+ exit(-1);
+ }
+ gCount++;
+ }
+ if (r == 0) // strings ==
+ break;
+ if (r < 0) // line < guess
+ hi = guess;
+ else // line > guess
+ lo = guess;
+ }
+ }
+ }
+ elapsedTime = timeGetTime() - startTime;
+ break;
+ }
+ break;
+ }
+
+ int ns = (int)(float(1000000) * (float)elapsedTime / (float)gCount);
+ if (opt_terse == FALSE) {
+ printf("binary search: total # of string compares = %d\n", gCount);
+ printf("binary search: compares per loop = %d\n", gCount / loops);
+ printf("binary search: time per compare = %d ns\n", ns);
+ } else {
+ printf("%d, ", ns);
+ }
+
+}
+
+
+
+
+//---------------------------------------------------------------------------------------
+//
+// doQSort() The quick sort timing test. Uses the C library qsort function.
+//
+//---------------------------------------------------------------------------------------
+void doQSort() {
+ int i;
+ Line **sortBuf = new Line *[gNumFileLines];
+
+ // Adjust loop count to compensate for file size. QSort should be n log(n)
+ double dLoopCount = double(opt_loopCount) * 3000. / (log10(gNumFileLines) * double(gNumFileLines));
+ if (opt_usekeys) dLoopCount *= 5;
+ int adj_loopCount = int(dLoopCount);
+ if (adj_loopCount < 1) adj_loopCount = 1;
+
+
+ gCount = 0;
+ unsigned long startTime = timeGetTime();
+ if (opt_win && opt_usekeys) {
+ for (i=0; i<opt_loopCount; i++) {
+ memcpy(sortBuf, gRandomLines, gNumFileLines * sizeof(Line *));
+ qsort(sortBuf, gNumFileLines, sizeof(Line *), WinstrcmpK);
+ }
+ }
+
+ else if (opt_win && opt_uselen) {
+ for (i=0; i<adj_loopCount; i++) {
+ memcpy(sortBuf, gRandomLines, gNumFileLines * sizeof(Line *));
+ qsort(sortBuf, gNumFileLines, sizeof(Line *), WinstrcmpL);
+ }
+ }
+
+
+ else if (opt_win && !opt_uselen) {
+ for (i=0; i<adj_loopCount; i++) {
+ memcpy(sortBuf, gRandomLines, gNumFileLines * sizeof(Line *));
+ qsort(sortBuf, gNumFileLines, sizeof(Line *), Winstrcmp);
+ }
+ }
+
+ else if (opt_icu && opt_usekeys) {
+ for (i=0; i<adj_loopCount; i++) {
+ memcpy(sortBuf, gRandomLines, gNumFileLines * sizeof(Line *));
+ qsort(sortBuf, gNumFileLines, sizeof(Line *), ICUstrcmpK);
+ }
+ }
+
+ else if (opt_icu && opt_uselen) {
+ for (i=0; i<adj_loopCount; i++) {
+ memcpy(sortBuf, gRandomLines, gNumFileLines * sizeof(Line *));
+ qsort(sortBuf, gNumFileLines, sizeof(Line *), ICUstrcmpL);
+ }
+ }
+
+
+ else if (opt_icu && !opt_uselen) {
+ for (i=0; i<adj_loopCount; i++) {
+ memcpy(sortBuf, gRandomLines, gNumFileLines * sizeof(Line *));
+ qsort(sortBuf, gNumFileLines, sizeof(Line *), ICUstrcmp);
+ }
+ }
+
+ else if (opt_unix && !opt_usekeys) {
+ for (i=0; i<adj_loopCount; i++) {
+ memcpy(sortBuf, gRandomLines, gNumFileLines * sizeof(Line *));
+ qsort(sortBuf, gNumFileLines, sizeof(Line *), UNIXstrcmp);
+ }
+ }
+
+ unsigned long elapsedTime = timeGetTime() - startTime;
+ int ns = (int)(float(1000000) * (float)elapsedTime / (float)gCount);
+ if (opt_terse == FALSE) {
+ printf("qsort: total # of string compares = %d\n", gCount);
+ printf("qsort: time per compare = %d ns\n", ns);
+ } else {
+ printf("%d, ", ns);
+ }
+}
+
+
+
+//---------------------------------------------------------------------------------------
+//
+// doKeyHist() Output a table of data for
+// average sort key size vs. string length.
+//
+//---------------------------------------------------------------------------------------
+void doKeyHist() {
+ int i;
+ int maxLen = 0;
+
+ // Find the maximum string length
+ for (i=0; i<gNumFileLines; i++) {
+ if (gFileLines[i].len > maxLen) maxLen = gFileLines[i].len;
+ }
+
+ // Allocate arrays to hold the histogram data
+ int *accumulatedLen = new int[maxLen+1];
+ int *numKeysOfSize = new int[maxLen+1];
+ for (i=0; i<=maxLen; i++) {
+ accumulatedLen[i] = 0;
+ numKeysOfSize[i] = 0;
+ }
+
+ // Fill the arrays...
+ for (i=0; i<gNumFileLines; i++) {
+ int len = gFileLines[i].len;
+ accumulatedLen[len] += strlen(gFileLines[i].icuSortKey);
+ numKeysOfSize[len] += 1;
+ }
+
+ // And write out averages
+ printf("String Length, Avg Key Length, Avg Key Len per char\n");
+ for (i=1; i<=maxLen; i++) {
+ if (numKeysOfSize[i] > 0) {
+ printf("%d, %f, %f\n", i, (float)accumulatedLen[i] / (float)numKeysOfSize[i],
+ (float)accumulatedLen[i] / (float)(numKeysOfSize[i] * i));
+ }
+ }
+ delete []accumulatedLen;
+ delete []numKeysOfSize ;
+}
+
+//---------------------------------------------------------------------------------------
+//
+// doForwardIterTest(UBool) Forward iteration test
+// argument null-terminated string used
+//
+//---------------------------------------------------------------------------------------
+void doForwardIterTest(UBool haslen) {
+ int count = 0;
+
+ UErrorCode error = U_ZERO_ERROR;
+ printf("\n\nPerforming forward iteration performance test with ");
+
+ if (haslen) {
+ printf("non-null terminated data -----------\n");
+ }
+ else {
+ printf("null terminated data -----------\n");
+ }
+ printf("performance test on strings from file -----------\n");
+
+ UChar dummytext[] = {0, 0};
+ UCollationElements *iter = ucol_openElements(gCol, NULL, 0, &error);
+ ucol_setText(iter, dummytext, 1, &error);
+
+ gCount = 0;
+ unsigned long startTime = timeGetTime();
+ while (count < opt_loopCount) {
+ int linecount = 0;
+ while (linecount < gNumFileLines) {
+ UChar *str = gFileLines[linecount].name;
+ int strlen = haslen?gFileLines[linecount].len:-1;
+ ucol_setText(iter, str, strlen, &error);
+ while (ucol_next(iter, &error) != UCOL_NULLORDER) {
+ gCount++;
+ }
+
+ linecount ++;
+ }
+ count ++;
+ }
+ unsigned long elapsedTime = timeGetTime() - startTime;
+ printf("elapsedTime %ld\n", elapsedTime);
+
+ // empty loop recalculation
+ count = 0;
+ startTime = timeGetTime();
+ while (count < opt_loopCount) {
+ int linecount = 0;
+ while (linecount < gNumFileLines) {
+ UChar *str = gFileLines[linecount].name;
+ int strlen = haslen?gFileLines[linecount].len:-1;
+ ucol_setText(iter, str, strlen, &error);
+ linecount ++;
+ }
+ count ++;
+ }
+ elapsedTime -= (timeGetTime() - startTime);
+ printf("elapsedTime %ld\n", elapsedTime);
+
+ ucol_closeElements(iter);
+
+ int ns = (int)(float(1000000) * (float)elapsedTime / (float)gCount);
+ printf("Total number of strings compared %d in %d loops\n", gNumFileLines,
+ opt_loopCount);
+ printf("Average time per ucol_next() nano seconds %d\n", ns);
+
+ printf("performance test on skipped-5 concatenated strings from file -----------\n");
+
+ UChar *str;
+ int strlen = 0;
+ // appending all the strings
+ int linecount = 0;
+ while (linecount < gNumFileLines) {
+ strlen += haslen?gFileLines[linecount].len:
+ u_strlen(gFileLines[linecount].name);
+ linecount ++;
+ }
+ str = (UChar *)malloc(sizeof(UChar) * strlen);
+ int strindex = 0;
+ linecount = 0;
+ while (strindex < strlen) {
+ int len = 0;
+ len += haslen?gFileLines[linecount].len:
+ u_strlen(gFileLines[linecount].name);
+ memcpy(str + strindex, gFileLines[linecount].name,
+ sizeof(UChar) * len);
+ strindex += len;
+ linecount ++;
+ }
+
+ printf("Total size of strings %d\n", strlen);
+
+ gCount = 0;
+ count = 0;
+
+ if (!haslen) {
+ strlen = -1;
+ }
+ iter = ucol_openElements(gCol, str, strlen, &error);
+ if (!haslen) {
+ strlen = u_strlen(str);
+ }
+ strlen -= 5; // any left over characters are not iterated,
+ // this is to ensure the backwards and forwards iterators
+ // gets the same position
+ startTime = timeGetTime();
+ while (count < opt_loopCount) {
+ int count5 = 5;
+ strindex = 0;
+ ucol_setOffset(iter, strindex, &error);
+ while (TRUE) {
+ if (ucol_next(iter, &error) == UCOL_NULLORDER) {
+ break;
+ }
+ gCount++;
+ count5 --;
+ if (count5 == 0) {
+ strindex += 10;
+ if (strindex > strlen) {
+ break;
+ }
+ ucol_setOffset(iter, strindex, &error);
+ count5 = 5;
+ }
+ }
+ count ++;
+ }
+
+ elapsedTime = timeGetTime() - startTime;
+ printf("elapsedTime %ld\n", elapsedTime);
+
+ // empty loop recalculation
+ int tempgCount = 0;
+ count = 0;
+ startTime = timeGetTime();
+ while (count < opt_loopCount) {
+ int count5 = 5;
+ strindex = 0;
+ ucol_setOffset(iter, strindex, &error);
+ while (TRUE) {
+ tempgCount ++;
+ count5 --;
+ if (count5 == 0) {
+ strindex += 10;
+ if (strindex > strlen) {
+ break;
+ }
+ ucol_setOffset(iter, strindex, &error);
+ count5 = 5;
+ }
+ }
+ count ++;
+ }
+ elapsedTime -= (timeGetTime() - startTime);
+ printf("elapsedTime %ld\n", elapsedTime);
+
+ ucol_closeElements(iter);
+
+ printf("gCount %d\n", gCount);
+ ns = (int)(float(1000000) * (float)elapsedTime / (float)gCount);
+ printf("Average time per ucol_next() nano seconds %d\n", ns);
+}
+
+//---------------------------------------------------------------------------------------
+//
+// doBackwardIterTest(UBool) Backwards iteration test
+// argument null-terminated string used
+//
+//---------------------------------------------------------------------------------------
+void doBackwardIterTest(UBool haslen) {
+ int count = 0;
+ UErrorCode error = U_ZERO_ERROR;
+ printf("\n\nPerforming backward iteration performance test with ");
+
+ if (haslen) {
+ printf("non-null terminated data -----------\n");
+ }
+ else {
+ printf("null terminated data -----------\n");
+ }
+
+ printf("performance test on strings from file -----------\n");
+
+ UCollationElements *iter = ucol_openElements(gCol, NULL, 0, &error);
+ UChar dummytext[] = {0, 0};
+ ucol_setText(iter, dummytext, 1, &error);
+
+ gCount = 0;
+ unsigned long startTime = timeGetTime();
+ while (count < opt_loopCount) {
+ int linecount = 0;
+ while (linecount < gNumFileLines) {
+ UChar *str = gFileLines[linecount].name;
+ int strlen = haslen?gFileLines[linecount].len:-1;
+ ucol_setText(iter, str, strlen, &error);
+ while (ucol_previous(iter, &error) != UCOL_NULLORDER) {
+ gCount ++;
+ }
+
+ linecount ++;
+ }
+ count ++;
+ }
+ unsigned long elapsedTime = timeGetTime() - startTime;
+
+ printf("elapsedTime %ld\n", elapsedTime);
+
+ // empty loop recalculation
+ count = 0;
+ startTime = timeGetTime();
+ while (count < opt_loopCount) {
+ int linecount = 0;
+ while (linecount < gNumFileLines) {
+ UChar *str = gFileLines[linecount].name;
+ int strlen = haslen?gFileLines[linecount].len:-1;
+ ucol_setText(iter, str, strlen, &error);
+ linecount ++;
+ }
+ count ++;
+ }
+ elapsedTime -= (timeGetTime() - startTime);
+
+ printf("elapsedTime %ld\n", elapsedTime);
+ ucol_closeElements(iter);
+
+ int ns = (int)(float(1000000) * (float)elapsedTime / (float)gCount);
+ printf("Total number of strings compared %d in %d loops\n", gNumFileLines,
+ opt_loopCount);
+ printf("Average time per ucol_previous() nano seconds %d\n", ns);
+
+ printf("performance test on skipped-5 concatenated strings from file -----------\n");
+
+ UChar *str;
+ int strlen = 0;
+ // appending all the strings
+ int linecount = 0;
+ while (linecount < gNumFileLines) {
+ strlen += haslen?gFileLines[linecount].len:
+ u_strlen(gFileLines[linecount].name);
+ linecount ++;
+ }
+ str = (UChar *)malloc(sizeof(UChar) * strlen);
+ int strindex = 0;
+ linecount = 0;
+ while (strindex < strlen) {
+ int len = 0;
+ len += haslen?gFileLines[linecount].len:
+ u_strlen(gFileLines[linecount].name);
+ memcpy(str + strindex, gFileLines[linecount].name,
+ sizeof(UChar) * len);
+ strindex += len;
+ linecount ++;
+ }
+
+ printf("Total size of strings %d\n", strlen);
+
+ gCount = 0;
+ count = 0;
+
+ if (!haslen) {
+ strlen = -1;
+ }
+
+ iter = ucol_openElements(gCol, str, strlen, &error);
+ if (!haslen) {
+ strlen = u_strlen(str);
+ }
+
+ startTime = timeGetTime();
+ while (count < opt_loopCount) {
+ int count5 = 5;
+ strindex = 5;
+ ucol_setOffset(iter, strindex, &error);
+ while (TRUE) {
+ if (ucol_previous(iter, &error) == UCOL_NULLORDER) {
+ break;
+ }
+ gCount ++;
+ count5 --;
+ if (count5 == 0) {
+ strindex += 10;
+ if (strindex > strlen) {
+ break;
+ }
+ ucol_setOffset(iter, strindex, &error);
+ count5 = 5;
+ }
+ }
+ count ++;
+ }
+
+ elapsedTime = timeGetTime() - startTime;
+ printf("elapsedTime %ld\n", elapsedTime);
+
+ // empty loop recalculation
+ count = 0;
+ int tempgCount = 0;
+ startTime = timeGetTime();
+ while (count < opt_loopCount) {
+ int count5 = 5;
+ strindex = 5;
+ ucol_setOffset(iter, strindex, &error);
+ while (TRUE) {
+ tempgCount ++;
+ count5 --;
+ if (count5 == 0) {
+ strindex += 10;
+ if (strindex > strlen) {
+ break;
+ }
+ ucol_setOffset(iter, strindex, &error);
+ count5 = 5;
+ }
+ }
+ count ++;
+ }
+ elapsedTime -= (timeGetTime() - startTime);
+ printf("elapsedTime %ld\n", elapsedTime);
+ ucol_closeElements(iter);
+
+ printf("gCount %d\n", gCount);
+ ns = (int)(float(1000000) * (float)elapsedTime / (float)gCount);
+ printf("Average time per ucol_previous() nano seconds %d\n", ns);
+}
+
+//---------------------------------------------------------------------------------------
+//
+// doIterTest() Iteration test
+//
+//---------------------------------------------------------------------------------------
+void doIterTest() {
+ doForwardIterTest(opt_uselen);
+ doBackwardIterTest(opt_uselen);
+}
+
+
+//----------------------------------------------------------------------------------------
+//
+// UnixConvert -- Convert the lines of the file to the encoding for UNIX
+// Since it appears that Unicode support is going in the general
+// direction of the use of UTF-8 locales, that is the approach
+// that is used here.
+//
+//----------------------------------------------------------------------------------------
+void UnixConvert() {
+ int line;
+
+ UConverter *cvrtr; // An ICU code page converter.
+ UErrorCode status = U_ZERO_ERROR;
+
+
+ cvrtr = ucnv_open("utf-8", &status); // we are just doing UTF-8 locales for now.
+ if (U_FAILURE(status)) {
+ fprintf(stderr, "ICU Converter open failed.: %s\n", u_errorName(status));
+ exit(-1);
+ }
+
+ for (line=0; line < gNumFileLines; line++) {
+ int sizeNeeded = ucnv_fromUChars(cvrtr,
+ 0, // ptr to target buffer.
+ 0, // length of target buffer.
+ gFileLines[line].name,
+ -1, // source is null terminated
+ &status);
+ if (status != U_BUFFER_OVERFLOW_ERROR && status != U_ZERO_ERROR) {
+ //fprintf(stderr, "Conversion from Unicode, something is wrong.\n");
+ //exit(-1);
+ }
+ status = U_ZERO_ERROR;
+ gFileLines[line].unixName = new char[sizeNeeded+1];
+ sizeNeeded = ucnv_fromUChars(cvrtr,
+ gFileLines[line].unixName, // ptr to target buffer.
+ sizeNeeded+1, // length of target buffer.
+ gFileLines[line].name,
+ -1, // source is null terminated
+ &status);
+ if (U_FAILURE(status)) {
+ fprintf(stderr, "ICU Conversion Failed.: %d\n", status);
+ exit(-1);
+ }
+ gFileLines[line].unixName[sizeNeeded] = 0;
+ };
+ ucnv_close(cvrtr);
+}
+
+
+//----------------------------------------------------------------------------------------
+//
+// class UCharFile Class to hide all the gorp to read a file in
+// and produce a stream of UChars.
+//
+//----------------------------------------------------------------------------------------
+class UCharFile {
+public:
+ UCharFile(const char *fileName);
+ ~UCharFile();
+ UChar get();
+ UBool eof() {return fEof;};
+ UBool error() {return fError;};
+
+private:
+ UCharFile (const UCharFile & /*other*/) {}; // No copy constructor.
+ UCharFile & operator = (const UCharFile &/*other*/) {return *this;}; // No assignment op
+
+ FILE *fFile;
+ const char *fName;
+ UBool fEof;
+ UBool fError;
+ UChar fPending2ndSurrogate;
+
+ enum {UTF16LE, UTF16BE, UTF8} fEncoding;
+};
+
+UCharFile::UCharFile(const char * fileName) {
+ fEof = FALSE;
+ fError = FALSE;
+ fName = fileName;
+ fFile = fopen(fName, "rb");
+ fPending2ndSurrogate = 0;
+ if (fFile == NULL) {
+ fprintf(stderr, "Can not open file \"%s\"\n", opt_fName);
+ fError = TRUE;
+ return;
+ }
+ //
+ // Look for the byte order mark at the start of the file.
+ //
+ int BOMC1, BOMC2, BOMC3;
+ BOMC1 = fgetc(fFile);
+ BOMC2 = fgetc(fFile);
+
+ if (BOMC1 == 0xff && BOMC2 == 0xfe) {
+ fEncoding = UTF16LE; }
+ else if (BOMC1 == 0xfe && BOMC2 == 0xff) {
+ fEncoding = UTF16BE; }
+ else if (BOMC1 == 0xEF && BOMC2 == 0xBB && (BOMC3 = fgetc(fFile)) == 0xBF ) {
+ fEncoding = UTF8; }
+ else
+ {
+ fprintf(stderr, "collperf: file \"%s\" encoding must be UTF-8 or UTF-16, and "
+ "must include a BOM.\n", fileName);
+ fError = true;
+ return;
+ }
+}
+
+
+UCharFile::~UCharFile() {
+ fclose(fFile);
+}
+
+
+
+UChar UCharFile::get() {
+ UChar c;
+ switch (fEncoding) {
+ case UTF16LE:
+ {
+ int cL, cH;
+ cL = fgetc(fFile);
+ cH = fgetc(fFile);
+ c = cL | (cH << 8);
+ if (cH == EOF) {
+ c = 0;
+ fEof = TRUE;
+ }
+ break;
+ }
+ case UTF16BE:
+ {
+ int cL, cH;
+ cH = fgetc(fFile);
+ cL = fgetc(fFile);
+ c = cL | (cH << 8);
+ if (cL == EOF) {
+ c = 0;
+ fEof = TRUE;
+ }
+ break;
+ }
+ case UTF8:
+ {
+ if (fPending2ndSurrogate != 0) {
+ c = fPending2ndSurrogate;
+ fPending2ndSurrogate = 0;
+ break;
+ }
+
+ int ch = fgetc(fFile); // Note: c and ch are separate cause eof test doesn't work on UChar type.
+ if (ch == EOF) {
+ c = 0;
+ fEof = TRUE;
+ break;
+ }
+
+ if (ch <= 0x7f) {
+ // It's ascii. No further utf-8 conversion.
+ c = ch;
+ break;
+ }
+
+ // Figure out the lenght of the char and read the rest of the bytes
+ // into a temp array.
+ int nBytes;
+ if (ch >= 0xF0) {nBytes=4;}
+ else if (ch >= 0xE0) {nBytes=3;}
+ else if (ch >= 0xC0) {nBytes=2;}
+ else {
+ fprintf(stderr, "utf-8 encoded file contains corrupt data.\n");
+ fError = TRUE;
+ return 0;
+ }
+
+ unsigned char bytes[10];
+ bytes[0] = (unsigned char)ch;
+ int i;
+ for (i=1; i<nBytes; i++) {
+ bytes[i] = fgetc(fFile);
+ if (bytes[i] < 0x80 || bytes[i] >= 0xc0) {
+ fprintf(stderr, "utf-8 encoded file contains corrupt data.\n");
+ fError = TRUE;
+ return 0;
+ }
+ }
+
+ // Convert the bytes from the temp array to a Unicode char.
+ i = 0;
+ uint32_t cp;
+ UTF8_NEXT_CHAR_UNSAFE(bytes, i, cp);
+ c = (UChar)cp;
+
+ if (cp >= 0x10000) {
+ // The code point needs to be broken up into a utf-16 surrogate pair.
+ // Process first half this time through the main loop, and
+ // remember the other half for the next time through.
+ UChar utf16Buf[3];
+ i = 0;
+ UTF16_APPEND_CHAR_UNSAFE(utf16Buf, i, cp);
+ fPending2ndSurrogate = utf16Buf[1];
+ c = utf16Buf[0];
+ }
+ break;
+ };
+ default:
+ c = 0xFFFD; /* Error, unspecified codepage*/
+ fprintf(stderr, "UCharFile: Error: unknown fEncoding\n");
+ exit(1);
+ }
+ return c;
+}
+
+//----------------------------------------------------------------------------------------
+//
+// openRulesCollator - Command line specified a rules file. Read it in
+// and open a collator with it.
+//
+//----------------------------------------------------------------------------------------
+UCollator *openRulesCollator() {
+ UCharFile f(opt_rules);
+ if (f.error()) {
+ return 0;
+ }
+
+ int bufLen = 10000;
+ UChar *buf = (UChar *)malloc(bufLen * sizeof(UChar));
+ int i = 0;
+
+ for(;;) {
+ buf[i] = f.get();
+ if (f.eof()) {
+ break;
+ }
+ if (f.error()) {
+ return 0;
+ }
+ i++;
+ if (i >= bufLen) {
+ bufLen += 10000;
+ buf = (UChar *)realloc(buf, bufLen);
+ }
+ }
+ buf[i] = 0;
+
+ UErrorCode status = U_ZERO_ERROR;
+ UCollator *coll = ucol_openRules(buf, u_strlen(buf), UCOL_OFF,
+ UCOL_DEFAULT_STRENGTH, NULL, &status);
+ if (U_FAILURE(status)) {
+ fprintf(stderr, "ICU ucol_openRules() open failed.: %d\n", status);
+ return 0;
+ }
+ free(buf);
+ return coll;
+}
+
+
+
+
+
+//----------------------------------------------------------------------------------------
+//
+// Main -- process command line, read in and pre-process the test file,
+// call other functions to do the actual tests.
+//
+//----------------------------------------------------------------------------------------
+int main(int argc, const char** argv) {
+ if (ProcessOptions(argc, argv, opts) != TRUE || opt_help || opt_fName == 0) {
+ printf(gUsageString);
+ exit (1);
+ }
+
+ // Make sure that we've only got one API selected.
+ if (opt_unix || opt_win) opt_icu = FALSE;
+ if (opt_unix) opt_win = FALSE;
+
+ //
+ // Set up an ICU collator
+ //
+ UErrorCode status = U_ZERO_ERROR;
+
+ if (opt_rules != 0) {
+ gCol = openRulesCollator();
+ if (gCol == 0) {return -1;}
+ }
+ else {
+ gCol = ucol_open(opt_locale, &status);
+ if (U_FAILURE(status)) {
+ fprintf(stderr, "Collator creation failed.: %d\n", status);
+ return -1;
+ }
+ }
+ if (status==U_USING_DEFAULT_WARNING && opt_terse==FALSE) {
+ fprintf(stderr, "Warning, U_USING_DEFAULT_WARNING for %s\n", opt_locale);
+ }
+ if (status==U_USING_FALLBACK_WARNING && opt_terse==FALSE) {
+ fprintf(stderr, "Warning, U_USING_FALLBACK_ERROR for %s\n", opt_locale);
+ }
+
+ if (opt_norm) {
+ ucol_setAttribute(gCol, UCOL_NORMALIZATION_MODE, UCOL_ON, &status);
+ }
+ if (opt_french && opt_frenchoff) {
+ fprintf(stderr, "collperf: Error, specified both -french and -frenchoff options.");
+ exit(-1);
+ }
+ if (opt_french) {
+ ucol_setAttribute(gCol, UCOL_FRENCH_COLLATION, UCOL_ON, &status);
+ }
+ if (opt_frenchoff) {
+ ucol_setAttribute(gCol, UCOL_FRENCH_COLLATION, UCOL_OFF, &status);
+ }
+ if (opt_lower) {
+ ucol_setAttribute(gCol, UCOL_CASE_FIRST, UCOL_LOWER_FIRST, &status);
+ }
+ if (opt_upper) {
+ ucol_setAttribute(gCol, UCOL_CASE_FIRST, UCOL_UPPER_FIRST, &status);
+ }
+ if (opt_case) {
+ ucol_setAttribute(gCol, UCOL_CASE_LEVEL, UCOL_ON, &status);
+ }
+ if (opt_shifted) {
+ ucol_setAttribute(gCol, UCOL_ALTERNATE_HANDLING, UCOL_SHIFTED, &status);
+ }
+ if (opt_level != 0) {
+ switch (opt_level) {
+ case 1:
+ ucol_setAttribute(gCol, UCOL_STRENGTH, UCOL_PRIMARY, &status);
+ break;
+ case 2:
+ ucol_setAttribute(gCol, UCOL_STRENGTH, UCOL_SECONDARY, &status);
+ break;
+ case 3:
+ ucol_setAttribute(gCol, UCOL_STRENGTH, UCOL_TERTIARY, &status);
+ break;
+ case 4:
+ ucol_setAttribute(gCol, UCOL_STRENGTH, UCOL_QUATERNARY, &status);
+ break;
+ case 5:
+ ucol_setAttribute(gCol, UCOL_STRENGTH, UCOL_IDENTICAL, &status);
+ break;
+ default:
+ fprintf(stderr, "-level param must be between 1 and 5\n");
+ exit(-1);
+ }
+ }
+
+ if (U_FAILURE(status)) {
+ fprintf(stderr, "Collator attribute setting failed.: %d\n", status);
+ return -1;
+ }
+
+
+ //
+ // Set up a Windows LCID
+ //
+ if (opt_langid != 0) {
+ gWinLCID = MAKELCID(opt_langid, SORT_DEFAULT);
+ }
+ else {
+ gWinLCID = uloc_getLCID(opt_locale);
+ }
+
+
+ //
+ // Set the UNIX locale
+ //
+ if (opt_unix) {
+ if (setlocale(LC_ALL, opt_locale) == 0) {
+ fprintf(stderr, "setlocale(LC_ALL, %s) failed.\n", opt_locale);
+ exit(-1);
+ }
+ }
+
+ // Read in the input file.
+ // File assumed to be utf-16.
+ // Lines go onto heap buffers. Global index array to line starts is created.
+ // Lines themselves are null terminated.
+ //
+
+ UCharFile f(opt_fName);
+ if (f.error()) {
+ exit(-1);
+ }
+
+ const int MAXLINES = 100000;
+ gFileLines = new Line[MAXLINES];
+ UChar buf[1024];
+ int column = 0;
+
+ // Read the file, split into lines, and save in memory.
+ // Loop runs once per utf-16 value from the input file,
+ // (The number of bytes read from file per loop iteration depends on external encoding.)
+ for (;;) {
+
+ UChar c = f.get();
+ if (f.error()){
+ exit(-1);
+ }
+
+
+ // We now have a good UTF-16 value in c.
+
+ // Watch for CR, LF, EOF; these finish off a line.
+ if (c == 0xd) {
+ continue;
+ }
+
+ if (f.eof() || c == 0x0a || c==0x2028) { // Unipad inserts 2028 line separators!
+ buf[column++] = 0;
+ if (column > 1) {
+ gFileLines[gNumFileLines].name = new UChar[column];
+ gFileLines[gNumFileLines].len = column-1;
+ memcpy(gFileLines[gNumFileLines].name, buf, column * sizeof(UChar));
+ gNumFileLines++;
+ column = 0;
+ if (gNumFileLines >= MAXLINES) {
+ fprintf(stderr, "File too big. Max number of lines is %d\n", MAXLINES);
+ exit(-1);
+ }
+
+ }
+ if (c == 0xa || c == 0x2028)
+ continue;
+ else
+ break; // EOF
+ }
+ buf[column++] = c;
+ if (column >= 1023)
+ {
+ static UBool warnFlag = TRUE;
+ if (warnFlag) {
+ fprintf(stderr, "Warning - file line longer than 1023 chars truncated.\n");
+ warnFlag = FALSE;
+ }
+ column--;
+ }
+ }
+
+ if (opt_terse == FALSE) {
+ printf("file \"%s\", %d lines.\n", opt_fName, gNumFileLines);
+ }
+
+
+ // Convert the lines to the UNIX encoding.
+ if (opt_unix) {
+ UnixConvert();
+ }
+
+ //
+ // Pre-compute ICU sort keys for the lines of the file.
+ //
+ int line;
+ int32_t t;
+
+ for (line=0; line<gNumFileLines; line++) {
+ t = ucol_getSortKey(gCol, gFileLines[line].name, -1, (unsigned char *)buf, sizeof(buf));
+ gFileLines[line].icuSortKey = new char[t];
+
+ if (t > (int32_t)sizeof(buf)) {
+ t = ucol_getSortKey(gCol, gFileLines[line].name, -1, (unsigned char *)gFileLines[line].icuSortKey , t);
+ }
+ else
+ {
+ memcpy(gFileLines[line].icuSortKey, buf, t);
+ }
+ }
+
+
+
+ //
+ // Pre-compute Windows sort keys for the lines of the file.
+ //
+ for (line=0; line<gNumFileLines; line++) {
+ t=LCMapStringW(gWinLCID, LCMAP_SORTKEY, gFileLines[line].name, -1, buf, sizeof(buf));
+ gFileLines[line].winSortKey = new char[t];
+ if (t > (int32_t)sizeof(buf)) {
+ t = LCMapStringW(gWinLCID, LCMAP_SORTKEY, gFileLines[line].name, -1, (unsigned short *)(gFileLines[line].winSortKey), t);
+ }
+ else
+ {
+ memcpy(gFileLines[line].winSortKey, buf, t);
+ }
+ }
+
+ //
+ // Pre-compute UNIX sort keys for the lines of the file.
+ //
+ if (opt_unix) {
+ for (line=0; line<gNumFileLines; line++) {
+ t=strxfrm((char *)buf, gFileLines[line].unixName, sizeof(buf));
+ gFileLines[line].unixSortKey = new char[t];
+ if (t > (int32_t)sizeof(buf)) {
+ t = strxfrm(gFileLines[line].unixSortKey, gFileLines[line].unixName, sizeof(buf));
+ }
+ else
+ {
+ memcpy(gFileLines[line].unixSortKey, buf, t);
+ }
+ }
+ }
+
+
+ //
+ // Dump file lines, CEs, Sort Keys if requested.
+ //
+ if (opt_dump) {
+ int i;
+ for (line=0; line<gNumFileLines; line++) {
+ for (i=0;;i++) {
+ UChar c = gFileLines[line].name[i];
+ if (c == 0)
+ break;
+ if (c < 0x20 || c > 0x7e) {
+ printf("\\u%.4x", c);
+ }
+ else {
+ printf("%c", c);
+ }
+ }
+ printf("\n");
+
+ printf(" CEs: ");
+ UCollationElements *CEiter = ucol_openElements(gCol, gFileLines[line].name, -1, &status);
+ int32_t ce;
+ i = 0;
+ for (;;) {
+ ce = ucol_next(CEiter, &status);
+ if (ce == UCOL_NULLORDER) {
+ break;
+ }
+ printf(" %.8x", ce);
+ if (++i > 8) {
+ printf("\n ");
+ i = 0;
+ }
+ }
+ printf("\n");
+ ucol_closeElements(CEiter);
+
+
+ printf(" ICU Sort Key: ");
+ for (i=0; ; i++) {
+ unsigned char c = gFileLines[line].icuSortKey[i];
+ printf("%02x ", c);
+ if (c == 0) {
+ break;
+ }
+ if (i > 0 && i % 20 == 0) {
+ printf("\n ");
+ }
+ }
+ printf("\n");
+ }
+ }
+
+
+ //
+ // Pre-sort the lines.
+ //
+ int i;
+ gSortedLines = new Line *[gNumFileLines];
+ for (i=0; i<gNumFileLines; i++) {
+ gSortedLines[i] = &gFileLines[i];
+ }
+
+ if (opt_win) {
+ qsort(gSortedLines, gNumFileLines, sizeof(Line *), Winstrcmp);
+ }
+ else if (opt_unix) {
+ qsort(gSortedLines, gNumFileLines, sizeof(Line *), UNIXstrcmp);
+ }
+ else /* ICU */
+ {
+ qsort(gSortedLines, gNumFileLines, sizeof(Line *), ICUstrcmp);
+ }
+
+
+ //
+ // Make up a randomized order, will be used for sorting tests.
+ //
+ gRandomLines = new Line *[gNumFileLines];
+ for (i=0; i<gNumFileLines; i++) {
+ gRandomLines[i] = &gFileLines[i];
+ }
+ qsort(gRandomLines, gNumFileLines, sizeof(Line *), ICURandomCmp);
+
+
+
+
+ //
+ // We've got the file read into memory. Go do something with it.
+ //
+
+ if (opt_qsort) doQSort();
+ if (opt_binsearch) doBinarySearch();
+ if (opt_keygen) doKeyGen();
+ if (opt_keyhist) doKeyHist();
+ if (opt_itertest) doIterTest();
+
+ return 0;
+
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/collationperf/readme.html b/Build/source/libs/icu/icu-4.6/test/perf/collationperf/readme.html
new file mode 100644
index 00000000000..72cb7d039d0
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/collationperf/readme.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">
+ <meta name="Copyright" content="Copyright (c) 2002-2008, International Business Machines Corporation and others. All Rights Reserved.">
+ <META NAME="GENERATOR" Content="Visual Page 2.0 for Windows">
+ <TITLE>collperf</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="white">
+
+<H2>collperf</H2>
+<P>collperf is a test program for comparing collation performance and key lengths of ICU, Windows native collation
+and Unix/POSIX collation. It operates on a file of lines (names, for example), and performs one of three tests:</P>
+
+<OL>
+ <LI>Sort Key generation. Report on key lengths and key generation times.
+ <LI>Binary search. Report the average time required to look up each of the names (file lines) from the file in
+ a sorted list of all of the names.
+ <LI>Quick Sort. Report the time required to sort the file in memory, using the C library qsort function. The file
+ order is randomized prior to the sort.
+</OL>
+
+<P>
+<P><B>Usage Summary</B></P>
+
+<BLOCKQUOTE>
+ <P>
+ <TABLE BORDER="0" WIDTH="100%" BGCOLOR="#FFFBF0">
+ <TR>
+ <TD WIDTH="100%">
+ <P><TT>collperf -help</TT>
+ <BLOCKQUOTE>
+ <PRE><TT>Usage: strperf options...
+-help Display this message.
+-file file_name utf-16 format file of names
+-locale name ICU locale to use. Default is en_US
+-langid 0x1234 Windows Language ID number. Default 0x409 (en_US)
+ see http://msdn.microsoft.com/library/psdk/winbase/nls_8xo3.htm
+-win Run test using Windows native services. (ICU is default)
+-unix Run test using Unix strxfrm, strcoll services.
+-uselen Use API with string lengths. Default is null-terminated strings
+-usekeys Run tests using sortkeys rather than strcoll
+-loop nnnn Loopcount for test. Adjust for reasonable total running time.
+-terse Terse numbers-only output. Intended for use by scripts.
+-french French accent ordering
+-norm Normalizing mode on
+-shifted Shifted mode
+-lower Lower case first
+-upper Upper case first
+-case Enable separate case level
+-level n Sort level, 1 to 5, for Primary, Secndary, Tertiary, Quaternary, Identical
+-binsearch Binary Search timing test
+-keygen Sort Key Generation timing test
+-qsort Quicksort timing test</TT></PRE>
+ </BLOCKQUOTE>
+ </TD>
+ </TR>
+ </TABLE>
+</P>
+</BLOCKQUOTE>
+
+<P><B>Example</B></P>
+
+<BLOCKQUOTE>
+ <P>
+ <TABLE BORDER="0" WIDTH="100%" BGCOLOR="#FFFBF0">
+ <TR>
+ <TD WIDTH="100%"><TT>C:\&gt;collperf -loop 200 -file latin.txt -keygen -shifted -level 4<BR>
+ file &quot;latin.txt&quot;, 7604 lines.<BR>
+ Sort Key Generation: total # of keys = 197704<BR>
+ Sort Key Generation: time per key = 4253 ns<BR>
+ Key Length / character = 1.730054</TT></TD>
+ </TR>
+ </TABLE>
+
+</BLOCKQUOTE>
+
+<P>
+
+</BODY>
+
+</HTML> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/collperf/CollPerf.pl b/Build/source/libs/icu/icu-4.6/test/perf/collperf/CollPerf.pl
new file mode 100755
index 00000000000..b665104b41f
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/collperf/CollPerf.pl
@@ -0,0 +1,95 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2005-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+use lib '../perldriver';
+
+require "../perldriver/Common.pl";
+
+use PerfFramework;
+
+# This test should be run on Windows.
+if (!$OnWindows) {
+ print "This test should be run on Windows.\n";
+ exit(1);
+}
+
+my $options = {
+ "title"=>"Collation performance: ICU,POSIX,and Win",
+ "headers"=>"ICU POSIX WIN",
+ "operationIs"=>"unicode String",
+ "passes"=>"1",
+ "time"=>"2",
+ #"outputType"=>"HTML",
+ "dataDir"=>$CollationDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p = $ICUPathLatest."/collperf/$WindowsPlatform/Release/collperf.exe";
+
+my $tests = {
+ "Key Gen null", ["$p TestIcu_KeyGen_null", "$p TestPosix_KeyGen_null", "$p TestWin_KeyGen_null"],
+ "qsort strcoll null", ["$p TestIcu_qsort_strcoll_null", "$p TestPosix_qsort_strcoll_null", "$p TestWin_qsort_CompareStringW_null"],
+ "qsort use key", ["$p TestIcu_qsort_usekey", "$p TestPosix_qsort_usekey", "$p TestWin_qsort_usekey"],
+ "Binary Search icu strcoll null", ["$p TestIcu_BinarySearch_strcoll_null", "$p TestPosix_BinarySearch_strcoll_null", "$p TestWin_BinarySearch_CompareStringW_null"],
+ "Binary Search icu use key", ["$p TestIcu_BinarySearch_usekey", "$p TestPosix_BinarySearch_usekey", "$p TestWin_BinarySearch_usekey"],
+ # These are the original test. They are commented out to so that the above test can run and compare certain aspects of collation.
+ #"Key Gen ICU null", ["$p TestIcu_KeyGen_null"],
+ #"Key Gen ICU len", ["$p TestIcu_KeyGen_len"],
+ #"Key Gen POSIX", ["$p TestPosix_KeyGen_null"],
+ #"Key Gen Win", ["$p TestWin_KeyGen_null"],
+ #"Iteration icu forward null", ["$p TestIcu_ForwardIter_null"],
+ #"Iteration icu forward len", ["$p TestIcu_ForwardIter_len"],
+ #"Iteration icu backward null", ["$p TestIcu_BackwardIter_null"],
+ #"Iteration icu backward len", ["$p TestIcu_BackwardIter_len"],
+ #"Iteration/all icu forward null", ["$p TestIcu_ForwardIter_all_null"],
+ #"Iteration/all icu forward len", ["$p TestIcu_ForwardIter_all_len"],
+ #"Iteration/all icu backward null", ["$p TestIcu_BackwardIter_all_null"],
+ #"Iteration/all icu backward len", ["$p TestIcu_BackwardIter_all_len"],
+ #"qsort icu strcoll null", ["$p TestIcu_qsort_strcoll_null"],
+ #"qsort icu strcoll len", ["$p TestIcu_qsort_strcoll_len"],
+ #"qsort icu use key", ["$p TestIcu_qsort_usekey"],
+ #"qsort posix strcoll null", ["$p TestPosix_qsort_strcoll_null"],
+ #"qsort posix use key", ["$p TestPosix_qsort_usekey"],
+ #"qsort win CompareStringW null", ["$p TestWin_qsort_CompareStringW_null"],
+ #"qsort win CompareStringW len", ["$p TestWin_qsort_CompareStringW_len"],
+ #"qsort win use key", ["$p TestWin_qsort_usekey"],
+ #"Binary Search icu strcoll null", ["$p TestIcu_BinarySearch_strcoll_null"],
+ #"Binary Search icu strcoll len", ["$p TestIcu_BinarySearch_strcoll_len"],
+ #"Binary Search icu use key", ["$p TestIcu_BinarySearch_usekey"],
+ #"Binary Search icu u_strcmp", ["$p TestIcu_BinarySearch_strcmp"],
+ #"Binary Search icu cmpCPO", ["$p TestIcu_BinarySearch_cmpCPO"],
+ #"Binary Search posix strcoll null", ["$p TestPosix_BinarySearch_strcoll_null"],
+ #"Binary Search posix use key", ["$p TestPosix_BinarySearch_usekey"],
+ #"Binary Search win CompareStringW null", ["$p TestWin_BinarySearch_CompareStringW_null"],
+ #"Binary Search win CompareStringW len", ["$p TestWin_BinarySearch_CompareStringW_len"],
+ #"Binary Search win use key", ["$p TestWin_BinarySearch_usekey"],
+ #"Binary Search win wcscmp", ["$p TestWin_BinarySearch_wcscmp"],
+ };
+
+my $dataFiles = {
+ "",
+ [
+ "TestNames_Asian.txt",
+ "TestNames_Chinese.txt",
+ "TestNames_Japanese.txt",
+ "TestNames_Japanese_h.txt",
+ "TestNames_Japanese_k.txt",
+ "TestNames_Korean.txt",
+ "TestNames_Latin.txt",
+ "Testnames_Russian.txt",
+ "TestNames_SerbianSH.txt",
+ "TestNames_SerbianSR.txt",
+ "TestNames_Simplified_Chinese.txt",
+ "TestNames_Thai.txt"
+ ]
+ };
+
+runTests($options, $tests, $dataFiles);
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/collperf/CollPerf_r.pl b/Build/source/libs/icu/icu-4.6/test/perf/collperf/CollPerf_r.pl
new file mode 100644
index 00000000000..a988ebcc115
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/collperf/CollPerf_r.pl
@@ -0,0 +1,79 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+use lib '../perldriver';
+
+require "../perldriver/Common.pl";
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"Collation performanceregression: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"unicode String",
+ "passes"=>"1",
+ "time"=>"2",
+ #"outputType"=>"HTML",
+ "dataDir"=>$CollationDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p1, $p2;
+
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious."/collperf/$WindowsPlatform/Release/collperf.exe";
+ $p2 = $ICUPathLatest."/collperf/$WindowsPlatform/Release/collperf.exe";
+} else {
+ $p1 = $ICUPathPrevious."/collperf/collperf";
+ $p2 = $ICUPathLatest."/collperf/collperf";
+}
+
+
+my $tests = {
+ "Key Gen ICU null", ["$p1 TestIcu_KeyGen_null", "$p2 TestIcu_KeyGen_null"],
+ "Key Gen ICU len", ["$p1 TestIcu_KeyGen_len", "$p2 TestIcu_KeyGen_len"],
+ "Iteration icu forward null", ["$p1 TestIcu_ForwardIter_null", "$p2 TestIcu_ForwardIter_null"],
+ "Iteration icu forward len", ["$p1 TestIcu_ForwardIter_len", "$p2 TestIcu_ForwardIter_len"],
+ "Iteration icu backward null", ["$p1 TestIcu_BackwardIter_null", "$p2 TestIcu_BackwardIter_null"],
+ "Iteration icu backward len", ["$p1 TestIcu_BackwardIter_len", "$p2 TestIcu_BackwardIter_len"],
+ "Iteration/all icu forward null", ["$p1 TestIcu_ForwardIter_all_null", "$p2 TestIcu_ForwardIter_all_null"],
+ "Iteration/all icu forward len", ["$p1 TestIcu_ForwardIter_all_len", "$p2 TestIcu_ForwardIter_all_len"],
+ "Iteration/all icu backward null", ["$p1 TestIcu_BackwardIter_all_null", "$p2 TestIcu_BackwardIter_all_null"],
+ "Iteration/all icu backward len", ["$p1 TestIcu_BackwardIter_all_len", "$p2 TestIcu_BackwardIter_all_len"],
+ "qsort icu strcoll null", ["$p1 TestIcu_qsort_strcoll_null", "$p2 TestIcu_qsort_strcoll_null"],
+ "qsort icu strcoll len", ["$p1 TestIcu_qsort_strcoll_len", "$p2 TestIcu_qsort_strcoll_len"],
+ "qsort icu use key", ["$p1 TestIcu_qsort_usekey", "$p2 TestIcu_qsort_usekey"],
+ "Binary Search icu strcoll null", ["$p1 TestIcu_BinarySearch_strcoll_null", "$p2 TestIcu_BinarySearch_strcoll_null"],
+ "Binary Search icu strcoll len", ["$p1 TestIcu_BinarySearch_strcoll_len", "$p2 TestIcu_BinarySearch_strcoll_len"],
+ "Binary Search icu use key", ["$p1 TestIcu_BinarySearch_usekey", "$p2 TestIcu_BinarySearch_usekey"],
+ "Binary Search icu u_strcmp", ["$p1 TestIcu_BinarySearch_strcmp", "$p2 TestIcu_BinarySearch_strcmp"],
+ "Binary Search icu cmpCPO", ["$p1 TestIcu_BinarySearch_cmpCPO", "$p2 TestIcu_BinarySearch_cmpCPO"],
+ };
+
+my $dataFiles = {
+ "",
+ [
+ "TestNames_Asian.txt",
+ "TestNames_Chinese.txt",
+ "TestNames_Japanese.txt",
+ "TestNames_Japanese_h.txt",
+ "TestNames_Japanese_k.txt",
+ "TestNames_Korean.txt",
+ "TestNames_Latin.txt",
+ "Testnames_Russian.txt",
+ "TestNames_SerbianSH.txt",
+ "TestNames_SerbianSR.txt",
+ "TestNames_Simplified_Chinese.txt",
+ "TestNames_Thai.txt"
+ ]
+ };
+
+runTests($options, $tests, $dataFiles);
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/collperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/collperf/Makefile.in
new file mode 100644
index 00000000000..fcc1615b3fb
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/collperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/collperf
+## Copyright (c) 2001-2006, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/collperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = collperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = collperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.cpp
new file mode 100644
index 00000000000..fd30f50bdea
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.cpp
@@ -0,0 +1,880 @@
+/********************************************************************
+* COPYRIGHT:
+* Copyright (C) 2001-2006 IBM, Inc. All Rights Reserved.
+*
+********************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <locale.h>
+#include <limits.h>
+#include <string.h>
+#include "unicode/uperf.h"
+#include "uoptions.h"
+#include "unicode/coll.h"
+#include <unicode/ucoleitr.h>
+
+
+
+/* To store an array of string<UNIT> in continue space.
+Since string<UNIT> itself is treated as an array of UNIT, this
+class will ease our memory management for an array of string<UNIT>.
+*/
+
+//template<typename UNIT>
+#define COMPATCT_ARRAY(CompactArrays, UNIT) \
+struct CompactArrays{\
+ CompactArrays(const CompactArrays & );\
+ CompactArrays & operator=(const CompactArrays & );\
+ int32_t count;/*total number of the strings*/ \
+ int32_t * index;/*relative offset in data*/ \
+ UNIT * data; /*the real space to hold strings*/ \
+ \
+ ~CompactArrays(){free(index);free(data);} \
+ CompactArrays():data(NULL), index(NULL), count(0){ \
+ index = (int32_t *) realloc(index, sizeof(int32_t)); \
+ index[0] = 0; \
+ } \
+ void append_one(int32_t theLen){ /*include terminal NULL*/ \
+ count++; \
+ index = (int32_t *) realloc(index, sizeof(int32_t) * (count + 1)); \
+ index[count] = index[count - 1] + theLen; \
+ data = (UNIT *) realloc(data, sizeof(UNIT) * index[count]); \
+ } \
+ UNIT * last(){return data + index[count - 1];} \
+ UNIT * dataOf(int32_t i){return data + index[i];} \
+ int32_t lengthOf(int i){return index[i+1] - index[i] - 1; } /*exclude terminating NULL*/ \
+};
+
+//typedef CompactArrays<UChar> CA_uchar;
+//typedef CompactArrays<char> CA_char;
+//typedef CompactArrays<uint8_t> CA_uint8;
+//typedef CompactArrays<WCHAR> CA_win_wchar;
+
+COMPATCT_ARRAY(CA_uchar, UChar)
+COMPATCT_ARRAY(CA_char, char)
+COMPATCT_ARRAY(CA_uint8, uint8_t)
+COMPATCT_ARRAY(CA_win_wchar, WCHAR)
+
+
+struct DataIndex {
+ static DWORD win_langid; // for qsort callback function
+ static UCollator * col; // for qsort callback function
+ uint8_t * icu_key;
+ UChar * icu_data;
+ int32_t icu_data_len;
+ char* posix_key;
+ char* posix_data;
+ int32_t posix_data_len;
+ char* win_key;
+ WCHAR * win_data;
+ int32_t win_data_len;
+};
+DWORD DataIndex::win_langid;
+UCollator * DataIndex::col;
+
+
+
+class CmdKeyGen : public UPerfFunction {
+ typedef void (CmdKeyGen::* Func)(int32_t);
+ enum{MAX_KEY_LENGTH = 5000};
+ UCollator * col;
+ DWORD win_langid;
+ int32_t count;
+ DataIndex * data;
+ Func fn;
+
+ union { // to save sapce
+ uint8_t icu_key[MAX_KEY_LENGTH];
+ char posix_key[MAX_KEY_LENGTH];
+ WCHAR win_key[MAX_KEY_LENGTH];
+ };
+public:
+ CmdKeyGen(UErrorCode, UCollator * col,DWORD win_langid, int32_t count, DataIndex * data,Func fn,int32_t)
+ :col(col),win_langid(win_langid), count(count), data(data), fn(fn){}
+
+ virtual long getOperationsPerIteration(){return count;}
+
+ virtual void call(UErrorCode* status){
+ for(int32_t i = 0; i< count; i++){
+ (this->*fn)(i);
+ }
+ }
+
+ void icu_key_null(int32_t i){
+ ucol_getSortKey(col, data[i].icu_data, -1, icu_key, MAX_KEY_LENGTH);
+ }
+
+ void icu_key_len(int32_t i){
+ ucol_getSortKey(col, data[i].icu_data, data[i].icu_data_len, icu_key, MAX_KEY_LENGTH);
+ }
+
+ // pre-generated in CollPerfTest::prepareData(), need not to check error here
+ void win_key_null(int32_t i){
+ //LCMAP_SORTsk 0x00000400 // WC sort sk (normalize)
+ LCMapStringW(win_langid, LCMAP_SORTKEY, data[i].win_data, -1, win_key, MAX_KEY_LENGTH);
+ }
+
+ void win_key_len(int32_t i){
+ LCMapStringW(win_langid, LCMAP_SORTKEY, data[i].win_data, data[i].win_data_len, win_key, MAX_KEY_LENGTH);
+ }
+
+ void posix_key_null(int32_t i){
+ strxfrm(posix_key, data[i].posix_data, MAX_KEY_LENGTH);
+ }
+};
+
+
+class CmdIter : public UPerfFunction {
+ typedef void (CmdIter::* Func)(UErrorCode* , int32_t );
+ int32_t count;
+ CA_uchar * data;
+ Func fn;
+ UCollationElements *iter;
+ int32_t exec_count;
+public:
+ CmdIter(UErrorCode & status, UCollator * col, int32_t count, CA_uchar *data, Func fn, int32_t,int32_t)
+ :count(count), data(data), fn(fn){
+ exec_count = 0;
+ UChar dummytext[] = {0, 0};
+ iter = ucol_openElements(col, NULL, 0, &status);
+ ucol_setText(iter, dummytext, 1, &status);
+ }
+ ~CmdIter(){
+ ucol_closeElements(iter);
+ }
+
+ virtual long getOperationsPerIteration(){return exec_count ? exec_count : 1;}
+
+ virtual void call(UErrorCode* status){
+ exec_count = 0;
+ for(int32_t i = 0; i< count; i++){
+ (this->*fn)(status, i);
+ }
+ }
+
+ void icu_forward_null(UErrorCode* status, int32_t i){
+ ucol_setText(iter, data->dataOf(i), -1, status);
+ while (ucol_next(iter, status) != UCOL_NULLORDER) exec_count++;
+ }
+
+ void icu_forward_len(UErrorCode* status, int32_t i){
+ ucol_setText(iter, data->dataOf(i), data->lengthOf(i) , status);
+ while (ucol_next(iter, status) != UCOL_NULLORDER) exec_count++;
+ }
+
+ void icu_backward_null(UErrorCode* status, int32_t i){
+ ucol_setText(iter, data->dataOf(i), -1, status);
+ while (ucol_previous(iter, status) != UCOL_NULLORDER) exec_count++;
+ }
+
+ void icu_backward_len(UErrorCode* status, int32_t i){
+ ucol_setText(iter, data->dataOf(i), data->lengthOf(i) , status);
+ while (ucol_previous(iter, status) != UCOL_NULLORDER) exec_count++;
+ }
+};
+
+class CmdIterAll : public UPerfFunction {
+ typedef void (CmdIterAll::* Func)(UErrorCode* status);
+ int32_t count;
+ UChar * data;
+ Func fn;
+ UCollationElements *iter;
+ int32_t exec_count;
+
+public:
+ enum CALL {forward_null, forward_len, backward_null, backward_len};
+
+ ~CmdIterAll(){
+ ucol_closeElements(iter);
+ }
+ CmdIterAll(UErrorCode & status, UCollator * col, int32_t count, UChar * data, CALL call,int32_t,int32_t)
+ :count(count),data(data)
+ {
+ exec_count = 0;
+ if (call == forward_null || call == backward_null) {
+ iter = ucol_openElements(col, data, -1, &status);
+ } else {
+ iter = ucol_openElements(col, data, count, &status);
+ }
+
+ if (call == forward_null || call == forward_len){
+ fn = &CmdIterAll::icu_forward_all;
+ } else {
+ fn = &CmdIterAll::icu_backward_all;
+ }
+ }
+ virtual long getOperationsPerIteration(){return exec_count ? exec_count : 1;}
+
+ virtual void call(UErrorCode* status){
+ (this->*fn)(status);
+ }
+
+ void icu_forward_all(UErrorCode* status){
+ int strlen = count - 5;
+ int count5 = 5;
+ int strindex = 0;
+ ucol_setOffset(iter, strindex, status);
+ while (TRUE) {
+ if (ucol_next(iter, status) == UCOL_NULLORDER) {
+ break;
+ }
+ exec_count++;
+ count5 --;
+ if (count5 == 0) {
+ strindex += 10;
+ if (strindex > strlen) {
+ break;
+ }
+ ucol_setOffset(iter, strindex, status);
+ count5 = 5;
+ }
+ }
+ }
+
+ void icu_backward_all(UErrorCode* status){
+ int strlen = count;
+ int count5 = 5;
+ int strindex = 5;
+ ucol_setOffset(iter, strindex, status);
+ while (TRUE) {
+ if (ucol_previous(iter, status) == UCOL_NULLORDER) {
+ break;
+ }
+ exec_count++;
+ count5 --;
+ if (count5 == 0) {
+ strindex += 10;
+ if (strindex > strlen) {
+ break;
+ }
+ ucol_setOffset(iter, strindex, status);
+ count5 = 5;
+ }
+ }
+ }
+
+};
+
+struct CmdQsort : public UPerfFunction{
+
+ static int q_random(const void * a, const void * b){
+ uint8_t * key_a = ((DataIndex *)a)->icu_key;
+ uint8_t * key_b = ((DataIndex *)b)->icu_key;
+
+ int val_a = 0;
+ int val_b = 0;
+ while (*key_a != 0) {val_a += val_a*37 + *key_a++;}
+ while (*key_b != 0) {val_b += val_b*37 + *key_b++;}
+ return val_a - val_b;
+ }
+
+#define QCAST() \
+ DataIndex * da = (DataIndex *) a; \
+ DataIndex * db = (DataIndex *) b; \
+ ++exec_count
+
+ static int icu_strcoll_null(const void *a, const void *b){
+ QCAST();
+ return ucol_strcoll(da->col, da->icu_data, -1, db->icu_data, -1) - UCOL_EQUAL;
+ }
+
+ static int icu_strcoll_len(const void *a, const void *b){
+ QCAST();
+ return ucol_strcoll(da->col, da->icu_data, da->icu_data_len, db->icu_data, db->icu_data_len) - UCOL_EQUAL;
+ }
+
+ static int icu_cmpkey (const void *a, const void *b){
+ QCAST();
+ return strcmp((char *) da->icu_key, (char *) db->icu_key);
+ }
+
+ static int win_cmp_null(const void *a, const void *b) {
+ QCAST();
+ //CSTR_LESS_THAN 1
+ //CSTR_EQUAL 2
+ //CSTR_GREATER_THAN 3
+ int t = CompareStringW(da->win_langid, 0, da->win_data, -1, db->win_data, -1);
+ if (t == 0){
+ fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
+ exit(-1);
+ } else{
+ return t - CSTR_EQUAL;
+ }
+ }
+
+ static int win_cmp_len(const void *a, const void *b) {
+ QCAST();
+ int t = CompareStringW(da->win_langid, 0, da->win_data, da->win_data_len, db->win_data, db->win_data_len);
+ if (t == 0){
+ fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
+ exit(-1);
+ } else{
+ return t - CSTR_EQUAL;
+ }
+ }
+
+#define QFUNC(name, func, data) \
+ static int name (const void *a, const void *b){ \
+ QCAST(); \
+ return func(da->data, db->data); \
+ }
+
+ QFUNC(posix_strcoll_null, strcoll, posix_data)
+ QFUNC(posix_cmpkey, strcmp, posix_key)
+ QFUNC(win_cmpkey, strcmp, win_key)
+ QFUNC(win_wcscmp, wcscmp, win_data)
+ QFUNC(icu_strcmp, u_strcmp, icu_data)
+ QFUNC(icu_cmpcpo, u_strcmpCodePointOrder, icu_data)
+
+private:
+ static int32_t exec_count; // potential muilt-thread problem
+
+ typedef int (* Func)(const void *, const void *);
+
+ Func fn;
+ void * base; //Start of target array.
+ int32_t num; //Array size in elements.
+ int32_t width; //Element size in bytes.
+
+ void * backup; //copy source of base
+public:
+ CmdQsort(UErrorCode & status,void *theBase, int32_t num, int32_t width, Func fn, int32_t,int32_t)
+ :backup(theBase),num(num),width(width),fn(fn){
+ base = malloc(num * width);
+ time_empty(100, &status); // warm memory/cache
+ }
+
+ ~CmdQsort(){
+ free(base);
+ }
+
+ void empty_call(){
+ exec_count = 0;
+ memcpy(base, backup, num * width);
+ }
+
+ double time_empty(int32_t n, UErrorCode* status) {
+ UTimer start, stop;
+ utimer_getTime(&start);
+ while (n-- > 0) {
+ empty_call();
+ }
+ utimer_getTime(&stop);
+ return utimer_getDeltaSeconds(&start,&stop); // ms
+ }
+
+ virtual void call(UErrorCode* status){
+ exec_count = 0;
+ memcpy(base, backup, num * width);
+ qsort(base, num, width, fn);
+ }
+ virtual double time(int32_t n, UErrorCode* status) {
+ double t1 = time_empty(n,status);
+ double t2 = UPerfFunction::time(n, status);
+ return t2-t1;// < 0 ? t2 : t2-t1;
+ }
+
+ virtual long getOperationsPerIteration(){ return exec_count?exec_count:1;}
+};
+int32_t CmdQsort::exec_count;
+
+
+class CmdBinSearch : public UPerfFunction{
+public:
+ typedef int (CmdBinSearch::* Func)(int, int);
+
+ UCollator * col;
+ DWORD win_langid;
+ int32_t count;
+ DataIndex * rnd;
+ DataIndex * ord;
+ Func fn;
+ int32_t exec_count;
+
+ CmdBinSearch(UErrorCode, UCollator * col,DWORD win_langid,int32_t count,DataIndex * rnd,DataIndex * ord,Func fn)
+ :col(col),win_langid(win_langid), count(count), rnd(rnd), ord(ord), fn(fn),exec_count(0){}
+
+
+ virtual void call(UErrorCode* status){
+ exec_count = 0;
+ for(int32_t i = 0; i< count; i++){ // search all data
+ binary_search(i);
+ }
+ }
+ virtual long getOperationsPerIteration(){ return exec_count?exec_count:1;}
+
+ void binary_search(int32_t random) {
+ int low = 0;
+ int high = count - 1;
+ int guess;
+ int last_guess = -1;
+ int r;
+ while (TRUE) {
+ guess = (high + low)/2;
+ if (last_guess == guess) break; // nothing to search
+
+ r = (this->*fn)(random, guess);
+ exec_count++;
+
+ if (r == 0)
+ return; // found, search end.
+ if (r < 0) {
+ high = guess;
+ } else {
+ low = guess;
+ }
+ last_guess = guess;
+ }
+ }
+
+ int icu_strcoll_null(int32_t i, int32_t j){
+ return ucol_strcoll(col, rnd[i].icu_data, -1, ord[j].icu_data,-1);
+ }
+
+ int icu_strcoll_len(int32_t i, int32_t j){
+ return ucol_strcoll(col, rnd[i].icu_data, rnd[i].icu_data_len, ord[j].icu_data, ord[j].icu_data_len);
+ }
+
+ int icu_cmpkey(int32_t i, int32_t j) {
+ return strcmp( (char *) rnd[i].icu_key, (char *) ord[j].icu_key );
+ }
+
+ int win_cmp_null(int32_t i, int32_t j) {
+ int t = CompareStringW(win_langid, 0, rnd[i].win_data, -1, ord[j].win_data, -1);
+ if (t == 0){
+ fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
+ exit(-1);
+ } else{
+ return t - CSTR_EQUAL;
+ }
+ }
+
+ int win_cmp_len(int32_t i, int32_t j) {
+ int t = CompareStringW(win_langid, 0, rnd[i].win_data, rnd[i].win_data_len, ord[j].win_data, ord[j].win_data_len);
+ if (t == 0){
+ fprintf(stderr, "CompareStringW error, error number %x\n", GetLastError());
+ exit(-1);
+ } else{
+ return t - CSTR_EQUAL;
+ }
+ }
+
+#define BFUNC(name, func, data) \
+ int name(int32_t i, int32_t j) { \
+ return func(rnd[i].data, ord[j].data); \
+ }
+
+ BFUNC(posix_strcoll_null, strcoll, posix_data)
+ BFUNC(posix_cmpkey, strcmp, posix_key)
+ BFUNC(win_cmpkey, strcmp, win_key)
+ BFUNC(win_wcscmp, wcscmp, win_data)
+ BFUNC(icu_strcmp, u_strcmp, icu_data)
+ BFUNC(icu_cmpcpo, u_strcmpCodePointOrder, icu_data)
+};
+
+class CollPerfTest : public UPerfTest {
+public:
+ UCollator * col;
+ DWORD win_langid;
+
+ UChar * icu_data_all;
+ int32_t icu_data_all_len;
+
+ int32_t count;
+ CA_uchar * icu_data;
+ CA_uint8 * icu_key;
+ CA_char * posix_data;
+ CA_char * posix_key;
+ CA_win_wchar * win_data;
+ CA_char * win_key;
+
+ DataIndex * rnd_index; // random by icu key
+ DataIndex * ord_win_data;
+ DataIndex * ord_win_key;
+ DataIndex * ord_posix_data;
+ DataIndex * ord_posix_key;
+ DataIndex * ord_icu_data;
+ DataIndex * ord_icu_key;
+ DataIndex * ord_win_wcscmp;
+ DataIndex * ord_icu_strcmp;
+ DataIndex * ord_icu_cmpcpo;
+
+ virtual ~CollPerfTest(){
+ ucol_close(col);
+ delete [] icu_data_all;
+ delete icu_data;
+ delete icu_key;
+ delete posix_data;
+ delete posix_key;
+ delete win_data;
+ delete win_key;
+ delete[] rnd_index;
+ delete[] ord_win_data;
+ delete[] ord_win_key;
+ delete[] ord_posix_data;
+ delete[] ord_posix_key;
+ delete[] ord_icu_data;
+ delete[] ord_icu_key;
+ delete[] ord_win_wcscmp;
+ delete[] ord_icu_strcmp;
+ delete[] ord_icu_cmpcpo;
+ }
+
+ CollPerfTest(int32_t argc, const char* argv[], UErrorCode& status):UPerfTest(argc, argv, status){
+ col = NULL;
+ icu_data_all = NULL;
+ icu_data = NULL;
+ icu_key = NULL;
+ posix_data = NULL;
+ posix_key = NULL;
+ win_data =NULL;
+ win_key = NULL;
+
+ rnd_index = NULL;
+ ord_win_data= NULL;
+ ord_win_key= NULL;
+ ord_posix_data= NULL;
+ ord_posix_key= NULL;
+ ord_icu_data= NULL;
+ ord_icu_key= NULL;
+ ord_win_wcscmp = NULL;
+ ord_icu_strcmp = NULL;
+ ord_icu_cmpcpo = NULL;
+
+ if (U_FAILURE(status)){
+ return;
+ }
+
+ // Parse additional arguments
+
+ UOption options[] = {
+ UOPTION_DEF("langid", 'i', UOPT_REQUIRES_ARG), // Windows Language ID number.
+ UOPTION_DEF("rulefile", 'r', UOPT_REQUIRES_ARG), // --rulefile <filename>
+ // Collation related arguments. All are optional.
+ // To simplify parsing, two choice arguments are disigned as NO_ARG.
+ // The default value is UPPER word in the comment
+ UOPTION_DEF("c_french", 'f', UOPT_NO_ARG), // --french <on | OFF>
+ UOPTION_DEF("c_alternate", 'a', UOPT_NO_ARG), // --alternate <NON_IGNORE | shifted>
+ UOPTION_DEF("c_casefirst", 'c', UOPT_REQUIRES_ARG), // --casefirst <lower | upper | OFF>
+ UOPTION_DEF("c_caselevel", 'l', UOPT_NO_ARG), // --caselevel <on | OFF>
+ UOPTION_DEF("c_normal", 'n', UOPT_NO_ARG), // --normal <on | OFF>
+ UOPTION_DEF("c_strength", 's', UOPT_REQUIRES_ARG), // --strength <1-5>
+ };
+ int32_t opt_len = (sizeof(options)/sizeof(options[0]));
+ enum {i, r,f,a,c,l,n,s}; // The buffer between the option items' order and their references
+
+ _remainingArgc = u_parseArgs(_remainingArgc, (char**)argv, opt_len, options);
+
+ if (_remainingArgc < 0){
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+
+ if (locale == NULL){
+ locale = "en_US"; // set default locale
+ }
+
+ //#ifdef U_WINDOWS
+ if (options[i].doesOccur) {
+ char *endp;
+ int tmp = strtol(options[i].value, &endp, 0);
+ if (endp == options[i].value) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ win_langid = MAKELCID(tmp, SORT_DEFAULT);
+ } else {
+ win_langid = uloc_getLCID(locale);
+ }
+ //#endif
+
+ // Set up an ICU collator
+ if (options[r].doesOccur) {
+ // TODO: implement it
+ } else {
+ col = ucol_open(locale, &status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+ }
+
+ if (options[f].doesOccur) {
+ ucol_setAttribute(col, UCOL_FRENCH_COLLATION, UCOL_ON, &status);
+ } else {
+ ucol_setAttribute(col, UCOL_FRENCH_COLLATION, UCOL_OFF, &status);
+ }
+
+ if (options[a].doesOccur) {
+ ucol_setAttribute(col, UCOL_ALTERNATE_HANDLING, UCOL_SHIFTED, &status);
+ }
+
+ if (options[c].doesOccur) { // strcmp() has i18n encoding problem
+ if (strcmp("lower", options[c].value) == 0){
+ ucol_setAttribute(col, UCOL_CASE_FIRST, UCOL_LOWER_FIRST, &status);
+ } else if (strcmp("upper", options[c].value) == 0) {
+ ucol_setAttribute(col, UCOL_CASE_FIRST, UCOL_UPPER_FIRST, &status);
+ } else {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ }
+
+ if (options[l].doesOccur){
+ ucol_setAttribute(col, UCOL_CASE_LEVEL, UCOL_ON, &status);
+ }
+
+ if (options[n].doesOccur){
+ ucol_setAttribute(col, UCOL_NORMALIZATION_MODE, UCOL_ON, &status);
+ }
+
+ if (options[s].doesOccur) {
+ char *endp;
+ int tmp = strtol(options[l].value, &endp, 0);
+ if (endp == options[l].value) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ switch (tmp) {
+ case 1: ucol_setAttribute(col, UCOL_STRENGTH, UCOL_PRIMARY, &status); break;
+ case 2: ucol_setAttribute(col, UCOL_STRENGTH, UCOL_SECONDARY, &status); break;
+ case 3: ucol_setAttribute(col, UCOL_STRENGTH, UCOL_TERTIARY, &status); break;
+ case 4: ucol_setAttribute(col, UCOL_STRENGTH, UCOL_QUATERNARY, &status); break;
+ case 5: ucol_setAttribute(col, UCOL_STRENGTH, UCOL_IDENTICAL, &status); break;
+ default: status = U_ILLEGAL_ARGUMENT_ERROR; return;
+ }
+ }
+ prepareData(status);
+ }
+
+ //to avoid use the annoying 'id' in TESTCASE(id,test) macro or the like
+#define TEST(testname, classname, arg1, arg2, arg3, arg4, arg5, arg6) \
+ if(temp == index) {\
+ name = #testname;\
+ if (exec) {\
+ UErrorCode status = U_ZERO_ERROR;\
+ UPerfFunction * t = new classname(status,arg1, arg2, arg3, arg4, arg5, arg6);\
+ if (U_FAILURE(status)) {\
+ delete t;\
+ return NULL;\
+ } else {\
+ return t;\
+ }\
+ } else {\
+ return NULL;\
+ }\
+ }\
+ temp++\
+
+
+ virtual UPerfFunction* runIndexedTest( /*[in]*/int32_t index, /*[in]*/UBool exec, /*[out]*/const char* &name, /*[in]*/ char* par = NULL ){
+ int temp = 0;
+
+#define TEST_KEYGEN(testname, func)\
+ TEST(testname, CmdKeyGen, col, win_langid, count, rnd_index, &CmdKeyGen::func, 0)
+ TEST_KEYGEN(TestIcu_KeyGen_null, icu_key_null);
+ TEST_KEYGEN(TestIcu_KeyGen_len, icu_key_len);
+ TEST_KEYGEN(TestPosix_KeyGen_null, posix_key_null);
+ TEST_KEYGEN(TestWin_KeyGen_null, win_key_null);
+ TEST_KEYGEN(TestWin_KeyGen_len, win_key_len);
+
+#define TEST_ITER(testname, func)\
+ TEST(testname, CmdIter, col, count, icu_data, &CmdIter::func,0,0)
+ TEST_ITER(TestIcu_ForwardIter_null, icu_forward_null);
+ TEST_ITER(TestIcu_ForwardIter_len, icu_forward_len);
+ TEST_ITER(TestIcu_BackwardIter_null, icu_backward_null);
+ TEST_ITER(TestIcu_BackwardIter_len, icu_backward_len);
+
+#define TEST_ITER_ALL(testname, func)\
+ TEST(testname, CmdIterAll, col, icu_data_all_len, icu_data_all, CmdIterAll::func,0,0)
+ TEST_ITER_ALL(TestIcu_ForwardIter_all_null, forward_null);
+ TEST_ITER_ALL(TestIcu_ForwardIter_all_len, forward_len);
+ TEST_ITER_ALL(TestIcu_BackwardIter_all_null, backward_null);
+ TEST_ITER_ALL(TestIcu_BackwardIter_all_len, backward_len);
+
+#define TEST_QSORT(testname, func)\
+ TEST(testname, CmdQsort, rnd_index, count, sizeof(DataIndex), CmdQsort::func,0,0)
+ TEST_QSORT(TestIcu_qsort_strcoll_null, icu_strcoll_null);
+ TEST_QSORT(TestIcu_qsort_strcoll_len, icu_strcoll_len);
+ TEST_QSORT(TestIcu_qsort_usekey, icu_cmpkey);
+ TEST_QSORT(TestPosix_qsort_strcoll_null, posix_strcoll_null);
+ TEST_QSORT(TestPosix_qsort_usekey, posix_cmpkey);
+ TEST_QSORT(TestWin_qsort_CompareStringW_null, win_cmp_null);
+ TEST_QSORT(TestWin_qsort_CompareStringW_len, win_cmp_len);
+ TEST_QSORT(TestWin_qsort_usekey, win_cmpkey);
+
+#define TEST_BIN(testname, func)\
+ TEST(testname, CmdBinSearch, col, win_langid, count, rnd_index, ord_icu_key, &CmdBinSearch::func)
+ TEST_BIN(TestIcu_BinarySearch_strcoll_null, icu_strcoll_null);
+ TEST_BIN(TestIcu_BinarySearch_strcoll_len, icu_strcoll_len);
+ TEST_BIN(TestIcu_BinarySearch_usekey, icu_cmpkey);
+ TEST_BIN(TestIcu_BinarySearch_strcmp, icu_strcmp);
+ TEST_BIN(TestIcu_BinarySearch_cmpCPO, icu_cmpcpo);
+ TEST_BIN(TestPosix_BinarySearch_strcoll_null, posix_strcoll_null);
+ TEST_BIN(TestPosix_BinarySearch_usekey, posix_cmpkey);
+ TEST_BIN(TestWin_BinarySearch_CompareStringW_null, win_cmp_null);
+ TEST_BIN(TestWin_BinarySearch_CompareStringW_len, win_cmp_len);
+ TEST_BIN(TestWin_BinarySearch_usekey, win_cmpkey);
+ TEST_BIN(TestWin_BinarySearch_wcscmp, win_wcscmp);
+
+ name="";
+ return NULL;
+ }
+
+
+
+ void prepareData(UErrorCode& status){
+ if(U_FAILURE(status)) return;
+ if (icu_data) return; // prepared
+
+ icu_data = new CA_uchar();
+
+ // Following code is borrowed from UPerfTest::getLines();
+ const UChar* line=NULL;
+ int32_t len =0;
+ for (;;) {
+ line = ucbuf_readline(ucharBuf,&len,&status);
+ if(line == NULL || U_FAILURE(status)){break;}
+
+ // Refer to the source code of ucbuf_readline()
+ // 1. 'len' includs the line terminal symbols
+ // 2. The length of the line terminal symbols is only one character
+ // 3. The Windows CR LF line terminal symbols will be converted to CR
+
+ if (len == 1) {
+ continue; //skip empty line
+ } else {
+ icu_data->append_one(len);
+ memcpy(icu_data->last(), line, len * sizeof(UChar));
+ icu_data->last()[len -1] = NULL;
+ }
+ }
+ if(U_FAILURE(status)) return;
+
+ // UTF-16 -> UTF-8 conversion.
+ UConverter *conv = ucnv_open("utf-8", &status); // just UTF-8 for now.
+ if (U_FAILURE(status)) return;
+
+ count = icu_data->count;
+
+ icu_data_all_len = icu_data->index[count]; // includes all NULLs
+ icu_data_all_len -= count; // excludes all NULLs
+ icu_data_all_len += 1; // the terminal NULL
+ icu_data_all = new UChar[icu_data_all_len];
+ icu_data_all[icu_data_all_len - 1] = 0; //the terminal NULL
+
+ icu_key = new CA_uint8;
+ win_data = new CA_win_wchar;
+ win_key = new CA_char;
+ posix_data = new CA_char;
+ posix_key = new CA_char;
+ rnd_index = new DataIndex[count];
+ DataIndex::win_langid = win_langid;
+ DataIndex::col = col;
+
+
+ UChar * p = icu_data_all;
+ int32_t s;
+ int32_t t;
+ for (int i=0; i < count; i++) {
+ // ICU all data
+ s = sizeof(UChar) * icu_data->lengthOf(i);
+ memcpy(p, icu_data->dataOf(i), s);
+ p += icu_data->lengthOf(i);
+
+ // ICU data
+
+ // ICU key
+ s = ucol_getSortKey(col, icu_data->dataOf(i), -1,NULL, 0);
+ icu_key->append_one(s);
+ t = ucol_getSortKey(col, icu_data->dataOf(i), -1,icu_key->last(), s);
+ if (t != s) {status = U_INVALID_FORMAT_ERROR;return;}
+
+ // POSIX data
+ s = ucnv_fromUChars(conv,NULL, 0, icu_data->dataOf(i), icu_data->lengthOf(i), &status);
+ if (status == U_BUFFER_OVERFLOW_ERROR || status == U_ZERO_ERROR){
+ status = U_ZERO_ERROR;
+ } else {
+ return;
+ }
+ posix_data->append_one(s + 1); // plus terminal NULL
+ t = ucnv_fromUChars(conv,posix_data->last(), s, icu_data->dataOf(i), icu_data->lengthOf(i), &status);
+ if (U_FAILURE(status)) return;
+ if ( t != s){status = U_INVALID_FORMAT_ERROR;return;}
+ posix_data->last()[s] = 0;
+
+ // POSIX key
+ s = strxfrm(NULL, posix_data->dataOf(i), 0);
+ if (s == INT_MAX){status = U_INVALID_FORMAT_ERROR;return;}
+ posix_key->append_one(s);
+ t = strxfrm(posix_key->last(), posix_data->dataOf(i), s);
+ if (t != s) {status = U_INVALID_FORMAT_ERROR;return;}
+
+ // Win data
+ s = icu_data->lengthOf(i) + 1; // plus terminal NULL
+ win_data->append_one(s);
+ memcpy(win_data->last(), icu_data->dataOf(i), sizeof(WCHAR) * s);
+
+ // Win key
+ s = LCMapStringW(win_langid, LCMAP_SORTKEY, win_data->dataOf(i), win_data->lengthOf(i), NULL,0);
+ if (s == 0) {status = U_INVALID_FORMAT_ERROR;return;}
+ win_key->append_one(s);
+ t = LCMapStringW(win_langid, LCMAP_SORTKEY, win_data->dataOf(i), win_data->lengthOf(i), (WCHAR *)(win_key->last()),s);
+ if (t != s) {status = U_INVALID_FORMAT_ERROR;return;}
+
+ };
+
+ // append_one() will make points shifting, should not merge following code into previous iteration
+ for (int i=0; i < count; i++) {
+ rnd_index[i].icu_key = icu_key->dataOf(i);
+ rnd_index[i].icu_data = icu_data->dataOf(i);
+ rnd_index[i].icu_data_len = icu_data->lengthOf(i);
+ rnd_index[i].posix_key = posix_key->last();
+ rnd_index[i].posix_data = posix_data->dataOf(i);
+ rnd_index[i].posix_data_len = posix_data->lengthOf(i);
+ rnd_index[i].win_key = win_key->dataOf(i);
+ rnd_index[i].win_data = win_data->dataOf(i);
+ rnd_index[i].win_data_len = win_data->lengthOf(i);
+ };
+
+ ucnv_close(conv);
+ qsort(rnd_index, count, sizeof(DataIndex), CmdQsort::q_random);
+
+#define SORT(data, func) \
+ data = new DataIndex[count];\
+ memcpy(data, rnd_index, count * sizeof(DataIndex));\
+ qsort(data, count, sizeof(DataIndex), CmdQsort::func)
+
+ SORT(ord_icu_data, icu_strcoll_len);
+ SORT(ord_icu_key, icu_cmpkey);
+ SORT(ord_posix_data, posix_strcoll_null);
+ SORT(ord_posix_key, posix_cmpkey);
+ SORT(ord_win_data, win_cmp_len);
+ SORT(ord_win_key, win_cmpkey);
+ SORT(ord_win_wcscmp, win_wcscmp);
+ SORT(ord_icu_strcmp, icu_strcmp);
+ SORT(ord_icu_cmpcpo, icu_cmpcpo);
+ }
+};
+
+
+int main(int argc, const char *argv[])
+{
+
+ UErrorCode status = U_ZERO_ERROR;
+ CollPerfTest test(argc, argv, status);
+
+ if (U_FAILURE(status)){
+ printf("The error is %s\n", u_errorName(status));
+ //TODO: print usage here
+ return status;
+ }
+
+ if (test.run() == FALSE){
+ fprintf(stderr, "FAILED: Tests could not be run please check the "
+ "arguments.\n");
+ return -1;
+ }
+ return 0;
+}
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.vcxproj
new file mode 100644
index 00000000000..ba7cf71fcd8
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.vcxproj
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{01807B4A-E3B5-4B97-A7F3-207746DCD71E}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/collperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/collperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/collperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/collperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/collperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/collperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/collperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/collperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/collperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x86\Release/collperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icuin.lib;icutest.lib;icutu.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/collperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/collperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/collperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x64\Release/collperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icuin.lib;icutest.lib;icutu.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/collperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/collperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="collperf.cpp">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.vcxproj.filters
new file mode 100644
index 00000000000..04071e5f58a
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/collperf/collperf.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{fa058875-0da5-47e4-8627-a85131f6bb6a}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{2471579a-b2f5-4ab7-8161-332fceecb50d}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{8c0b9dd6-ed34-4ca0-8518-f0f4712d3d4f}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="collperf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/convperf/ConvPerf_r.pl b/Build/source/libs/icu/icu-4.6/test/perf/convperf/ConvPerf_r.pl
new file mode 100644
index 00000000000..a5b8a46f470
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/convperf/ConvPerf_r.pl
@@ -0,0 +1,68 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines
+# * Corporation and others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+# This test only works on Windows.
+if (!$OnWindows) {
+ print "This test only works on Windows.\n";
+ exit(1);
+}
+
+my $options = {
+ "title"=>"Conversion performance regression: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"code point",
+ "timePerOperationIs"=>"Time per code point",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>"Not Using Data Files",
+ "outputDir"=>"../results"
+ };
+
+# programs
+
+my $p1 = $ICUPathPrevious."/convperf/$WindowsPlatform/Release/convperf.exe"; # Previous
+my $p2 = $ICUPathLatest."/convperf/$WindowsPlatform/Release/convperf.exe"; # Latest
+
+my $dataFiles = "";
+
+
+my $tests = {
+ "UTF-8 From Unicode", ["$p1 TestICU_UTF8_FromUnicode" , "$p2 TestICU_UTF8_FromUnicode" ],
+ "UTF-8 To Unicode", ["$p1 TestICU_UTF8_ToUnicode" , "$p2 TestICU_UTF8_ToUnicode" ],
+ ####
+ "ISO-8859-1 From Unicode", ["$p1 TestICU_Latin1_FromUnicode" , "$p2 TestICU_Latin1_FromUnicode" ],
+ "ISO-8859-1 To Unicode", ["$p1 TestICU_Latin1_ToUnicode" , "$p2 TestICU_Latin1_ToUnicode" ],
+ ####
+ "Shift-JIS From Unicode", ["$p1 TestICU_SJIS_FromUnicode" , "$p2 TestICU_SJIS_FromUnicode" ],
+ "Shift-JIS To Unicode", ["$p1 TestICU_SJIS_ToUnicode" , "$p2 TestICU_SJIS_ToUnicode" ],
+ ####
+ "EUC-JP From Unicode", ["$p1 TestICU_EUCJP_FromUnicode" , "$p2 TestICU_EUCJP_FromUnicode" ],
+ "EUC-JP To Unicode", ["$p1 TestICU_EUCJP_ToUnicode" , "$p2 TestICU_EUCJP_ToUnicode" ],
+ ####
+ "GB2312 From Unicode", ["$p1 TestICU_GB2312_FromUnicode" , "$p2 TestICU_GB2312_FromUnicode" ],
+ "GB2312 To Unicode", ["$p1 TestICU_GB2312_ToUnicode" , "$p2 TestICU_GB2312_ToUnicode" ],
+ ####
+ "ISO2022KR From Unicode", ["$p1 TestICU_ISO2022KR_FromUnicode", "$p2 TestICU_ISO2022KR_FromUnicode" ],
+ "ISO2022KR To Unicode", ["$p1 TestICU_ISO2022KR_ToUnicode" , "$p2 TestICU_ISO2022KR_ToUnicode" ],
+ ####
+ "ISO2022JP From Unicode", ["$p1 TestICU_ISO2022JP_FromUnicode", "$p2 TestICU_ISO2022JP_FromUnicode" ],
+ "ISO2022JP To Unicode", ["$p1 TestICU_ISO2022JP_ToUnicode" , "$p2 TestICU_ISO2022JP_ToUnicode" ],
+ };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/convperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/convperf/Makefile.in
new file mode 100644
index 00000000000..b2ec30bc698
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/convperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/collperf
+## Copyright (c) 2001-2007, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/convperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = collperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = convperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.cpp
new file mode 100644
index 00000000000..dabbef7f6ef
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.cpp
@@ -0,0 +1,654 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2005, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+/**
+ * This Program tests the performance of ICU's Normalization engine against Windows
+ * to run it use the command like
+ *
+ * c:\normperf.exe -s C:\work\ICUCupertinoRep\icu4c\collation-perf-data -i 10 -p 15 -f TestNames_Asian.txt -u -e UTF-8 -l
+ */
+#include "convperf.h"
+#include "data.h"
+#include <stdio.h>
+
+int main(int argc, const char* argv[]){
+ UErrorCode status = U_ZERO_ERROR;
+ ConverterPerformanceTest test(argc, argv, status);
+ if(U_FAILURE(status)){
+ return status;
+ }
+ if(test.run()==FALSE){
+ fprintf(stderr,"FAILED: Tests could not be run please check the arguments.\n");
+ return -1;
+ }
+ return 0;
+}
+
+
+ConverterPerformanceTest::ConverterPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status)
+: UPerfTest(argc,argv,status){
+
+}
+
+ConverterPerformanceTest::~ConverterPerformanceTest(){
+
+}
+
+UPerfFunction* ConverterPerformanceTest::runIndexedTest(int32_t index, UBool exec,const char* &name, char* par) {
+ switch (index) {
+ TESTCASE(0,TestICU_CleanOpenAllConverters);// This calls u_cleanup()
+ TESTCASE(1,TestICU_OpenAllConverters);// This doesn't call u_cleanup()
+
+ TESTCASE(2,TestICU_UTF8_ToUnicode);
+ TESTCASE(3,TestICU_UTF8_FromUnicode);
+ TESTCASE(4,TestWinANSI_UTF8_ToUnicode);
+ TESTCASE(5,TestWinANSI_UTF8_FromUnicode);
+ TESTCASE(6,TestWinIML2_UTF8_ToUnicode);
+ TESTCASE(7,TestWinIML2_UTF8_FromUnicode);
+
+ TESTCASE(8,TestICU_Latin1_ToUnicode);
+ TESTCASE(9,TestICU_Latin1_FromUnicode);
+ TESTCASE(10,TestWinIML2_Latin1_ToUnicode);
+ TESTCASE(11,TestWinIML2_Latin1_FromUnicode);
+
+ TESTCASE(12,TestICU_Latin8_ToUnicode);
+ TESTCASE(13,TestICU_Latin8_FromUnicode);
+ TESTCASE(14,TestWinIML2_Latin8_ToUnicode);
+ TESTCASE(15,TestWinIML2_Latin8_FromUnicode);
+
+ TESTCASE(16,TestICU_EBCDIC_Arabic_ToUnicode);
+ TESTCASE(17,TestICU_EBCDIC_Arabic_FromUnicode);
+ TESTCASE(18,TestWinIML2_EBCDIC_Arabic_ToUnicode);
+ TESTCASE(19,TestWinIML2_EBCDIC_Arabic_FromUnicode);
+
+ TESTCASE(20,TestICU_SJIS_ToUnicode);
+ TESTCASE(21,TestICU_SJIS_FromUnicode);
+ TESTCASE(22,TestWinIML2_SJIS_ToUnicode);
+ TESTCASE(23,TestWinIML2_SJIS_FromUnicode);
+
+ TESTCASE(24,TestICU_EUCJP_ToUnicode);
+ TESTCASE(25,TestICU_EUCJP_FromUnicode);
+ TESTCASE(26,TestWinIML2_EUCJP_ToUnicode);
+ TESTCASE(27,TestWinIML2_EUCJP_FromUnicode);
+
+ TESTCASE(28,TestICU_GB2312_FromUnicode);
+ TESTCASE(29,TestICU_GB2312_ToUnicode);
+ TESTCASE(30,TestWinIML2_GB2312_ToUnicode);
+ TESTCASE(31,TestWinIML2_GB2312_FromUnicode);
+
+ TESTCASE(32,TestICU_ISO2022KR_ToUnicode);
+ TESTCASE(33,TestICU_ISO2022KR_FromUnicode);
+ TESTCASE(34,TestWinIML2_ISO2022KR_ToUnicode);
+ TESTCASE(35,TestWinIML2_ISO2022KR_FromUnicode);
+
+ TESTCASE(36,TestICU_ISO2022JP_ToUnicode);
+ TESTCASE(37,TestICU_ISO2022JP_FromUnicode);
+ TESTCASE(38,TestWinIML2_ISO2022JP_ToUnicode);
+ TESTCASE(39,TestWinIML2_ISO2022JP_FromUnicode);
+
+ TESTCASE(40,TestWinANSI_Latin1_ToUnicode);
+ TESTCASE(41,TestWinANSI_Latin1_FromUnicode);
+
+ TESTCASE(42,TestWinANSI_Latin8_ToUnicode);
+ TESTCASE(43,TestWinANSI_Latin8_FromUnicode);
+
+ TESTCASE(44,TestWinANSI_SJIS_ToUnicode);
+ TESTCASE(45,TestWinANSI_SJIS_FromUnicode);
+
+ TESTCASE(46,TestWinANSI_EUCJP_ToUnicode);
+ TESTCASE(47,TestWinANSI_EUCJP_FromUnicode);
+
+ TESTCASE(48,TestWinANSI_GB2312_ToUnicode);
+ TESTCASE(49,TestWinANSI_GB2312_FromUnicode);
+
+ TESTCASE(50,TestWinANSI_ISO2022KR_ToUnicode);
+ TESTCASE(51,TestWinANSI_ISO2022KR_FromUnicode);
+
+ TESTCASE(52,TestWinANSI_ISO2022JP_ToUnicode);
+ TESTCASE(53,TestWinANSI_ISO2022JP_FromUnicode);
+
+ default:
+ name = "";
+ return NULL;
+ }
+ return NULL;
+
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_CleanOpenAllConverters() {
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUOpenAllConvertersFunction(TRUE, status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_OpenAllConverters() {
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUOpenAllConvertersFunction(FALSE, status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_UTF8_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("utf-8",utf8_uniSource, LENGTHOF(utf8_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_UTF8_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUToUnicodePerfFunction("utf-8",(char*)utf8_encSource, LENGTHOF(utf8_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_UTF8_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("utf-8",utf8_uniSource, LENGTHOF(utf8_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_UTF8_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("utf-8",(char*)utf8_encSource, LENGTHOF(utf8_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_UTF8_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("utf-8",utf8_uniSource, LENGTHOF(utf8_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_UTF8_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIToUnicodePerfFunction("utf-8",(char*)utf8_encSource, LENGTHOF(utf8_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+//################
+
+UPerfFunction* ConverterPerformanceTest::TestICU_Latin1_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-8859-1",latin1_uniSource, LENGTHOF(latin1_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_Latin1_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-8859-1",(char*)latin1_encSource, LENGTHOF(latin1_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_Latin1_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-8859-1",latin1_uniSource, LENGTHOF(latin1_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_Latin1_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-8859-1",(char*)latin1_encSource, LENGTHOF(latin1_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin1_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-8859-1",latin1_uniSource, LENGTHOF(latin1_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin1_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-8859-1",(char*)latin1_encSource, LENGTHOF(latin1_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+//##################
+
+UPerfFunction* ConverterPerformanceTest::TestICU_Latin8_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-8859-8",latin8_uniSource, LENGTHOF(latin8_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_Latin8_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-8859-8",(char*)latin8_encSource, LENGTHOF(latin8_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_Latin8_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-8859-8",latin8_uniSource, LENGTHOF(latin8_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_Latin8_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-8859-8",(char*)latin8_encSource, LENGTHOF(latin8_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin8_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-8859-8",latin8_uniSource, LENGTHOF(latin8_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin8_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-8859-8",(char*)latin8_encSource, LENGTHOF(latin8_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+//#################
+
+
+UPerfFunction* ConverterPerformanceTest::TestICU_EBCDIC_Arabic_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("x-EBCDIC-Arabic",ebcdic_arabic_uniSource, LENGTHOF(ebcdic_arabic_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_EBCDIC_Arabic_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUToUnicodePerfFunction("x-EBCDIC-Arabic",(char*)ebcdic_arabic_encSource, LENGTHOF(ebcdic_arabic_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_EBCDIC_Arabic_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("x-EBCDIC-Arabic",ebcdic_arabic_uniSource, LENGTHOF(ebcdic_arabic_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_EBCDIC_Arabic_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("x-EBCDIC-Arabic",(char*)ebcdic_arabic_encSource, LENGTHOF(ebcdic_arabic_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_EBCDIC_Arabic_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("x-EBCDIC-Arabic",ebcdic_arabic_uniSource, LENGTHOF(ebcdic_arabic_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_EBCDIC_Arabic_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIToUnicodePerfFunction("x-EBCDIC-Arabic",(char*)ebcdic_arabic_encSource, LENGTHOF(ebcdic_arabic_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+//#################
+
+
+UPerfFunction* ConverterPerformanceTest::TestICU_SJIS_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("sjis",sjis_uniSource, LENGTHOF(sjis_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_SJIS_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUToUnicodePerfFunction("sjis",(char*)sjis_encSource, LENGTHOF(sjis_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_SJIS_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("sjis",sjis_uniSource, LENGTHOF(sjis_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_SJIS_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("sjis",(char*)sjis_encSource, LENGTHOF(sjis_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_SJIS_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("sjis",sjis_uniSource, LENGTHOF(sjis_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_SJIS_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIToUnicodePerfFunction("sjis",(char*)sjis_encSource, LENGTHOF(sjis_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+//#################
+
+
+UPerfFunction* ConverterPerformanceTest::TestICU_EUCJP_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("euc-jp",eucjp_uniSource, LENGTHOF(eucjp_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_EUCJP_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUToUnicodePerfFunction("euc-jp",(char*)eucjp_encSource, LENGTHOF(eucjp_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_EUCJP_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("euc-jp",eucjp_uniSource, LENGTHOF(eucjp_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_EUCJP_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("euc-jp",(char*)eucjp_encSource, LENGTHOF(eucjp_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_EUCJP_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("euc-jp",eucjp_uniSource, LENGTHOF(eucjp_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_EUCJP_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIToUnicodePerfFunction("euc-jp",(char*)eucjp_encSource, LENGTHOF(eucjp_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+//#################
+
+
+UPerfFunction* ConverterPerformanceTest::TestICU_GB2312_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("gb2312",gb2312_uniSource, LENGTHOF(gb2312_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_GB2312_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUToUnicodePerfFunction("gb2312",(char*)gb2312_encSource, LENGTHOF(gb2312_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_GB2312_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("gb2312",gb2312_uniSource, LENGTHOF(gb2312_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_GB2312_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("gb2312",(char*)gb2312_encSource, LENGTHOF(gb2312_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_GB2312_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("gb2312",gb2312_uniSource, LENGTHOF(gb2312_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_GB2312_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIToUnicodePerfFunction("gb2312",(char*)gb2312_encSource, LENGTHOF(gb2312_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+//#################
+
+
+UPerfFunction* ConverterPerformanceTest::TestICU_ISO2022KR_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-2022-kr",iso2022kr_uniSource, LENGTHOF(iso2022kr_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_ISO2022KR_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-2022-kr",(char*)iso2022kr_encSource, LENGTHOF(iso2022kr_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_ISO2022KR_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-2022-kr",iso2022kr_uniSource, LENGTHOF(iso2022kr_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_ISO2022KR_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-2022-kr",(char*)iso2022kr_encSource, LENGTHOF(iso2022kr_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022KR_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-2022-kr",iso2022kr_uniSource, LENGTHOF(iso2022kr_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022KR_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-2022-kr",(char*)iso2022kr_encSource, LENGTHOF(iso2022kr_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+//#################
+
+
+UPerfFunction* ConverterPerformanceTest::TestICU_ISO2022JP_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-2022-jp",iso2022jp_uniSource, LENGTHOF(iso2022jp_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestICU_ISO2022JP_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-2022-jp",(char*)iso2022jp_encSource, LENGTHOF(iso2022jp_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_ISO2022JP_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-2022-jp",iso2022jp_uniSource, LENGTHOF(iso2022jp_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinIML2_ISO2022JP_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-2022-jp",(char*)iso2022jp_encSource, LENGTHOF(iso2022jp_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022JP_FromUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-2022-jp",iso2022jp_uniSource, LENGTHOF(iso2022jp_uniSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+}
+
+UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022JP_ToUnicode(){
+ UErrorCode status = U_ZERO_ERROR;
+ UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-2022-jp",(char*)iso2022jp_encSource, LENGTHOF(iso2022jp_encSource), status);
+ if(U_FAILURE(status)){
+ return NULL;
+ }
+ return pf;
+} \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.h b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.h
new file mode 100644
index 00000000000..994553aa52d
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.h
@@ -0,0 +1,568 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2005, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+#ifndef _CONVPERF_H
+#define _CONVPERF_H
+
+#include <mlang.h>
+#include <objbase.h>
+#include <stdlib.h>
+#include "unicode/ucnv.h"
+#include "unicode/uclean.h"
+#include "unicode/ustring.h"
+
+#include "unicode/uperf.h"
+
+#define CONVERSION_FLAGS (0) /*WC_DEFAULTCHAR WC_COMPOSITECHECK & WC_SEPCHARS*/
+#define MAX_BUF_SIZE 3048
+#define LENGTHOF(array) (sizeof(array)/sizeof((array)[0]))
+
+class ICUToUnicodePerfFunction : public UPerfFunction{
+private:
+ UConverter* conv;
+ const char* src;
+ int32_t srcLen;
+ UChar* target;
+ UChar* targetLimit;
+
+public:
+ ICUToUnicodePerfFunction(const char* name, const char* source, int32_t sourceLen, UErrorCode& status){
+ conv = ucnv_open(name,&status);
+ src = source;
+ srcLen = sourceLen;
+ if(U_FAILURE(status)){
+ conv = NULL;
+ return;
+ }
+ target = NULL;
+ targetLimit = NULL;
+ int32_t reqdLen = ucnv_toUChars(conv, target, 0,
+ source, srcLen, &status);
+ if(status==U_BUFFER_OVERFLOW_ERROR) {
+ status=U_ZERO_ERROR;
+ target=(UChar*)malloc((reqdLen) * U_SIZEOF_UCHAR*2);
+ targetLimit = target + reqdLen;
+ if(target == NULL){
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ }
+ }
+ virtual void call(UErrorCode* status){
+ const char* mySrc = src;
+ const char* sourceLimit = src + srcLen;
+ UChar* myTarget = target;
+ ucnv_toUnicode(conv, &myTarget, targetLimit, &mySrc, sourceLimit, NULL, TRUE, status);
+ }
+ virtual long getOperationsPerIteration(void){
+ return srcLen;
+ }
+ ~ICUToUnicodePerfFunction(){
+ free(target);
+ ucnv_close(conv);
+ }
+};
+class ICUFromUnicodePerfFunction : public UPerfFunction{
+private:
+ UConverter* conv;
+ const UChar* src;
+ int32_t srcLen;
+ char* target;
+ char* targetLimit;
+ const char* name;
+
+public:
+ ICUFromUnicodePerfFunction(const char* name, const UChar* source, int32_t sourceLen, UErrorCode& status){
+ conv = ucnv_open(name,&status);
+ src = source;
+ srcLen = sourceLen;
+ if(U_FAILURE(status)){
+ conv = NULL;
+ return;
+ }
+ target = NULL;
+ targetLimit = NULL;
+ int32_t reqdLen = ucnv_fromUChars(conv, target, 0,
+ source, srcLen, &status);
+ if(status==U_BUFFER_OVERFLOW_ERROR) {
+ status=U_ZERO_ERROR;
+ target=(char*)malloc((reqdLen*2));
+ targetLimit = target + reqdLen;
+ if(target == NULL){
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ }
+ }
+ virtual void call(UErrorCode* status){
+ const UChar* mySrc = src;
+ const UChar* sourceLimit = src + srcLen;
+ char* myTarget = target;
+ ucnv_fromUnicode(conv,&myTarget, targetLimit, &mySrc, sourceLimit, NULL, TRUE, status);
+ }
+ virtual long getOperationsPerIteration(void){
+ return srcLen;
+ }
+ ~ICUFromUnicodePerfFunction(){
+ free(target);
+ ucnv_close(conv);
+ }
+};
+
+class ICUOpenAllConvertersFunction : public UPerfFunction{
+private:
+ UBool cleanup;
+ int32_t availableConverters;
+ const char **convNames;
+public:
+ ICUOpenAllConvertersFunction(UBool callCleanup, UErrorCode& status){
+ int32_t idx;
+ cleanup = callCleanup;
+ availableConverters = ucnv_countAvailable();
+ convNames = new const char *[availableConverters];
+ for (idx = 0; idx < availableConverters; idx++) {
+ convNames[idx] = ucnv_getAvailableName(idx);
+ }
+ }
+ virtual void call(UErrorCode* status){
+ int32_t idx;
+ if (cleanup) {
+ u_cleanup();
+ }
+ for (idx = 0; idx < availableConverters; idx++) {
+ ucnv_close(ucnv_open(convNames[idx], status));
+ }
+ }
+ virtual long getOperationsPerIteration(void){
+ return availableConverters;
+ }
+ ~ICUOpenAllConvertersFunction(){
+ delete []convNames;
+ }
+};
+
+class WinANSIToUnicodePerfFunction : public UPerfFunction{
+
+private:
+ DWORD uiCodePage;
+ char* src;
+ UINT srcLen;
+ WCHAR dest[MAX_BUF_SIZE];
+ UINT dstLen;
+ const char* name;
+public:
+ WinANSIToUnicodePerfFunction(const char* cpName, char* pszIn,UINT szLen, UErrorCode& status){
+ name = cpName;
+ src = pszIn;
+ srcLen = szLen;
+ dstLen = LENGTHOF(dest);
+ unsigned short bEnc[30]={'\0'};
+ const char* tenc=name;
+ for(int i=0;*tenc!='\0';i++){
+ bEnc[i]=*tenc;
+ tenc++;
+ }
+ LPMULTILANGUAGE2 pMulti;
+
+ CoInitialize(NULL);
+
+ /* create instance of converter object*/
+ CoCreateInstance(
+ __uuidof(CMultiLanguage),
+ NULL,
+ CLSCTX_SERVER,
+ __uuidof(IMultiLanguage2),
+ (void**)&pMulti
+ );
+
+
+
+ MIMECSETINFO mimeInfo;
+
+ mimeInfo.uiCodePage = 0;
+ mimeInfo.uiInternetEncoding =0;
+ /* get the charset info */
+ pMulti->GetCharsetInfo((wchar_t *)bEnc,&mimeInfo);
+ uiCodePage = (mimeInfo.uiInternetEncoding==0)?mimeInfo.uiCodePage:mimeInfo.uiInternetEncoding;
+ }
+ virtual void call(UErrorCode* status){
+ int winSize =MultiByteToWideChar(uiCodePage,CONVERSION_FLAGS,src,srcLen,dest,dstLen);
+ }
+ virtual long getOperationsPerIteration(void){
+ return srcLen;
+ }
+};
+
+class WinANSIFromUnicodePerfFunction : public UPerfFunction{
+
+private:
+ DWORD uiCodePage;
+ WCHAR* src;
+ UINT srcLen;
+ char dest[MAX_BUF_SIZE];
+ UINT dstLen;
+ const char* name;
+ BOOL lpUsedDefaultChar;
+
+public:
+ WinANSIFromUnicodePerfFunction(const char* cpName, WCHAR* pszIn,UINT szLen, UErrorCode& status){
+ name = cpName;
+ src = pszIn;
+ srcLen = szLen;
+ dstLen = LENGTHOF(dest);
+ lpUsedDefaultChar=FALSE;
+ unsigned short bEnc[30]={'\0'};
+ const char* tenc=name;
+ for(int i=0;*tenc!='\0';i++){
+ bEnc[i]=*tenc;
+ tenc++;
+ }
+ LPMULTILANGUAGE2 pMulti;
+
+ CoInitialize(NULL);
+
+ /* create instance of converter object*/
+ CoCreateInstance(
+ __uuidof(CMultiLanguage),
+ NULL,
+ CLSCTX_SERVER,
+ __uuidof(IMultiLanguage2),
+ (void**)&pMulti
+ );
+
+
+
+ MIMECSETINFO mimeInfo;
+ mimeInfo.uiCodePage = 0;
+ mimeInfo.uiInternetEncoding =0;
+ /* get the charset info */
+ pMulti->GetCharsetInfo((wchar_t *)bEnc,&mimeInfo);
+ uiCodePage = (mimeInfo.uiInternetEncoding==0)?mimeInfo.uiCodePage:mimeInfo.uiInternetEncoding;
+ }
+ virtual void call(UErrorCode* status){
+ BOOL* pUsedDefaultChar =(uiCodePage==CP_UTF8)?NULL:&lpUsedDefaultChar;
+ int winSize = WideCharToMultiByte(uiCodePage,CONVERSION_FLAGS,src,srcLen,dest,dstLen,NULL, pUsedDefaultChar);
+ }
+ virtual long getOperationsPerIteration(void){
+ return srcLen;
+ }
+};
+static inline void getErr(HRESULT err, UErrorCode& status){
+
+ switch (err){
+
+ case S_OK:
+ //printf("Operation %s successful\n",operation);
+ break;
+ case S_FALSE:
+ status = U_INTERNAL_PROGRAM_ERROR;
+ break;
+ case E_FAIL:
+ status = U_ILLEGAL_CHAR_FOUND;
+ }
+}
+class WinIMultiLanguageToUnicodePerfFunction : public UPerfFunction{
+
+private:
+ LPMULTILANGUAGE2 pMulti;
+ LPMLANGCONVERTCHARSET pConvToUni;
+ char* src;
+ UINT srcLen;
+ WCHAR dst[MAX_BUF_SIZE];
+ UINT dstLen;
+ const char* cpName;
+
+public:
+ WinIMultiLanguageToUnicodePerfFunction(const char* name,char* source, UINT sourceLen, UErrorCode& status){
+
+ CoInitialize(NULL);
+
+ /* create instance of converter object*/
+ CoCreateInstance(
+ __uuidof(CMultiLanguage),
+ NULL,
+ CLSCTX_SERVER,
+ __uuidof(IMultiLanguage2),
+ (void**)&pMulti
+ );
+
+
+
+ MIMECSETINFO mimeInfo;
+ mimeInfo.uiCodePage = 0;
+ mimeInfo.uiInternetEncoding =0;
+ HRESULT err=S_OK;
+ unsigned short bEnc[30]={'\0'};
+ const char* tenc=name;
+ for(int i=0;*tenc!='\0';i++){
+ bEnc[i]=*tenc;
+ tenc++;
+ }
+ /* get the charset info */
+ pMulti->GetCharsetInfo((wchar_t *)bEnc,&mimeInfo);
+ pMulti->CreateConvertCharset(mimeInfo.uiCodePage, 1200 /*unicode*/, (DWORD)0,&pConvToUni);
+ getErr(err,status);
+ src = source;
+ srcLen = sourceLen;
+ dstLen = LENGTHOF(dst);
+ cpName = name;
+ }
+
+ virtual void call(UErrorCode* status){
+ HRESULT err= pConvToUni->DoConversionToUnicode(src,&srcLen,dst, &dstLen);
+ getErr(err,*status);
+ }
+ virtual long getOperationsPerIteration(void){
+ return srcLen;
+ }
+};
+
+class WinIMultiLanguageFromUnicodePerfFunction : public UPerfFunction{
+
+private:
+ LPMULTILANGUAGE2 pMulti;
+ LPMLANGCONVERTCHARSET pConvFromUni;
+ WCHAR* src;
+ UINT srcLen;
+ char dst[MAX_BUF_SIZE];
+ UINT dstLen;
+ const char* cpName;
+
+public:
+ WinIMultiLanguageFromUnicodePerfFunction(const char* name,WCHAR* source, UINT sourceLen, UErrorCode& status){
+
+ CoInitialize(NULL);
+
+ /* create instance of converter object*/
+ CoCreateInstance(
+ __uuidof(CMultiLanguage),
+ NULL,
+ CLSCTX_SERVER,
+ __uuidof(IMultiLanguage2),
+ (void**)&pMulti
+ );
+
+
+
+ MIMECSETINFO mimeInfo;
+ mimeInfo.uiCodePage = 0;
+ mimeInfo.uiInternetEncoding =0;
+ HRESULT err=S_OK;
+ unsigned short bEnc[30]={'\0'};
+ const char* tenc=name;
+ for(int i=0;*tenc!='\0';i++){
+ bEnc[i]=*tenc;
+ tenc++;
+ }
+ /* get the charset info */
+ pMulti->GetCharsetInfo((wchar_t *)bEnc,&mimeInfo);
+ pMulti->CreateConvertCharset(1200 /*unicode*/, mimeInfo.uiCodePage, (DWORD)0,&pConvFromUni);
+ getErr(err,status);
+ src = source;
+ srcLen = sourceLen;
+ dstLen = LENGTHOF(dst);
+ cpName = name;
+
+ }
+
+ virtual void call(UErrorCode* status){
+ HRESULT err= pConvFromUni->DoConversionFromUnicode(src,&srcLen,dst, &dstLen);
+ getErr(err,*status);
+ }
+ virtual long getOperationsPerIteration(void){
+ return srcLen;
+ }
+};
+
+class WinIMultiLanguage2ToUnicodePerfFunction : public UPerfFunction{
+
+private:
+ LPMULTILANGUAGE2 pMulti;
+ char* src;
+ UINT srcLen;
+ WCHAR dst[MAX_BUF_SIZE];
+ UINT dstLen;
+ const char* cpName;
+ DWORD dwEnc;
+public:
+ WinIMultiLanguage2ToUnicodePerfFunction(const char* name,char* source, UINT sourceLen, UErrorCode& status){
+
+ CoInitialize(NULL);
+
+ /* create instance of converter object*/
+ CoCreateInstance(
+ __uuidof(CMultiLanguage),
+ NULL,
+ CLSCTX_SERVER,
+ __uuidof(IMultiLanguage2),
+ (void**)&pMulti
+ );
+
+ src = source;
+ srcLen = sourceLen;
+ dstLen = LENGTHOF(dst);
+ cpName = name;
+ unsigned short bEnc[30]={'\0'};
+ const char* tenc=name;
+ for(int i=0;*tenc!='\0';i++){
+ bEnc[i]=*tenc;
+ tenc++;
+ }
+ /* get the charset info */
+ MIMECSETINFO mimeInfo;
+ mimeInfo.uiCodePage = 0;
+ mimeInfo.uiInternetEncoding =0;
+ pMulti->GetCharsetInfo((wchar_t *)bEnc,&mimeInfo);
+ dwEnc = (mimeInfo.uiInternetEncoding==0)?mimeInfo.uiCodePage:mimeInfo.uiInternetEncoding;
+ }
+
+ virtual void call(UErrorCode* status){
+ DWORD dwMode=0;
+ HRESULT err= pMulti->ConvertStringToUnicode(&dwMode,dwEnc,(char*)src,&srcLen,dst, &dstLen);
+ getErr(err,*status);
+ }
+ virtual long getOperationsPerIteration(void){
+ return srcLen;
+ }
+};
+
+class WinIMultiLanguage2FromUnicodePerfFunction : public UPerfFunction{
+
+private:
+ LPMULTILANGUAGE2 pMulti;
+ LPMLANGCONVERTCHARSET pConvFromUni;
+ WCHAR* src;
+ UINT srcLen;
+ char dst[MAX_BUF_SIZE];
+ UINT dstLen;
+ const char* cpName;
+ DWORD dwEnc;
+
+public:
+ WinIMultiLanguage2FromUnicodePerfFunction(const char* name,WCHAR* source, UINT sourceLen, UErrorCode& status){
+
+ CoInitialize(NULL);
+
+ /* create instance of converter object*/
+ CoCreateInstance(
+ __uuidof(CMultiLanguage),
+ NULL,
+ CLSCTX_SERVER,
+ __uuidof(IMultiLanguage2),
+ (void**)&pMulti
+ );
+
+
+ unsigned short bEnc[30]={'\0'};
+ const char* tenc=name;
+ for(int i=0;*tenc!='\0';i++){
+ bEnc[i]=*tenc;
+ tenc++;
+ }
+ src = source;
+ srcLen = sourceLen;
+ dstLen = LENGTHOF(dst);
+ cpName = name;
+ /* get the charset info */
+ MIMECSETINFO mimeInfo;
+ mimeInfo.uiCodePage = 0;
+ mimeInfo.uiInternetEncoding =0;
+
+ pMulti->GetCharsetInfo((wchar_t *)bEnc,&mimeInfo);
+ dwEnc = (mimeInfo.uiInternetEncoding==0)?mimeInfo.uiCodePage:mimeInfo.uiInternetEncoding;
+ }
+
+ virtual void call(UErrorCode* status){
+ DWORD dwMode=0;
+ HRESULT err= pMulti->ConvertStringFromUnicode(&dwMode,dwEnc,src,&srcLen,dst, &dstLen);
+ getErr(err,*status);
+ }
+ virtual long getOperationsPerIteration(void){
+ return srcLen;
+ }
+};
+
+class ConverterPerformanceTest : public UPerfTest{
+
+public:
+
+ ConverterPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status);
+ ~ConverterPerformanceTest();
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par = NULL);
+
+ UPerfFunction* TestICU_CleanOpenAllConverters();
+ UPerfFunction* TestICU_OpenAllConverters();
+
+ UPerfFunction* TestICU_UTF8_ToUnicode();
+ UPerfFunction* TestICU_UTF8_FromUnicode();
+ UPerfFunction* TestWinANSI_UTF8_ToUnicode();
+ UPerfFunction* TestWinANSI_UTF8_FromUnicode();
+ UPerfFunction* TestWinIML2_UTF8_ToUnicode();
+ UPerfFunction* TestWinIML2_UTF8_FromUnicode();
+
+ UPerfFunction* TestICU_Latin1_ToUnicode();
+ UPerfFunction* TestICU_Latin1_FromUnicode();
+ UPerfFunction* TestWinANSI_Latin1_ToUnicode();
+ UPerfFunction* TestWinANSI_Latin1_FromUnicode();
+ UPerfFunction* TestWinIML2_Latin1_ToUnicode();
+ UPerfFunction* TestWinIML2_Latin1_FromUnicode();
+
+ UPerfFunction* TestICU_EBCDIC_Arabic_ToUnicode();
+ UPerfFunction* TestICU_EBCDIC_Arabic_FromUnicode();
+ UPerfFunction* TestWinANSI_EBCDIC_Arabic_ToUnicode();
+ UPerfFunction* TestWinANSI_EBCDIC_Arabic_FromUnicode();
+ UPerfFunction* TestWinIML2_EBCDIC_Arabic_ToUnicode();
+ UPerfFunction* TestWinIML2_EBCDIC_Arabic_FromUnicode();
+
+ UPerfFunction* TestICU_Latin8_ToUnicode();
+ UPerfFunction* TestICU_Latin8_FromUnicode();
+ UPerfFunction* TestWinANSI_Latin8_ToUnicode();
+ UPerfFunction* TestWinANSI_Latin8_FromUnicode();
+ UPerfFunction* TestWinIML2_Latin8_ToUnicode();
+ UPerfFunction* TestWinIML2_Latin8_FromUnicode();
+
+
+ UPerfFunction* TestICU_SJIS_ToUnicode();
+ UPerfFunction* TestICU_SJIS_FromUnicode();
+ UPerfFunction* TestWinANSI_SJIS_ToUnicode();
+ UPerfFunction* TestWinANSI_SJIS_FromUnicode();
+ UPerfFunction* TestWinIML2_SJIS_ToUnicode();
+ UPerfFunction* TestWinIML2_SJIS_FromUnicode();
+
+ UPerfFunction* TestICU_EUCJP_ToUnicode();
+ UPerfFunction* TestICU_EUCJP_FromUnicode();
+ UPerfFunction* TestWinANSI_EUCJP_ToUnicode();
+ UPerfFunction* TestWinANSI_EUCJP_FromUnicode();
+ UPerfFunction* TestWinIML2_EUCJP_ToUnicode();
+ UPerfFunction* TestWinIML2_EUCJP_FromUnicode();
+
+ UPerfFunction* TestICU_GB2312_ToUnicode();
+ UPerfFunction* TestICU_GB2312_FromUnicode();
+ UPerfFunction* TestWinANSI_GB2312_ToUnicode();
+ UPerfFunction* TestWinANSI_GB2312_FromUnicode();
+ UPerfFunction* TestWinIML2_GB2312_ToUnicode();
+ UPerfFunction* TestWinIML2_GB2312_FromUnicode();
+
+
+ UPerfFunction* TestICU_ISO2022KR_ToUnicode();
+ UPerfFunction* TestICU_ISO2022KR_FromUnicode();
+ UPerfFunction* TestWinANSI_ISO2022KR_ToUnicode();
+ UPerfFunction* TestWinANSI_ISO2022KR_FromUnicode();
+ UPerfFunction* TestWinIML2_ISO2022KR_ToUnicode();
+ UPerfFunction* TestWinIML2_ISO2022KR_FromUnicode();
+
+ UPerfFunction* TestICU_ISO2022JP_ToUnicode();
+ UPerfFunction* TestICU_ISO2022JP_FromUnicode();
+ UPerfFunction* TestWinANSI_ISO2022JP_ToUnicode();
+ UPerfFunction* TestWinANSI_ISO2022JP_FromUnicode();
+ UPerfFunction* TestWinIML2_ISO2022JP_ToUnicode();
+ UPerfFunction* TestWinIML2_ISO2022JP_FromUnicode();
+
+};
+
+#endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.vcxproj
new file mode 100644
index 00000000000..04ae379b3e0
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.vcxproj
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B4C03939-D417-41F0-85B4-848ECF105E3A}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/convperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Release/convperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/convperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/convperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/convperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Release/convperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/convperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/convperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/convperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/convperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/convperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/convperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/convperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/convperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/convperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/convperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="convperf.cpp">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="convperf.h" />
+ <ClInclude Include="data.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.vcxproj.filters
new file mode 100644
index 00000000000..366d707830b
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf.vcxproj.filters
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{3a6e3122-705d-40d5-b861-282fe54f261d}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{f28e87f0-125f-43e0-bf49-599007d94ff5}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{df393d9e-94f5-4002-a83f-ba9d85a1af34}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="convperf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="convperf.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="data.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf_ansi.pl b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf_ansi.pl
new file mode 100755
index 00000000000..1982be8522c
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf_ansi.pl
@@ -0,0 +1,56 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+# This test only works on Windows.
+if (!$OnWindows) {
+ print "This test only works on Windows.\n";
+ exit(1);
+}
+
+my $options = {
+ "title"=>"Conversion Performance: ICU ".$ICULatestVersion." vs. Windows XP ANSI Interface",
+ "headers"=>"WindowsXP(IMultiLanguage2) ICU".$ICULatestVersion,
+ "operationIs"=>"code point",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>"Not Using Data Files",
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p = $ICUPathLatest."/convperf/$WindowsPlatform/Release/convperf.exe";
+
+my $tests = {
+ "UTF-8 From Unicode", ["$p TestWinANSI_UTF8_FromUnicode" , "$p TestICU_UTF8_FromUnicode" ],
+ "UTF-8 To Unicode", ["$p TestWinANSI_UTF8_ToUnicode" , "$p TestICU_UTF8_ToUnicode" ],
+ ####
+ "ISO-8859-1 From Unicode", ["$p TestWinANSI_Latin1_FromUnicode" , "$p TestICU_Latin1_FromUnicode" ],
+ "ISO-8859-1 To Unicode", ["$p TestWinANSI_Latin1_ToUnicode" , "$p TestICU_Latin1_ToUnicode" ],
+ ####
+ "Shift-JIS From Unicode", ["$p TestWinANSI_SJIS_FromUnicode" , "$p TestICU_SJIS_FromUnicode" ],
+ "Shift-JIS To Unicode", ["$p TestWinANSI_SJIS_ToUnicode" , "$p TestICU_SJIS_ToUnicode" ],
+ ####
+ "EUC-JP From Unicode", ["$p TestWinANSI_EUCJP_FromUnicode" , "$p TestICU_EUCJP_FromUnicode" ],
+ "EUC-JP To Unicode", ["$p TestWinANSI_EUCJP_ToUnicode" , "$p TestICU_EUCJP_ToUnicode" ],
+ ####
+ "GB2312 From Unicode", ["$p TestWinANSI_GB2312_FromUnicode" , "$p TestICU_GB2312_FromUnicode" ],
+ "GB2312 To Unicode", ["$p TestWinANSI_GB2312_ToUnicode" , "$p TestICU_GB2312_ToUnicode" ],
+ };
+
+my $dataFiles = "";
+
+runTests($options, $tests, $dataFiles);
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf_iml.pl b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf_iml.pl
new file mode 100755
index 00000000000..65164347167
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/convperf/convperf_iml.pl
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+# This test only works on Windows.
+if (!$OnWindows) {
+ print "This test only works on Windows.\n";
+ exit(1);
+}
+
+my $options = {
+ "title"=>"Conversion Performance: ICU".$ICULatestVersion." vs. WindowsXP IMultiLanguage Interface",
+ "headers"=>"WindowsXP(IMultiLanguage2) ICU".$ICULatestVersion,
+ "operationIs"=>"code point",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>"Not Using Data Files",
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p = $ICUPathLatest."/convperf/$WindowsPlatform/Release/convperf.exe";
+
+my $tests = {
+ "UTF-8 From Unicode", ["$p TestWinIML2_UTF8_FromUnicode" , "$p TestICU_UTF8_FromUnicode" ],
+ "UTF-8 To Unicode", ["$p TestWinIML2_UTF8_ToUnicode" , "$p TestICU_UTF8_ToUnicode" ],
+ ####
+ "ISO-8859-1 From Unicode", ["$p TestWinIML2_Latin1_FromUnicode" , "$p TestICU_Latin1_FromUnicode" ],
+ "ISO-8859-1 To Unicode", ["$p TestWinIML2_Latin1_ToUnicode" , "$p TestICU_Latin1_ToUnicode" ],
+ ####
+ "Shift-JIS From Unicode", ["$p TestWinIML2_SJIS_FromUnicode" , "$p TestICU_SJIS_FromUnicode" ],
+ "Shift-JIS To Unicode", ["$p TestWinIML2_SJIS_ToUnicode" , "$p TestICU_SJIS_ToUnicode" ],
+ ####
+ "EUC-JP From Unicode", ["$p TestWinIML2_EUCJP_FromUnicode" , "$p TestICU_EUCJP_FromUnicode" ],
+ "EUC-JP To Unicode", ["$p TestWinIML2_EUCJP_ToUnicode" , "$p TestICU_EUCJP_ToUnicode" ],
+ ####
+ "GB2312 From Unicode", ["$p TestWinIML2_GB2312_FromUnicode" , "$p TestICU_GB2312_FromUnicode" ],
+ "GB2312 To Unicode", ["$p TestWinIML2_GB2312_ToUnicode" , "$p TestICU_GB2312_ToUnicode" ],
+ ####
+ "ISO2022KR From Unicode", ["$p TestWinIML2_ISO2022KR_FromUnicode", "$p TestICU_ISO2022KR_FromUnicode" ],
+ "ISO2022KR To Unicode", ["$p TestWinIML2_ISO2022KR_ToUnicode" , "$p TestICU_ISO2022KR_ToUnicode" ],
+ ####
+ "ISO2022JP From Unicode", ["$p TestWinIML2_ISO2022JP_FromUnicode", "$p TestICU_ISO2022JP_FromUnicode" ],
+ "ISO2022JP To Unicode", ["$p TestWinIML2_ISO2022JP_ToUnicode" , "$p TestICU_ISO2022JP_ToUnicode" ],
+ };
+
+my $dataFiles = "";
+
+runTests($options, $tests, $dataFiles);
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/convperf/data.h b/Build/source/libs/icu/icu-4.6/test/perf/convperf/data.h
new file mode 100644
index 00000000000..e80be75c1cc
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/convperf/data.h
@@ -0,0 +1,2731 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2003,International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+#ifndef _DATA_H
+#define _DATA_H
+
+char iso2022jp_encSource[]={
+ 0x1B,0x24,0x42,0x21,0x21,0x21,0x22,0x21,0x23,0x1B,0x28,0x42,0x20,0x1B,0x24,0x42,0x21,0x25,0x21,0x26,
+ 0x21,0x27,0x21,0x28,0x1B,0x28,0x42,0x0D,0x0A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x0D,0x0A,0x1B,
+ 0x24,0x42,0x21,0x29,0x21,0x2A,0x21,0x2B,0x21,0x2C,0x21,0x2D,0x21,0x2E,0x21,0x2F,0x21,0x30,0x1B,0x28,
+ 0x42,0x0D,0x0A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x0D,0x0A,0x1B,0x24,0x42,0x21,0x31,0x21,0x32,
+ 0x21,0x33,0x21,0x34,0x21,0x35,0x21,0x36,0x21,0x37,0x21,0x38,0x1B,0x28,0x42,0x0D,0x0A,0x1B,0x24,0x42,
+ 0x21,0x39,0x21,0x3A,0x21,0x3B,0x21,0x3C,0x21,0x3D,0x21,0x3E,0x21,0x3F,0x1B,0x28,0x42,0x5C,0x0D,0x0A,
+ 0x1B,0x24,0x42,0x21,0x43,0x21,0x44,0x21,0x45,0x21,0x46,0x21,0x47,0x21,0x48,0x1B,0x28,0x42,0x0D,0x0A,
+ 0x1B,0x24,0x42,0x21,0x49,0x21,0x4A,0x21,0x4B,0x21,0x4C,0x25,0x2A,0x25,0x2B,0x25,0x2D,0x25,0x2F,0x1B,
+ 0x28,0x42,0x0D,0x0A,0x1B,0x24,0x42,0x25,0x31,0x25,0x33,0x25,0x35,0x25,0x37,0x25,0x39,0x25,0x3B,0x25,
+ 0x3D,0x25,0x3F,0x1B,0x28,0x42,0x0D,0x0A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x0D,0x0A,0x1B,0x24,
+ 0x42,0x25,0x41,0x25,0x44,0x25,0x46,0x25,0x48,0x25,0x4A,0x25,0x4B,0x25,0x4C,0x25,0x4D,0x1B,0x28,0x42,
+ 0x0D,0x0A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x0D,0x0A,0x1B,0x24,0x42,0x25,0x4E,0x25,0x4F,0x25,
+ 0x52,0x1B,0x28,0x42,0x20,0x1B,0x24,0x42,0x25,0x58,0x25,0x5B,0x25,0x5E,0x25,0x5F,0x1B,0x28,0x42,0x0D,
+ 0x0A,0x1B,0x24,0x42,0x25,0x60,0x25,0x61,0x25,0x62,0x25,0x64,0x25,0x66,0x25,0x68,0x25,0x69,0x25,0x6A,
+ 0x1B,0x28,0x42,0x0D,0x0A,
+ /**/
+ 0x1B,0x24,0x42,0x21,0x21,0x21,0x22,0x21,0x23,0x1B,0x28,0x42,0x20,0x1B,0x24,0x42,0x21,0x25,0x21,0x26,
+ 0x21,0x27,0x21,0x28,0x1B,0x28,0x42,0x0D,0x0A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x0D,0x0A,0x1B,
+ 0x24,0x42,0x21,0x29,0x21,0x2A,0x21,0x2B,0x21,0x2C,0x21,0x2D,0x21,0x2E,0x21,0x2F,0x21,0x30,0x1B,0x28,
+ 0x42,0x0D,0x0A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x0D,0x0A,0x1B,0x24,0x42,0x21,0x31,0x21,0x32,
+ 0x21,0x33,0x21,0x34,0x21,0x35,0x21,0x36,0x21,0x37,0x21,0x38,0x1B,0x28,0x42,0x0D,0x0A,0x1B,0x24,0x42,
+ 0x21,0x39,0x21,0x3A,0x21,0x3B,0x21,0x3C,0x21,0x3D,0x21,0x3E,0x21,0x3F,0x1B,0x28,0x42,0x5C,0x0D,0x0A,
+ 0x1B,0x24,0x42,0x21,0x43,0x21,0x44,0x21,0x45,0x21,0x46,0x21,0x47,0x21,0x48,0x1B,0x28,0x42,0x0D,0x0A,
+ 0x1B,0x24,0x42,0x21,0x49,0x21,0x4A,0x21,0x4B,0x21,0x4C,0x25,0x2A,0x25,0x2B,0x25,0x2D,0x25,0x2F,0x1B,
+ 0x28,0x42,0x0D,0x0A,0x1B,0x24,0x42,0x25,0x31,0x25,0x33,0x25,0x35,0x25,0x37,0x25,0x39,0x25,0x3B,0x25,
+ 0x3D,0x25,0x3F,0x1B,0x28,0x42,0x0D,0x0A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x0D,0x0A,0x1B,0x24,
+ 0x42,0x25,0x41,0x25,0x44,0x25,0x46,0x25,0x48,0x25,0x4A,0x25,0x4B,0x25,0x4C,0x25,0x4D,0x1B,0x28,0x42,
+ 0x0D,0x0A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x0D,0x0A,0x1B,0x24,0x42,0x25,0x4E,0x25,0x4F,0x25,
+ 0x52,0x1B,0x28,0x42,0x20,0x1B,0x24,0x42,0x25,0x58,0x25,0x5B,0x25,0x5E,0x25,0x5F,0x1B,0x28,0x42,0x0D,
+ 0x0A,0x1B,0x24,0x42,0x25,0x60,0x25,0x61,0x25,0x62,0x25,0x64,0x25,0x66,0x25,0x68,0x25,0x69,0x25,0x6A,
+ 0x1B,0x28,0x42,0x0D,0x0A,
+ /**/
+ 0x1B,0x24,0x42,0x21,0x21,0x21,0x22,0x21,0x23,0x1B,0x28,0x42,0x20,0x1B,0x24,0x42,0x21,0x25,0x21,0x26,
+ 0x21,0x27,0x21,0x28,0x1B,0x28,0x42,0x0D,0x0A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x0D,0x0A,0x1B,
+ 0x24,0x42,0x21,0x29,0x21,0x2A,0x21,0x2B,0x21,0x2C,0x21,0x2D,0x21,0x2E,0x21,0x2F,0x21,0x30,0x1B,0x28,
+ 0x42,0x0D,0x0A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x0D,0x0A,0x1B,0x24,0x42,0x21,0x31,0x21,0x32,
+ 0x21,0x33,0x21,0x34,0x21,0x35,0x21,0x36,0x21,0x37,0x21,0x38,0x1B,0x28,0x42,0x0D,0x0A,0x1B,0x24,0x42,
+ 0x21,0x39,0x21,0x3A,0x21,0x3B,0x21,0x3C,0x21,0x3D,0x21,0x3E,0x21,0x3F,0x1B,0x28,0x42,0x5C,0x0D,0x0A,
+ 0x1B,0x24,0x42,0x21,0x43,0x21,0x44,0x21,0x45,0x21,0x46,0x21,0x47,0x21,0x48,0x1B,0x28,0x42,0x0D,0x0A,
+ 0x1B,0x24,0x42,0x21,0x49,0x21,0x4A,0x21,0x4B,0x21,0x4C,0x25,0x2A,0x25,0x2B,0x25,0x2D,0x25,0x2F,0x1B,
+ 0x28,0x42,0x0D,0x0A,0x1B,0x24,0x42,0x25,0x31,0x25,0x33,0x25,0x35,0x25,0x37,0x25,0x39,0x25,0x3B,0x25,
+ 0x3D,0x25,0x3F,0x1B,0x28,0x42,0x0D,0x0A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x0D,0x0A,0x1B,0x24,
+ 0x42,0x25,0x41,0x25,0x44,0x25,0x46,0x25,0x48,0x25,0x4A,0x25,0x4B,0x25,0x4C,0x25,0x4D,0x1B,0x28,0x42,
+ 0x0D,0x0A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x0D,0x0A,0x1B,0x24,0x42,0x25,0x4E,0x25,0x4F,0x25,
+ 0x52,0x1B,0x28,0x42,0x20,0x1B,0x24,0x42,0x25,0x58,0x25,0x5B,0x25,0x5E,0x25,0x5F,0x1B,0x28,0x42,0x0D,
+ 0x0A,0x1B,0x24,0x42,0x25,0x60,0x25,0x61,0x25,0x62,0x25,0x64,0x25,0x66,0x25,0x68,0x25,0x69,0x25,0x6A,
+ 0x1B,0x28,0x42,0x0D,0x0A,
+ /**/
+ 0x1B,0x24,0x42,0x21,0x21,0x21,0x22,0x21,0x23,0x1B,0x28,0x42,0x20,0x1B,0x24,0x42,0x21,0x25,0x21,0x26,
+ 0x21,0x27,0x21,0x28,0x1B,0x28,0x42,0x0D,0x0A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x0D,0x0A,0x1B,
+ 0x24,0x42,0x21,0x29,0x21,0x2A,0x21,0x2B,0x21,0x2C,0x21,0x2D,0x21,0x2E,0x21,0x2F,0x21,0x30,0x1B,0x28,
+ 0x42,0x0D,0x0A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x0D,0x0A,0x1B,0x24,0x42,0x21,0x31,0x21,0x32,
+ 0x21,0x33,0x21,0x34,0x21,0x35,0x21,0x36,0x21,0x37,0x21,0x38,0x1B,0x28,0x42,0x0D,0x0A,0x1B,0x24,0x42,
+ 0x21,0x39,0x21,0x3A,0x21,0x3B,0x21,0x3C,0x21,0x3D,0x21,0x3E,0x21,0x3F,0x1B,0x28,0x42,0x5C,0x0D,0x0A,
+ 0x1B,0x24,0x42,0x21,0x43,0x21,0x44,0x21,0x45,0x21,0x46,0x21,0x47,0x21,0x48,0x1B,0x28,0x42,0x0D,0x0A,
+ 0x1B,0x24,0x42,0x21,0x49,0x21,0x4A,0x21,0x4B,0x21,0x4C,0x25,0x2A,0x25,0x2B,0x25,0x2D,0x25,0x2F,0x1B,
+ 0x28,0x42,0x0D,0x0A,
+ 0x1B,0x28,0x42,0x0D,0x0A,
+
+};
+WCHAR iso2022jp_uniSource[]={
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,
+};
+WCHAR iso2022jp_uniSmSource[]={
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x00A8,0xFF3E,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0xFF7F,0xFF80
+};
+char iso2022jp_encSmSource[] ={
+ 0x1B,0x24,0x42,0x21,0x21,0x21,0x22,0x21,0x23,0x1B,
+ 0x28,0x42,0x20,0x1B,0x24,0x42,0x21,0x25,0x21,0x26
+};
+
+unsigned char sjis_encSource[]={
+ 0x83,0x9F,0x83,0xA0,0x83,0xA1,0x83,0xA2,0x83,0xA3,0x83,0xA4,0x83,0xA5,0x83,0xA6,0x83,0xA7,0x83,0xA8,
+ 0x83,0xA9,0x83,0xAA,0x83,0xAB,0x83,0xAC,0x83,0xAD,0x83,0xAE,0x83,0xAF,0x83,0xB0,0x83,0xB1,0x83,0xB2,
+ 0x83,0xB3,0x83,0xB4,0x83,0xB5,0x83,0xB6,0x83,0xBF,0x83,0xC0,0x83,0xC1,0x83,0xC2,0x83,0xC3,0x83,0xC4,
+ 0x83,0xC5,0x83,0xC6,0x83,0xC7,0x83,0xC8,0x83,0xC9,0x83,0xCA,0x83,0xCB,0x83,0xCC,0x83,0xCD,0x83,0xCE,
+ 0x83,0xCF,0x83,0xD0,0x83,0xD1,0x83,0xD2,0x83,0xD3,0x83,0xD4,0x83,0xD5,0x83,0xD6,0x84,0x46,0x84,0x40,
+ 0x84,0x41,0x84,0x42,0x84,0x43,0x84,0x44,0x84,0x45,0x84,0x47,0x84,0x48,0x84,0x49,0x84,0x4A,0x84,0x4B,
+ 0x84,0x4C,0x84,0x4D,0x84,0x4E,0x84,0x4F,0x84,0x50,0x84,0x51,0x84,0x52,0x84,0x53,0x84,0x54,0x84,0x55,
+ 0x84,0x56,0x84,0x57,0x84,0x58,0x84,0x59,0x84,0x5A,0x84,0x5B,0x84,0x5C,0x84,0x5D,0x84,0x5E,0x84,0x5F,
+ 0x84,0x60,0x84,0x70,0x84,0x71,0x84,0x72,0x84,0x73,0x84,0x74,0x84,0x75,0x84,0x77,0x84,0x78,0x84,0x79,
+ 0x84,0x7A,0x84,0x7B,0x84,0x7C,0x84,0x7D,0x84,0x7E,0x84,0x80,0x84,0x81,0x84,0x82,0x84,0x83,0x84,0x84,
+ 0x84,0x85,0x84,0x86,0x84,0x87,0x84,0x88,0x84,0x89,0x84,0x8A,0x84,0x8B,0x84,0x8C,0x84,0x8D,0x84,0x8E,
+ 0x84,0x8F,0x84,0x90,0x84,0x91,0x84,0x76,0x81,0x5D,0x81,0x5C,0x81,0x61,0x81,0x65,0x81,0x66,0x81,0x67,
+ 0x81,0x68,0x81,0xF5,0x81,0xF6,0x81,0x64,0x81,0x63,0x81,0xF1,0x81,0x8C,0x81,0x8D,0x81,0xA6,0x7E,0x81,
+ 0x8E,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,
+ 0x14,0x15,0x16,0x17,0x18,0x19,0x7F,0x1B,0x1A,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,
+ 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,
+ 0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
+ 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x83,0xA1,0x83,0xA2,0x83,0xA3,0x83,0xA4,
+ 0x83,0xA5,0x83,0xA6,0x83,0xA7,0x83,0xA8,0x83,0xA9,0x83,0xAA,0x83,0xAB,0x83,0xAC,0x83,0xAD,0x83,0xAE,
+ 0x83,0xAF,0x83,0xB0,0x83,0xB1,0x83,0xB2,0x83,0xA9,0x83,0xAA,0x83,0xAB,0x83,0xAC,0x83,0xAD,0x83,0xAE,
+ 0x83,0xAF,0x83,0xB0,0x83,0xB1,0x83,0xB2,0x83,0x9F,0x83,0xA0,0x83,0xA1,0x83,0xA2,0x83,0xA3,0x83,0xA4,
+ 0x83,0xA5,0x83,0xA6,0x83,0xA7,0x83,0xA8,0x83,0xA9,0x83,0xAA,0x83,0xAB,0x83,0xAC,0x83,0xAD,0x83,0xAE,
+ 0x83,0xAF,0x83,0xB0,0x83,0xB1,0x83,0xB2,0x83,0xB3,0x83,0xB4,0x83,0xB5,0x83,0xB6,0x83,0xBF,0x83,0xC0,
+ 0x83,0xC1,0x83,0xC2,0x83,0xC3,0x83,0xC4,0x83,0xC5,0x83,0xC6,0x83,0xC7,0x83,0xC8,0x83,0xC9,0x83,0xCA,
+ 0x83,0xCB,0x83,0xCC,0x83,0xCD,0x83,0xCE,0x83,0xCF,0x83,0xD0,0x83,0xD1,0x83,0xD2,0x83,0xD3,0x83,0xD4,
+ 0x83,0xD5,0x83,0xD6,0x84,0x46,0x84,0x40,0x84,0x41,0x84,0x42,0x84,0x43,0x84,0x44,0x84,0x45,0x84,0x47,
+ 0x84,0x48,0x84,0x49,0x84,0x4A,0x84,0x4B,0x84,0x4C,0x84,0x4D,0x84,0x4E,0x84,0x4F,0x84,0x50,0x84,0x51,
+ 0x84,0x52,0x84,0x53,0x84,0x54,0x84,0x55,0x84,0x56,0x84,0x57,0x84,0x58,0x84,0x59,0x84,0x5A,0x84,0x5B,
+ 0x84,0x5C,0x84,0x5D,0x84,0x5E,0x84,0x5F,0x84,0x60,0x84,0x70,0x84,0x71,0x84,0x72,0x84,0x73,0x84,0x74,
+ 0x84,0x75,0x84,0x77,0x84,0x78,0x84,0x79,0x84,0x7A,0x84,0x7B,0x84,0x7C,0x84,0x7D,0x84,0x7E,0x84,0x80,
+ 0x84,0x81,0x84,0x82,0x84,0x83,0x84,0x84,0x84,0x85,0x84,0x86,0x84,0x87,0x84,0x88,0x84,0x89,0x84,0x8A,
+ 0x84,0x8B,0x84,0x8C,0x84,0x8D,0x84,0x8E,0x84,0x8F,0x84,0x90,0x84,0x91,0x84,0x76,0x81,0x5D,0x81,0x5C,
+ 0x81,0x61,0x81,0x65,0x81,0x66,0x81,0x67,0x81,0x68,0x81,0xF5,0x81,0xF6,0x81,0x64,0x81,0x63,0x81,0xF1,
+ 0x81,0x8C,0x81,0x8D,0x81,0xA6,0x7E,0x81,0x8E,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,
+ 0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x7F,0x1B,0x1A,0x1D,0x1E,0x1F,
+ 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,
+ 0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
+ 0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,
+ 0x83,0xA1,0x83,0xA2,0x83,0xA3,0x83,0xA4,0x83,0xA5,0x83,0xA6,0x83,0xA7,0x83,0xA8,0x83,0xA9,0x83,0xAA,
+ 0x83,0xAB,0x83,0xAC,0x83,0xAD,0x83,0xAE,0x83,0xAF,0x83,0xB0,0x83,0xB1,0x83,0xB2,0x83,0xA9,0x83,0xAA,
+ 0x83,0xAB,0x83,0xAC,0x83,0xAD,0x83,0xAE,0x83,0xAF,0x83,0xB0,0x83,0xB1,0x83,0xB2,0x83,0x9F,0x83,0xA0,
+ 0x83,0xA1,0x83,0xA2,0x83,0xA3,0x83,0xA4,0x83,0xA5,0x83,0xA6,0x83,0xA7,0x83,0xA8,0x83,0xA9,0x83,0xAA,
+ 0x83,0xAB,0x83,0xAC,0x83,0xAD,0x83,0xAE,0x83,0xAF,0x83,0xB0,0x83,0xB1,0x83,0xB2,0x83,0xB3,0x83,0xB4,
+ 0x83,0xB5,0x83,0xB6,0x83,0xBF,0x83,0xC0,0x83,0xC1,0x83,0xC2,0x83,0xC3,0x83,0xC4,0x83,0xC5,0x83,0xC6,
+ 0x83,0xC7,0x83,0xC8,0x83,0xC9,0x83,0xCA,0x83,0xCB,0x83,0xCC,0x83,0xCD,0x83,0xCE,0x83,0xCF,0x83,0xD0,
+ 0x83,0xD1,0x83,0xD2,0x83,0xD3,0x83,0xD4,0x83,0xD5,0x83,0xD6,0x84,0x46,0x84,0x40,0x84,0x41,0x84,0x42,
+ 0x84,0x43,0x84,0x44,0x84,0x45,0x84,0x47,0x84,0x48,0x84,0x49,0x84,0x4A,0x84,0x4B,0x84,0x4C,0x84,0x4D,
+ 0x84,0x4E,0x84,0x4F,0x84,0x50,0x84,0x51,0x84,0x52,0x84,0x53,0x84,0x54,0x84,0x55,0x84,0x56,0x84,0x57,
+ 0x84,0x58,0x84,0x59,0x84,0x5A,0x84,0x5B,0x84,0x5C,0x84,0x5D,0x84,0x5E,0x84,0x5F,0x84,0x60,0x84,0x70,
+ 0x84,0x71,0x84,0x72,0x84,0x73,0x84,0x74,0x84,0x75,0x84,0x77,0x84,0x78,0x84,0x79,0x84,0x7A,0x84,0x7B,
+ 0x84,0x7C,0x84,0x7D,0x84,0x7E,0x84,0x80,0x84,0x81,0x84,0x82,0x84,0x83,0x84,0x84,0x84,0x85,0x84,0x86,
+ 0x84,0x87,0x84,0x88,
+
+};
+
+WCHAR sjis_uniSource[]={
+ 0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x03A6,0x03A7,0x03A8,0x03A9,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,
+ 0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0,
+ 0x03C1,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9,0x0401,0x0410,
+ 0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,
+ 0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,
+ 0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,
+ 0x042F,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,
+ 0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,
+ 0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,
+ 0x044D,0x044E,0x044F,0x0451,0x2010,0x2015,0x2225,0x2018,0x2019,0x201C,
+ 0x201D,0x2020,0x2021,0x2025,0x2026,0x2030,0x2032,0x2033,0x203B,0x007E,
+ 0x2103,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x007F,0x001B,0x001A,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
+ 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,
+ 0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,
+ 0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,
+ 0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+ 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,
+ 0x005A,0x005B,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x03A6,0x03A7,0x03A8,0x03A9,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,
+ 0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0,
+ 0x03C1,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9,0x0401,0x0410,
+ 0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,
+ 0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,
+ 0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,
+ 0x042F,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,
+ 0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,
+ 0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,
+ 0x044D,0x044E,0x044F,0x0451,0x2010,0x2015,0x2225,0x2018,0x2019,0x201C,
+ 0x201D,0x2020,0x2021,0x2025,0x2026,0x2030,0x2032,0x2033,0x203B,0x007E,
+ 0x2103,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x007F,0x001B,0x001A,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
+ 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,
+ 0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,
+ 0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,
+ 0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+ 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,
+ 0x005A,0x005B,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x03A6,0x03A7,0x03A8,0x03A9,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,
+ 0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0,
+ 0x03C1,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9,0x0401,0x0410,
+ 0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,
+ 0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,
+ 0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,
+ 0x042F,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,
+ 0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,
+ 0x0443,0x0444,0x0445,0x0446,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,
+
+ 0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x03A6,0x03A7,0x03A8,0x03A9,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,
+ 0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0,
+ 0x03C1,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9,0x0401,0x0410,
+ 0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,
+ 0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,
+ 0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,
+ 0x042F,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,
+ 0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,
+ 0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,
+ 0x044D,0x044E,0x044F,0x0451,0x2010,0x2015,0x2225,0x2018,0x2019,0x201C,
+ 0x201D,0x2020,0x2021,0x2025,0x2026,0x2030,0x2032,0x2033,0x203B,0x007E,
+ 0x2103,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x007F,0x001B,0x001A,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
+ 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,
+ 0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,
+ 0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,
+ 0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+ 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,
+ 0x005A,0x005B,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+ 0x03A6,0x03A7,0x03A8,0x03A9,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,
+ 0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,0x03C0,
+ 0x03C1,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9,0x0401,0x0410,
+ 0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,
+ 0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,
+ 0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,
+ 0x042F,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,
+ 0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,
+ 0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,
+ 0x044D,0x044E,0x044F,0x0451,0x2010,0x2015,0x2225,0x2018,0x2019,0x201C,
+ 0x201D,0x2020,0x2021,0x2025,0x2026,0x2030,0x2032,0x2033,0x203B,0x007E,
+ 0x2103,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x007F,0x001B,0x001A,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,
+
+};
+WCHAR sjis_uniSmSource[]={
+ 0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,
+ 0x039B,0x039C,0x039D,0x039E,0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,
+};
+unsigned char sjis_encSmSource[]={
+ 0x83,0x9F,0x83,0xA0,0x83,0xA1,0x83,0xA2,0x83,0xA3,0x83,0xA4,0x83,0xA5,0x83,0xA6,0x83,0xA7,0x83,0xA8,
+
+};
+
+unsigned char eucjp_encSource[]={
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x8E,0xE3,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,
+ 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,
+ 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x8E,0xE4,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,
+ 0x8B,0x8C,0x8D,0xA6,0xD4,0xA6,0xD5,0xA6,0xD6,0xA6,0xD7,0xA6,0xD8,0xA7,0xA7,0xA7,0xA1,0xA7,0xA2,0xA7,
+ 0xA3,0xA7,0xA4,0xA7,0xA5,0xA7,0xA6,0xA7,0xA8,0xA7,0xA9,0xA7,0xAA,0xA7,0xAB,0xA7,0xAC,0xA7,0xAD,0xA7,
+ 0xAE,0xA7,0xAF,0xA7,0xB0,0xA7,0xB1,0xA7,0xB2,0xA7,0xB3,0xA7,0xB4,0xA7,0xB5,0xA7,0xB6,0xA7,0xB7,0xA7,
+ 0xB8,0xA7,0xB9,0xA7,0xBA,0xA7,0xBB,0xA7,0xBC,0xA7,0xBD,0xA7,0xBE,0xA7,0xBF,0xA7,0xC0,0xA7,0xC1,0xA7,
+ 0xD1,0xA7,0xD2,0xA7,0xD3,0xA7,0xD4,0xA7,0xD5,0xA7,0xD6,0xA7,0xD8,0xA7,0xD9,0xA7,0xDA,0xA7,0xDB,0xA7,
+ 0xDC,0xA7,0xDD,0xA7,0xDE,0xA7,0xDF,0xA7,0xE0,0xA7,0xE1,0xA7,0xE2,0xA7,0xE3,0xA7,0xE4,0xA7,0xE5,0xA7,
+ 0xE6,0xA7,0xE7,0xA7,0xE8,0xA7,0xE9,0xA7,0xEA,0xA7,0xEB,0xA7,0xEC,0xA7,0xED,0xA7,0xEE,0xA7,0xEF,0xA7,
+ 0xF0,0xA7,0xF1,0xA7,0xD7,0xA1,0xBE,0xA1,0xBD,0xA1,0xC2,0xA1,0xC6,0xA1,0xC7,0xA1,0xC8,0xA1,0xC9,0xA2,
+ 0xF7,0xA2,0xF8,0xA1,0xC5,0xA1,0xC4,0xA2,0xF3,0xA1,0xEC,0xA1,0xED,0xA2,0xA8,0x7E,0xA1,0xEE,0x8F,0xF3,
+ 0xB8,0x8F,0xF3,0xB9,0xA2,0xF2,0x8F,0xF3,0xAB,0x8F,0xF3,0xAC,0x8F,0xF3,0xAD,0x8F,0xF3,0xAE,0x8F,0xF3,
+ 0xAF,0x8F,0xF3,0xB0,0x8F,0xF3,0xB1,0x8F,0xF3,0xB2,0x8F,0xF3,0xB3,0x8F,0xF3,0xB4,0x8F,0xF3,0xA1,0x8F,
+ 0xF3,0xA2,0x8F,0xF3,0xA3,0x8F,0xF3,0xA4,0x8F,0xF3,0xA5,0x8F,0xF3,0xA6,0x8F,0xF3,0xA7,0xA1,0xC2,0x01,
+ 0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,
+ 0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
+ 0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,
+ 0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,
+ 0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x8E,0xE3,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+ 0x79,0x7A,0x7B,0x7C,0x7D,0x8E,0xE4,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,
+ 0x8C,0x8D,0xA6,0xD4,0xA6,0xD5,0xA6,0xD6,0xA6,0xD7,0xA6,0xD8,0xA7,0xA7,0xA7,0xA1,0xA7,0xA2,0xA7,0xA3,
+ 0xA7,0xA4,0xA7,0xA5,0xA7,0xA6,0xA7,0xA8,0xA7,0xA9,0xA7,0xAA,0xA7,0xAB,0xA7,0xAC,0xA7,0xAD,0xA7,0xAE,
+ 0xA7,0xAF,0xA7,0xB0,0xA7,0xB1,0xA7,0xB2,0xA7,0xB3,0xA7,0xB4,0xA7,0xB5,0xA7,0xB6,0xA7,0xB7,0xA7,0xB8,
+ 0xA7,0xB9,0xA7,0xBA,0xA7,0xBB,0xA7,0xBC,0xA7,0xBD,0xA7,0xBE,0xA7,0xBF,0xA7,0xC0,0xA7,0xC1,0xA7,0xD1,
+ 0xA7,0xD2,0xA7,0xD3,0xA7,0xD4,0xA7,0xD5,0xA7,0xD6,0xA7,0xD8,0xA7,0xD9,0xA7,0xDA,0xA7,0xDB,0xA7,0xDC,
+ 0xA7,0xDD,0xA7,0xDE,0xA7,0xDF,0xA7,0xE0,0xA7,0xE1,0xA7,0xE2,0xA7,0xE3,0xA7,0xE4,0xA7,0xE5,0xA7,0xE6,
+ 0xA7,0xE7,0xA7,0xE8,0xA7,0xE9,0xA7,0xEA,0xA7,0xEB,0xA7,0xEC,0xA7,0xED,0xA7,0xEE,0xA7,0xEF,0xA7,0xF0,
+ 0xA7,0xF1,0xA7,0xD7,0xA1,0xBE,0xA1,0xBD,0xA1,0xC2,0xA1,0xC6,0xA1,0xC7,0xA1,0xC8,0xA1,0xC9,0xA2,0xF7,
+ 0xA2,0xF8,0xA1,0xC5,0xA1,0xC4,0xA2,0xF3,0xA1,0xEC,0xA1,0xED,0xA2,0xA8,0x7E,0xA1,0xEE,0x8F,0xF3,0xB8,
+ 0x8F,0xF3,0xB9,0xA2,0xF2,0x8F,0xF3,0xAB,0x8F,0xF3,0xAC,0x8F,0xF3,0xAD,0x8F,0xF3,0xAE,0x8F,0xF3,0xAF,
+ 0x8F,0xF3,0xB0,0x8F,0xF3,0xB1,0x8F,0xF3,0xB2,0x8F,0xF3,0xB3,0x8F,0xF3,0xB4,0x8F,0xF3,0xA1,0x8F,0xF3,
+ 0xA2,0x8F,0xF3,0xA3,0x8F,0xF3,0xA4,0x8F,0xF3,0xA5,0x8F,0xF3,0xA6,0x8F,0xF3,0xA7,0xA1,0xC2,0x01,0x02,
+ 0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,
+ 0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,
+ 0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,
+ 0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,
+ 0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x8E,0xE3,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,
+ 0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
+ 0x7A,0x7B,0x7C,0x7D,0x8E,0xE4,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,
+ 0x8D,0xA6,0xD4,0xA6,0xD5,0xA6,0xD6,0xA6,0xD7,0xA6,0xD8,0xA7,0xA7,0xA7,0xA1,0xA7,0xA2,0xA7,0xA3,0xA7,
+ 0xA4,0xA7,0xA5,0xA7,0xA6,0xA7,0xA8,0xA7,0xA9,0xA7,0xAA,0xA7,0xAB,0xA7,0xAC,0xA7,0xAD,0xA7,0xAE,0xA7,
+ 0xAF,0xA7,0xB0,0xA7,0xB1,0xA7,0xB2,0xA7,0xB3,0xA7,0xB4,0xA7,0xB5,0xA7,0xB6,0xA7,0xB7,0xA7,0xB8,0xA7,
+ 0xB9,0xA7,0xBA,0xA7,0xBB,0xA7,0xBC,0xA7,0xBD,0xA7,0xBE,0xA7,0xBF,0xA7,0xC0,0xA7,0xC1,0xA7,0xD1,0xA7,
+ 0xD2,0xA7,0xD3,0xA7,0xD4,0xA7,0xD5,0xA7,0xD6,0xA7,0xD8,0xA7,0xD9,0xA7,0xDA,0xA7,0xDB,0xA7,0xDC,0xA7,
+ 0xDD,0xA7,0xDE,0xA7,0xDF,0xA7,0xE0,0xA7,0xE1,0xA7,0xE2,0xA7,0xE3,0xA7,0xE4,0xA7,0xE5,0xA7,0xE6,0xA7,
+ 0xF1,0xA7,0xD7,0xA1,0xBE,
+};
+
+WCHAR eucjp_uniSource[]={
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x7DC7,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,
+ 0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
+ 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,
+ 0x007A,0x007B,0x007C,0x007D,0x30FB,0x0080,0x2260,0x30E4,0x30FB,0x32A7,
+ 0x708E,0x65E7,0x9D3B,0xFF92,0x03C6,0x03C7,0x03C8,0x03C9,0x0401,0x0410,
+ 0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,
+ 0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,
+ 0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,
+ 0x042F,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,
+ 0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,
+ 0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,
+ 0x044D,0x044E,0x044F,0x0451,0x2010,0x2015,0x2225,0x2018,0x2019,0x201C,
+ 0x201D,0x2020,0x2021,0x2025,0x2026,0x2030,0x2032,0x2033,0x203B,0x007E,
+ 0x2103,0x5834,0x0057,0x5834,0x0058,0x212B,0x5834,0x004A,0x5834,0x004B,
+ 0x5834,0x004C,0x5834,0x004D,0x5834,0x004E,0x5834,0x004F,0x5834,0x0050,
+ 0x5834,0x0051,0x5834,0x0052,0x5834,0x0053,0x5834,0x0040,0x5834,0x0041,
+ 0x5834,0x0042,0x5834,0x0043,0x5834,0x0044,0x5834,0x0045,0x5834,0x0046,
+ 0x2225,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
+ 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,
+ 0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,
+ 0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,
+ 0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+ 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,
+ 0x005A,0x005B,0x7DC7,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+ 0x0079,0x007A,0x007B,0x007C,0x007D,0x30FB,0x0080,0x2260,0x30E4,0x30FB,
+ 0x32A7,0x708E,0x65E7,0x9D3B,0xFF92,0x03C6,0x03C7,0x03C8,0x03C9,0x0401,
+ 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,
+ 0x041A,0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,
+ 0x0424,0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,
+ 0x042E,0x042F,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,
+ 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,
+ 0x0442,0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,
+ 0x044C,0x044D,0x044E,0x044F,0x0451,0x2010,0x2015,0x2225,0x2018,0x2019,
+ 0x201C,0x201D,0x2020,0x2021,0x2025,0x2026,0x2030,0x2032,0x2033,0x203B,
+ 0x007E,0x2103,0x5834,0x0057,0x5834,0x0058,0x212B,0x5834,0x004A,0x5834,
+ 0x004B,0x5834,0x004C,0x5834,0x004D,0x5834,0x004E,0x5834,0x004F,0x5834,
+ 0x0050,0x5834,0x0051,0x5834,0x0052,0x5834,0x0053,0x5834,0x0040,0x5834,
+ 0x0041,0x5834,0x0042,0x5834,0x0043,0x5834,0x0044,0x5834,0x0045,0x5834,
+ 0x0046,0x2225,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,
+ 0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,
+ 0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,
+ 0x001D,0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,
+ 0x0027,0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,
+ 0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,
+ 0x003B,0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x7DC7,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,
+ 0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,
+ 0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
+ 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x30FB,0x0080,0x2260,0x30E4,
+ 0x30FB,0x32A7,0x708E,0x65E7,0x9D3B,0xFF92,0x03C6,0x03C7,0x03C8,0x03C9,
+ 0x0401,0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,
+ 0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,
+ 0x0423,0x0424,0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,
+ 0x042D,0x042E,0x042F,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,
+ 0x0437,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,
+ 0x0441,0x0442,0x0443,0x0444,0x044F,0x0451,0x2010,0x043E,0x043F,0x0440,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x7DC7,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,
+ 0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
+ 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,
+ 0x007A,0x007B,0x007C,0x007D,0x30FB,0x0080,0x2260,0x30E4,0x30FB,0x32A7,
+ 0x708E,0x65E7,0x9D3B,0xFF92,0x03C6,0x03C7,0x03C8,0x03C9,0x0401,0x0410,
+ 0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,
+ 0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,
+ 0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,
+ 0x042F,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,
+ 0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,
+ 0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,
+ 0x044D,0x044E,0x044F,0x0451,0x2010,0x2015,0x2225,0x2018,0x2019,0x201C,
+ 0x201D,0x2020,0x2021,0x2025,0x2026,0x2030,0x2032,0x2033,0x203B,0x007E,
+ 0x2103,0x5834,0x0057,0x5834,0x0058,0x212B,0x5834,0x004A,0x5834,0x004B,
+ 0x5834,0x004C,0x5834,0x004D,0x5834,0x004E,0x5834,0x004F,0x5834,0x0050,
+ 0x5834,0x0051,0x5834,0x0052,0x5834,0x0053,0x5834,0x0040,0x5834,0x0041,
+ 0x5834,0x0042,0x5834,0x0043,0x5834,0x0044,0x5834,0x0045,0x5834,0x0046,
+ 0x2225,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
+ 0x0041,0x5834,0x0042,0x5834,
+};
+
+WCHAR eucjp_uniSmSource[]={
+ 0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,
+ 0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,
+};
+unsigned char eucjp_encSmSource[]={
+ 0xA7,0xDD,0xA7,0xDE,0xA7,0xDF,0xA7,0xE0,0xA7,0xE1,0xA7,0xE2,0xA7,0xE3,0xA7,0xE4,0xA7,0xE5,0xA7,0xE6,
+};
+
+unsigned char iso2022kr_encSource[]={
+ 0x1B,0x24,0x29,0x43,
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x0E,
+ 0x73,0x51,0x69,0x51,0x73,0x29,0x50,0x60,0x69,0x52,0x5A,0x63,0x62,0x52,0x76,0x22,0x61,0x74,0x5A,0x64,
+ 0x0F,0x0A,0x0D,0x0E,0x67,0x55,0x75,0x3F,0x4F,0x22,0x4D,0x2F,0x0F,0x0A,0x0D,0x0F,0x0A,0x0D,
+ /**/
+
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x0E,
+ 0x73,0x51,0x69,0x51,0x73,0x29,0x50,0x60,0x69,0x52,0x5A,0x63,0x62,0x52,0x76,0x22,0x61,0x74,0x5A,0x64,
+ 0x0F,0x0A,0x0D,0x0E,0x67,0x55,0x75,0x3F,0x4F,0x22,0x4D,0x2F,0x0F,0x0A,0x0D,0x0F,0x0A,0x0D,
+ /**/
+
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x0E,
+ 0x73,0x51,0x69,0x51,0x73,0x29,0x50,0x60,0x69,0x52,0x5A,0x63,0x62,0x52,0x76,0x22,0x61,0x74,0x5A,0x64,
+ 0x0F,0x0A,0x0D,0x0E,0x67,0x55,0x75,0x3F,0x4F,0x22,0x4D,0x2F,0x0F,0x0A,0x0D,0x0F,0x0A,0x0D,
+ /**/
+
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x0E,
+ 0x73,0x51,0x69,0x51,0x73,0x29,0x50,0x60,0x69,0x52,0x5A,0x63,0x62,0x52,0x76,0x22,0x61,0x74,0x5A,0x64,
+ 0x0F,0x0A,0x0D,0x0E,0x67,0x55,0x75,0x3F,0x4F,0x22,0x4D,0x2F,0x0F,0x0A,0x0D,0x0F,0x0A,0x0D,
+ /**/
+
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x0E,
+ 0x73,0x51,0x69,0x51,0x73,0x29,0x50,0x60,0x69,0x52,0x5A,0x63,0x62,0x52,0x76,0x22,0x61,0x74,0x5A,0x64,
+ 0x0F,0x0A,0x0D,0x0E,0x67,0x55,0x75,0x3F,0x4F,0x22,0x4D,0x2F,0x0F,0x0A,0x0D,0x0F,0x0A,0x0D,
+ /**/
+
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x0E,
+ 0x73,0x51,0x69,0x51,0x73,0x29,0x50,0x60,0x69,0x52,0x5A,0x63,0x62,0x52,0x76,0x22,0x61,0x74,0x5A,0x64,
+ 0x0F,0x0A,0x0D,0x0E,0x67,0x55,0x75,0x3F,0x4F,0x22,0x4D,0x2F,0x0F,0x0A,0x0D,0x0F,0x0A,0x0D,
+ /**/
+
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x0E,
+ 0x73,0x51,0x69,0x51,0x73,0x29,0x50,0x60,0x69,0x52,0x5A,0x63,0x62,0x52,0x76,0x22,0x61,0x74,0x5A,0x64,
+ 0x0F,0x0A,0x0D,0x0E,0x67,0x55,0x75,0x3F,0x4F,0x22,0x4D,0x2F,0x0F,0x0A,0x0D,0x0F,0x0A,0x0D,
+ /**/
+
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x0E,
+ 0x73,0x51,0x69,0x51,0x73,0x29,0x50,0x60,0x69,0x52,0x5A,0x63,0x62,0x52,0x76,0x22,0x61,0x74,0x5A,0x64,
+ 0x0F,0x0A,0x0D,0x0E,0x67,0x55,0x75,0x3F,0x4F,0x22,0x4D,0x2F,0x0F,0x0A,0x0D,0x0F,0x0A,0x0D,
+ /**/
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x0E,
+ 0x73,0x51,0x69,0x51,0x73,0x29,0x50,0x60,0x69,0x52,0x5A,0x63,0x62,0x52,0x76,0x22,0x61,0x74,0x5A,0x64,
+ 0x0F,0x0A,0x0D,0x0E,0x67,0x55,0x75,0x3F,0x4F,0x22,0x4D,0x2F,0x0F,0x0A,0x0D,0x0F,0x0A,0x0D,
+ /**/
+
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x0E,
+ 0x73,0x51,0x69,0x51,0x73,0x29,0x50,0x60,0x69,0x52,0x5A,0x63,0x62,0x52,0x76,0x22,0x61,0x74,0x5A,0x64,
+ 0x0F,0x0A,0x0D,0x0E,0x67,0x55,0x75,0x3F,0x4F,0x22,0x4D,0x2F,0x0F,0x0A,0x0D,0x0F,0x0A,0x0D,
+ /**/
+
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D,0x0E,0x65,
+ 0x61,0x64,0x4B,0x57,0x23,0x5B,0x42,0x4A,0x7E,0x4F,0x4F,0x30,0x21,0x30,0x22,0x0E,0x30,0x23,
+ 0x30,0x24,0x30,0x25,0x30,0x26,0x0F,0x25,0x26,0x27,0x0A,0x0D,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,
+ 0x0F,0x0A,0x0D,
+
+};
+WCHAR iso2022kr_uniSource[]={
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029,0x002A,0x002B,
+ 0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB,0x53CD,0x53D4,
+ 0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2,0x53E3,0x53E4,0x53CD,
+ /**/
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+ 0xAC09,0x0025,0x0026,0x0027
+
+};
+
+unsigned char iso2022kr_encSmSource[]={
+ 0x1B,0x24,0x29,0x43,
+ 0x0E,0x6E,0x31,0x6E,0x32,0x76,0x4D,0x6E,0x52,0x56,0x46,0x60,0x65,0x73,0x3B,0x0F,0x0A,0x0D
+};
+WCHAR iso2022kr_uniSmSource[]={
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D,0x9F6C,
+ 0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04,0xAC07,0xAC08,
+};
+unsigned char gb2312_encSource[]={
+ 0x82,0x6C,0x82,0x6D,0x82,0x6E,0x82,0x6F,0x82,0x70,0x82,0x71,0x82,0x72,0x82,0x73,0x82,0x74,0x82,0x75,
+ 0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x82,0x76,0x82,0x77,0x82,0x78,0x82,0x79,0x82,0x7A,
+ 0x82,0x7B,0x82,0x7C,0x82,0x7D,0x82,0x7E,0x82,0x80,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
+ 0x82,0x81,0x82,0x82,0x82,0x83,0x82,0x84,0x82,0x85,0x82,0x86,0x82,0x87,0x82,0x88,0x82,0x89,0x82,0x8A,
+ 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x82,0x8B,0x82,0x8C,0x82,0x8D,0x82,0x8E,0x82,0x8F,
+ 0x82,0x90,0x82,0x91,0x82,0x92,0x82,0x93,0x82,0x94,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,
+ 0x82,0x95,0x82,0x96,0x82,0x97,0x82,0x98,0x82,0x99,0x82,0x9A,0x82,0x9B,0x82,0x9C,0x82,0x9D,0x82,0x9E,
+ 0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x82,0x9F,0x82,0xA0,0x82,0xA1,0x82,0xA2,0x82,0xA3,
+ 0x82,0xA4,0x82,0xA5,0x82,0xA6,0x82,0xA7,0x82,0xA8,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
+ 0x82,0xA9,0x82,0xAA,0x82,0xAB,0x82,0xAC,0x82,0xAD,0x82,0xAE,0x82,0xAF,0x82,0xB0,0x82,0xB1,0x82,0xB2,
+ 0x82,0xC7,0x82,0xC8,0x82,0xC9,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x82,0xB3,0x82,0xB4,0x82,0xB5,0x82,
+ 0xB6,0x82,0xB7,0x82,0xB8,0x82,0xB9,0x82,0xBA,0x82,0xBB,0x82,0xBC,0x82,0xBD,0x82,0xBE,0x82,0xBF,0x82,
+ 0xC0,0x82,0xC1,0x82,0xC2,0x82,0xC3,0x82,0xC4,0x82,0xC5,0x82,0xC6,
+
+ 0x82,0x6C,0x82,0x6D,0x82,0x6E,0x82,0x6F,0x82,0x70,0x82,0x71,0x82,0x72,0x82,0x73,0x82,0x74,0x82,0x75,
+ 0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x82,0x76,0x82,0x77,0x82,0x78,0x82,0x79,0x82,0x7A,
+ 0x82,0x7B,0x82,0x7C,0x82,0x7D,0x82,0x7E,0x82,0x80,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
+ 0x82,0x81,0x82,0x82,0x82,0x83,0x82,0x84,0x82,0x85,0x82,0x86,0x82,0x87,0x82,0x88,0x82,0x89,0x82,0x8A,
+ 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x82,0x8B,0x82,0x8C,0x82,0x8D,0x82,0x8E,0x82,0x8F,
+ 0x82,0x90,0x82,0x91,0x82,0x92,0x82,0x93,0x82,0x94,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,
+ 0x82,0x95,0x82,0x96,0x82,0x97,0x82,0x98,0x82,0x99,0x82,0x9A,0x82,0x9B,0x82,0x9C,0x82,0x9D,0x82,0x9E,
+ 0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x82,0x9F,0x82,0xA0,0x82,0xA1,0x82,0xA2,0x82,0xA3,
+ 0x82,0xA4,0x82,0xA5,0x82,0xA6,0x82,0xA7,0x82,0xA8,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
+ 0x82,0xA9,0x82,0xAA,0x82,0xAB,0x82,0xAC,0x82,0xAD,0x82,0xAE,0x82,0xAF,0x82,0xB0,0x82,0xB1,0x82,0xB2,
+ 0x82,0xC7,0x82,0xC8,0x82,0xC9,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x82,0xB3,0x82,0xB4,0x82,0xB5,0x82,
+ 0xB6,0x82,0xB7,0x82,0xB8,0x82,0xB9,0x82,0xBA,0x82,0xBB,0x82,0xBC,0x82,0xBD,0x82,0xBE,0x82,0xBF,0x82,
+ 0xC0,0x82,0xC1,0x82,0xC2,0x82,0xC3,0x82,0xC4,0x82,0xC5,0x82,0xC6,
+
+ 0x82,0x6C,0x82,0x6D,0x82,0x6E,0x82,0x6F,0x82,0x70,0x82,0x71,0x82,0x72,0x82,0x73,0x82,0x74,0x82,0x75,
+ 0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x82,0x76,0x82,0x77,0x82,0x78,0x82,0x79,0x82,0x7A,
+ 0x82,0x7B,0x82,0x7C,0x82,0x7D,0x82,0x7E,0x82,0x80,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
+ 0x82,0x81,0x82,0x82,0x82,0x83,0x82,0x84,0x82,0x85,0x82,0x86,0x82,0x87,0x82,0x88,0x82,0x89,0x82,0x8A,
+ 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x82,0x8B,0x82,0x8C,0x82,0x8D,0x82,0x8E,0x82,0x8F,
+ 0x82,0x90,0x82,0x91,0x82,0x92,0x82,0x93,0x82,0x94,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,
+ 0x82,0x95,0x82,0x96,0x82,0x97,0x82,0x98,0x82,0x99,0x82,0x9A,0x82,0x9B,0x82,0x9C,0x82,0x9D,0x82,0x9E,
+ 0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x82,0x9F,0x82,0xA0,0x82,0xA1,0x82,0xA2,0x82,0xA3,
+ 0x82,0xA4,0x82,0xA5,0x82,0xA6,0x82,0xA7,0x82,0xA8,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
+ 0x82,0xA9,0x82,0xAA,0x82,0xAB,0x82,0xAC,0x82,0xAD,0x82,0xAE,0x82,0xAF,0x82,0xB0,0x82,0xB1,0x82,0xB2,
+ 0x82,0xC7,0x82,0xC8,0x82,0xC9,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x82,0xB3,0x82,0xB4,0x82,0xB5,0x82,
+ 0xB6,0x82,0xB7,0x82,0xB8,0x82,0xB9,0x82,0xBA,0x82,0xBB,0x82,0xBC,0x82,0xBD,0x82,0xBE,0x82,0xBF,0x82,
+ 0xC0,0x82,0xC1,0x82,0xC2,0x82,0xC3,0x82,0xC4,0x82,0xC5,0x82,0xC6,
+
+ 0x82,0x6C,0x82,0x6D,0x82,0x6E,0x82,0x6F,0x82,0x70,0x82,0x71,0x82,0x72,0x82,0x73,0x82,0x74,0x82,0x75,
+ 0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x82,0x76,0x82,0x77,0x82,0x78,0x82,0x79,0x82,0x7A,
+ 0x82,0x7B,0x82,0x7C,0x82,0x7D,0x82,0x7E,0x82,0x80,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
+ 0x82,0x81,0x82,0x82,0x82,0x83,0x82,0x84,0x82,0x85,0x82,0x86,0x82,0x87,0x82,0x88,0x82,0x89,0x82,0x8A,
+ 0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x82,0x8B,0x82,0x8C,0x82,0x8D,0x82,0x8E,0x82,0x8F,
+ 0x82,0x90,0x82,0x91,0x82,0x92,0x82,0x93,0x82,0x94,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,
+ 0x82,0x95,0x82,0x96,0x82,0x97,0x82,0x98,0x82,0x99,0x82,0x9A,0x82,0x9B,0x82,0x9C,0x82,0x9D,0x82,0x9E,
+ 0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x82,0x9F,0x82,0xA0,0x82,0xA1,0x82,0xA2,0x82,0xA3,
+ 0x82,0xA4,0x82,0xA5,0x82,0xA6,0x82,0xA7,0x82,0xA8,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
+ 0x82,0xA9,0x82,0xAA,0x82,0xAB,0x82,0xAC,0x82,0xAD,0x82,0xAE,0x82,0xAF,0x82,0xB0,0x82,0xB1,0x82,0xB2,
+ 0x82,0xC7,0x82,0xC8,0x82,0xC9,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x82,0xB3,0x82,0xB4,0x82,0xB5,0x82,
+ 0xB6,0x82,0xB7,0x82,0xB8,0x82,0xB9,0x82,0xBA,0x82,0xBB,0x82,0xBC,0x82,0xBD,0x82,0xBE,0x82,0xBF,0x82,
+ 0xC0,0x82,0xC1,0x82,0xC2,0x82,0xC3,0x82,0xC4,0x82,0xC5,0x82,0xC6,0x82,0xC4,0x82,
+};
+WCHAR gb2312_uniSource[]={
+ 0x2103,0x2116,0x2121,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
+ 0x2167,0x2168,0x2169,0x216A,0x216B,0x2170,0x2171,0x2172,0x2173,0x2174,
+ 0x2175,0x2176,0x2177,0x2178,0x2179,0x2190,0x2191,0x2192,0x2193,0x2208,
+ 0x220F,0x2211,0x221A,0x221D,0x221E,0x2220,0x2225,0x2227,0x2228,0x2229,
+ 0x222A,0x222B,0x222E,0x2234,0x2235,0x2236,0x2237,0x223D,0x2248,0x224C,
+ 0x2260,0x2261,0x2264,0x2265,0x226E,0x226F,0x2299,0x22A5,0x2312,0x2460,
+ 0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,0x2469,0x2474,
+ 0x2475,0x2476,0x2477,0x2478,0x2479,0x247A,0x247B,0x247C,0x247D,0x247E,
+ 0x247F,0x2480,0x2481,0x2482,0x2483,0x2484,0x2485,0x2486,0x2487,0x2488,
+ 0x2489,0x248A,0x248B,0x248C,0x248D,0x248E,0x248F,0x2490,0x2491,0x2492,
+ 0x2493,0x2494,0x2495,0x2496,0x2497,0x2498,0x2499,0x249A,0x249B,0x2500,
+ 0x2501,0x2502,0x2503,0x2504,0x2505,0x2506,0x2507,0x2508,0x2509,0x250A,
+ 0x250B,0x250C,0x250D,0x250E,0x250F,0x2510,0x2511,0x2512,0x2513,0x2514,
+ 0x2515,0x2516,0x2517,0x2518,0x2519,0x251A,0x251B,0x251C,0x251D,0x251E,
+ 0x251F,0x2520,0x2521,0x2522,0x2523,0x2524,0x2525,0x2526,0x2527,0x2528,
+ 0x2529,0x252A,0x252B,0x252C,0x252D,0x252E,0x252F,0x2530,0x2531,0x2532,
+ 0x2533,0x2534,0x2535,0x2536,0x2537,0x2538,0x2539,0x253A,0x253B,0x253C,
+ 0x253D,0x253E,0x253F,0x2540,0x2541,0x2542,0x2543,0x2544,0x2545,0x2546,
+ 0x2547,0x2548,0x2549,0x254A,0x254B,0x25A0,0x25A1,0x25B2,0x25B3,0x25BC,
+ 0x25BD,0x25C6,0x25C7,0x25CB,0x25CE,0x25CF,0x2605,0x2606,0x2640,0x2642,
+ 0x0101,0x0113,0x011B,0x012B,0x014D,0x016B,0x01CE,0x01D0,0x01D2,0x01D4,
+ 0x01D6,0x01D8,0x01DA,0x01DC,0x02C7,0x02C9,0x0391,0x0392,0x0393,0x0394,
+ 0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,
+ 0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,
+ 0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,
+
+ 0x2103,0x2116,0x2121,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
+ 0x2167,0x2168,0x2169,0x216A,0x216B,0x2170,0x2171,0x2172,0x2173,0x2174,
+ 0x2175,0x2176,0x2177,0x2178,0x2179,0x2190,0x2191,0x2192,0x2193,0x2208,
+ 0x220F,0x2211,0x221A,0x221D,0x221E,0x2220,0x2225,0x2227,0x2228,0x2229,
+ 0x222A,0x222B,0x222E,0x2234,0x2235,0x2236,0x2237,0x223D,0x2248,0x224C,
+ 0x2260,0x2261,0x2264,0x2265,0x226E,0x226F,0x2299,0x22A5,0x2312,0x2460,
+ 0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,0x2469,0x2474,
+ 0x2475,0x2476,0x2477,0x2478,0x2479,0x247A,0x247B,0x247C,0x247D,0x247E,
+ 0x247F,0x2480,0x2481,0x2482,0x2483,0x2484,0x2485,0x2486,0x2487,0x2488,
+ 0x2489,0x248A,0x248B,0x248C,0x248D,0x248E,0x248F,0x2490,0x2491,0x2492,
+ 0x2493,0x2494,0x2495,0x2496,0x2497,0x2498,0x2499,0x249A,0x249B,0x2500,
+ 0x2501,0x2502,0x2503,0x2504,0x2505,0x2506,0x2507,0x2508,0x2509,0x250A,
+ 0x250B,0x250C,0x250D,0x250E,0x250F,0x2510,0x2511,0x2512,0x2513,0x2514,
+ 0x2515,0x2516,0x2517,0x2518,0x2519,0x251A,0x251B,0x251C,0x251D,0x251E,
+ 0x251F,0x2520,0x2521,0x2522,0x2523,0x2524,0x2525,0x2526,0x2527,0x2528,
+ 0x2529,0x252A,0x252B,0x252C,0x252D,0x252E,0x252F,0x2530,0x2531,0x2532,
+ 0x2533,0x2534,0x2535,0x2536,0x2537,0x2538,0x2539,0x253A,0x253B,0x253C,
+ 0x253D,0x253E,0x253F,0x2540,0x2541,0x2542,0x2543,0x2544,0x2545,0x2546,
+ 0x2547,0x2548,0x2549,0x254A,0x254B,0x25A0,0x25A1,0x25B2,0x25B3,0x25BC,
+ 0x25BD,0x25C6,0x25C7,0x25CB,0x25CE,0x25CF,0x2605,0x2606,0x2640,0x2642,
+ 0x0101,0x0113,0x011B,0x012B,0x014D,0x016B,0x01CE,0x01D0,0x01D2,0x01D4,
+ 0x01D6,0x01D8,0x01DA,0x01DC,0x02C7,0x02C9,0x0391,0x0392,0x0393,0x0394,
+ 0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,
+ 0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,
+ 0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,
+
+ 0x2103,0x2116,0x2121,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
+ 0x2167,0x2168,0x2169,0x216A,0x216B,0x2170,0x2171,0x2172,0x2173,0x2174,
+ 0x2175,0x2176,0x2177,0x2178,0x2179,0x2190,0x2191,0x2192,0x2193,0x2208,
+ 0x220F,0x2211,0x221A,0x221D,0x221E,0x2220,0x2225,0x2227,0x2228,0x2229,
+ 0x222A,0x222B,0x222E,0x2234,0x2235,0x2236,0x2237,0x223D,0x2248,0x224C,
+ 0x2260,0x2261,0x2264,0x2265,0x226E,0x226F,0x2299,0x22A5,0x2312,0x2460,
+ 0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,0x2469,0x2474,
+ 0x2475,0x2476,0x2477,0x2478,0x2479,0x247A,0x247B,0x247C,0x247D,0x247E,
+ 0x247F,0x2480,0x2481,0x2482,0x2483,0x2484,0x2485,0x2486,0x2487,0x2488,
+ 0x2489,0x248A,0x248B,0x248C,0x248D,0x248E,0x248F,0x2490,0x2491,0x2492,
+ 0x2493,0x2494,0x2495,0x2496,0x2497,0x2498,0x2499,0x249A,0x249B,0x2500,
+ 0x2501,0x2502,0x2503,0x2504,0x2505,0x2506,0x2507,0x2508,0x2509,0x250A,
+ 0x250B,0x250C,0x250D,0x250E,0x250F,0x2510,0x2511,0x2512,0x2513,0x2514,
+ 0x2515,0x2516,0x2517,0x2518,0x2519,0x251A,0x251B,0x251C,0x251D,0x251E,
+ 0x251F,0x2520,0x2521,0x2522,0x2523,0x2524,0x2525,0x2526,0x2527,0x2528,
+ 0x2529,0x252A,0x252B,0x252C,0x252D,0x252E,0x252F,0x2530,0x2531,0x2532,
+ 0x2533,0x2534,0x2535,0x2536,0x2537,0x2538,0x2539,0x253A,0x253B,0x253C,
+ 0x253D,0x253E,0x253F,0x2540,0x2541,0x2542,0x2543,0x2544,0x2545,0x2546,
+ 0x2547,0x2548,0x2549,0x254A,0x254B,0x25A0,0x25A1,0x25B2,0x25B3,0x25BC,
+ 0x25BD,0x25C6,0x25C7,0x25CB,0x25CE,0x25CF,0x2605,0x2606,0x2640,0x2642,
+ 0x0101,0x0113,0x011B,0x012B,0x014D,0x016B,0x01CE,0x01D0,0x01D2,0x01D4,
+ 0x01D6,0x01D8,0x01DA,0x01DC,0x02C7,0x02C9,0x0391,0x0392,0x0393,0x0394,
+ 0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,
+ 0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,
+ 0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,
+
+ 0x2103,0x2116,0x2121,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
+ 0x2167,0x2168,0x2169,0x216A,0x216B,0x2170,0x2171,0x2172,0x2173,0x2174,
+ 0x2175,0x2176,0x2177,0x2178,0x2179,0x2190,0x2191,0x2192,0x2193,0x2208,
+ 0x220F,0x2211,0x221A,0x221D,0x221E,0x2220,0x2225,0x2227,0x2228,0x2229,
+ 0x222A,0x222B,0x222E,0x2234,0x2235,0x2236,0x2237,0x223D,0x2248,0x224C,
+ 0x2260,0x2261,0x2264,0x2265,0x226E,0x226F,0x2299,0x22A5,0x2312,0x2460,
+ 0x2461,0x2462,0x2463,0x2464,0x2465,0x2466,0x2467,0x2468,0x2469,0x2474,
+ 0x2475,0x2476,0x2477,0x2478,0x2479,0x247A,0x247B,0x247C,0x247D,0x247E,
+ 0x247F,0x2480,0x2481,0x2482,0x2483,0x2484,0x2485,0x2486,0x2487,0x2488,
+ 0x2489,0x248A,0x248B,0x248C,0x248D,0x248E,0x248F,0x2490,0x2491,0x2492,
+ 0x2493,0x2494,0x2495,0x2496,0x2497,0x2498,0x2499,0x249A,0x249B,0x2500,
+ 0x2501,0x2502,0x2503,0x2504,0x2505,0x2506,0x2507,0x2508,0x2509,0x250A,
+ 0x250B,0x250C,0x250D,0x250E,0x250F,0x2510,0x2511,0x2512,0x2513,0x2514,
+ 0x2515,0x2516,0x2517,0x2518,0x2519,0x251A,0x251B,0x251C,0x251D,0x251E,
+ 0x251F,0x2520,0x2521,0x2522,0x2523,0x2524,0x2525,0x2526,0x2527,0x2528,
+ 0x2529,0x252A,0x252B,0x252C,0x252D,0x252E,0x252F,0x2530,0x2531,0x2532,
+ 0x2533,0x2534,0x2535,0x2536,0x2537,0x2538,0x2539,0x253A,0x253B,0x253C,
+ 0x253D,0x253E,0x253F,0x2540,0x2541,0x2542,0x2543,0x2544,0x2545,0x2546,
+ 0x2547,0x2548,0x2549,0x254A,0x254B,0x25A0,0x25A1,0x25B2,0x25B3,0x25BC,
+ 0x25BD,0x25C6,0x25C7,0x25CB,0x25CE,0x25CF,0x2605,0x2606,0x2640,0x2642,
+ 0x0101,0x0113,0x011B,0x012B,0x014D,0x016B,0x01CE,0x01D0,0x01D2,0x01D4,
+ 0x01D6,0x01D8,0x01DA,0x01DC,0x02C7,0x02C9,0x0391,0x0392,0x0393,0x0394,
+ 0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,
+ 0x039F,0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,
+ 0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,
+
+ 0x2103,0x2116,0x2121,0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,
+ 0x2167,0x2168,0x2169,0x216A,0x216B,0x2170,0x2171,0x2172,0x2173,0x2174,
+ 0x2175,0x2176,0x2177,0x2178,
+};
+
+WCHAR gb2312_uniSmSource[]={
+ 0x4FF5,0x4FF6,0x4FF7,0x4FF9,0x4FFB,0x4FFC,0x4FFD,0x4FFF,0x5000,0x5001,
+ 0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D
+};
+unsigned char gb2312_encSmSource[]={
+ 0x82,0x6C,0x82,0x6D,0x82,0x6E,0x82,0x6F,0x82,0x70,0x82,0x71,0x82,0x72,0x82,0x73,0x82,0x74,0x82,0x75
+};
+
+unsigned char latin1_encSource[]={
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,
+
+};
+
+WCHAR latin1_uniSource[]={
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040
+
+};
+
+unsigned char latin2_encSource[]={
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,
+
+
+};
+WCHAR latin2_uniSource[]={
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x0015,0x0016,0x0017,0x0018,
+
+};
+
+unsigned char latin3_encSource[]={
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,
+
+
+};
+WCHAR latin3_uniSource[]={
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,
+
+};
+
+unsigned char latin4_encSource[]={
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,
+};
+WCHAR latin4_uniSource[]={
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,
+};
+ unsigned char latin5_encSource[]={
+ 0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,
+ 0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,
+ 0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,
+ 0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,
+ 0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,
+ 0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,
+ 0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,
+ 0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,
+ 0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,
+ 0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,
+ 0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,
+ 0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,
+ 0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,
+ 0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,
+ 0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,
+ 0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,
+ 0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,
+ 0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,
+ 0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,
+ 0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,
+ 0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,
+ 0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,
+ 0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,
+ 0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,
+ 0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,
+ 0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,
+ 0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,
+ 0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,
+ 0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,
+ 0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,
+ 0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,
+ 0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,
+ 0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,
+ 0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,
+ 0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,
+ 0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,
+ 0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,
+ 0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,
+ 0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,
+ 0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,
+ 0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,
+ 0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,
+ 0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,
+ 0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,
+ 0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,
+ 0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,
+ 0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,
+ 0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,
+ 0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,
+ 0xFC,0xFF,0xD0,0xF0,0xDD,0xFD,0xDE,0xFE,0xCC,0xCD,0xCE,0xCF,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,
+ 0xD9,0xDA,0xDB,0xDC,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,
+ 0xEF,0xF1,0xF2,0xF3
+
+};
+
+WCHAR latin5_uniSource[]={
+ 0x2116,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
+ 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,
+ 0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,
+ 0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,
+ 0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+ 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,
+ 0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,
+ 0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,
+ 0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
+ 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,0x0081,
+ 0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,
+ 0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,
+ 0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
+ 0x00A0,0x00A7,0x00AD,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407,
+ 0x0408,0x0409,0x040A,0x040B,0x040C,0x040E,0x040F,0x0410,0x0411,0x0412,
+ 0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,
+ 0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,
+ 0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,0x0430,
+ 0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,0x0439,0x043A,
+ 0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,
+ 0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,
+ 0x044F,0x0451,0x0452,0x0453,0x0454,0x0455,0x0456,0x0457,0x0458,0x0459,
+ /**/
+ 0x2116,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
+ 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,
+ 0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,
+ 0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,
+ 0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+ 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,
+ 0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,
+ 0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,
+ 0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
+ 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,0x0081,
+ 0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,
+ 0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,
+ 0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
+ 0x00A0,0x00A7,0x00AD,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407,
+ 0x0408,0x0409,0x040A,0x040B,0x040C,0x040E,0x040F,0x0410,0x0411,0x0412,
+ 0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,
+ 0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,
+ 0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,0x0430,
+ 0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,0x0439,0x043A,
+ 0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,
+ 0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,
+ 0x044F,0x0451,0x0452,0x0453,0x0454,0x0455,0x0456,0x0457,0x0458,0x0459,
+ /**/
+ 0x2116,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
+ 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,
+ 0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,
+ 0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,
+ 0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+ 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,
+ 0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,
+ 0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,
+ 0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
+ 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,0x0081,
+ 0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,
+ 0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,
+ 0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
+ 0x00A0,0x00A7,0x00AD,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407,
+ 0x0408,0x0409,0x040A,0x040B,0x040C,0x040E,0x040F,0x0410,0x0411,0x0412,
+ 0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,
+ 0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,
+ 0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,0x0430,
+ 0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,0x0439,0x043A,
+ 0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,
+ 0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,
+ 0x044F,0x0451,0x0452,0x0453,0x0454,0x0455,0x0456,0x0457,0x0458,0x0459,
+ /**/
+ 0x2116,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
+ 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,
+ 0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,
+ 0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,
+ 0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+ 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,
+ 0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,
+ 0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,
+ 0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
+ 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,0x0081,
+ 0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,
+ 0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,
+ 0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
+ 0x00A0,0x00A7,0x00AD,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407,
+ 0x0408,0x0409,0x040A,0x040B,0x040C,0x040E,0x040F,0x0410,0x0411,0x0412,
+ 0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,
+ 0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,
+ 0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,0x0430,
+ 0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,0x0439,0x043A,
+ 0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,
+ 0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,
+ 0x044F,0x0451,0x0452,0x0453,0x0454,0x0455,0x0456,0x0457,0x0458,0x0459,
+ /**/
+ 0x2116,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,
+ 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,
+ 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,
+ 0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,
+ 0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,
+ 0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+ 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,
+ 0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,
+ 0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,
+ 0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,
+ 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,0x0081,
+ 0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,
+ 0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,
+ 0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,
+ 0x00A0,0x00A7,0x00AD,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407,
+ 0x0408,0x0409,0x040A,0x040B,0x040C,0x040E,0x040F,0x0410,0x0411,0x0412,
+ 0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,
+ 0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,
+ 0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,0x0430,
+ 0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,0x0439,0x043A,
+ 0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,
+ 0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,
+ 0x044F,0x0451,0x0452,0x0453,0x0454,0x0455,0x0456,0x0457,0x0458,0x0459,
+ /**/
+ 0x2116,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,
+ 0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,
+ 0x0014,0x0015,0x0016,0x0017,
+
+};
+unsigned char latin6_encSource[]={
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,
+ 0x9C,0x9D,0x9E,0x9F,0xA0,0xA4,0xAD,0xAC,0xBB,0xBF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,
+ 0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE0,0xE1,0xE2,0xE3,
+
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,
+ 0x9C,0x9D,0x9E,0x9F,0xA0,0xA4,0xAD,0xAC,0xBB,0xBF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,
+ 0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE0,0xE1,0xE2,0xE3,
+
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,
+ 0x9C,0x9D,0x9E,0x9F,0xA0,0xA4,0xAD,0xAC,0xBB,0xBF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,
+ 0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE0,0xE1,0xE2,0xE3,
+
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,
+ 0x9C,0x9D,0x9E,0x9F,0xA0,0xA4,0xAD,0xAC,0xBB,0xBF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,
+ 0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE0,0xE1,0xE2,0xE3,
+
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,
+ 0x9C,0x9D,0x9E,0x9F,0xA0,0xA4,0xAD,0xAC,0xBB,0xBF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,
+ 0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE0,0xE1,0xE2,0xE3,
+
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,
+ 0x9C,0x9D,0x9E,0x9F,0xA0,0xA4,0xAD,0xAC,0xBB,0xBF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,
+ 0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE0,0xE1,0xE2,0xE3,
+
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,
+ 0x9C,0x9D,0x9E,0x9F,0xA0,0xA4,0xAD,0xAC,0xBB,0xBF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,
+ 0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE0,0xE1,0xE2,0xE3,
+
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,
+ 0x9C,0x9D,0x9E,0x9F,0xA0,0xA4,0xAD,0xAC,0xBB,0xBF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,
+ 0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE0,0xE1,0xE2,0xE3,
+
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,
+ 0x9C,0x9D,0x9E,0x9F,0xA0,0xA4,0xAD,0xAC,0xBB,0xBF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,
+ 0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE0,0xE1,0xE2,0xE3,
+
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,
+ 0x9C,0x9D,0x9E,0x9F,0xA0,0xA4,0xAD,0xAC,0xBB,0xBF,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,
+ 0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE0,0xE1,0xE2,0xE3,
+
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,
+ 0x74,0x75,0x76,0x77,
+};
+WCHAR latin6_uniSource[]={
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,
+ 0x007E,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A4,0x00AD,0x060C,0x061B,0x061F,
+ 0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062A,
+ 0x062B,0x062C,0x062D,0x062E,0x062F,0x0630,0x0631,0x0632,0x0633,0x0634,
+ 0x0635,0x0636,0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
+
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,
+ 0x007E,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A4,0x00AD,0x060C,0x061B,0x061F,
+ 0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062A,
+ 0x062B,0x062C,0x062D,0x062E,0x062F,0x0630,0x0631,0x0632,0x0633,0x0634,
+ 0x0635,0x0636,0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
+
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,
+ 0x007E,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A4,0x00AD,0x060C,0x061B,0x061F,
+ 0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062A,
+ 0x062B,0x062C,0x062D,0x062E,0x062F,0x0630,0x0631,0x0632,0x0633,0x0634,
+ 0x0635,0x0636,0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
+
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,
+ 0x007E,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A4,0x00AD,0x060C,0x061B,0x061F,
+ 0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062A,
+ 0x062B,0x062C,0x062D,0x062E,0x062F,0x0630,0x0631,0x0632,0x0633,0x0634,
+ 0x0635,0x0636,0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
+
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,
+ 0x007E,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A4,0x00AD,0x060C,0x061B,0x061F,
+ 0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062A,
+ 0x062B,0x062C,0x062D,0x062E,0x062F,0x0630,0x0631,0x0632,0x0633,0x0634,
+ 0x0635,0x0636,0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
+
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,
+ 0x007E,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A4,0x00AD,0x060C,0x061B,0x061F,
+ 0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062A,
+ 0x062B,0x062C,0x062D,0x062E,0x062F,0x0630,0x0631,0x0632,0x0633,0x0634,
+ 0x0635,0x0636,0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
+
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,
+ 0x007E,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A4,0x00AD,0x060C,0x061B,0x061F,
+ 0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062A,
+ 0x062B,0x062C,0x062D,0x062E,0x062F,0x0630,0x0631,0x0632,0x0633,0x0634,
+ 0x0635,0x0636,0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
+
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,
+ 0x007E,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A4,0x00AD,0x060C,0x061B,0x061F,
+ 0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062A,
+ 0x062B,0x062C,0x062D,0x062E,0x062F,0x0630,0x0631,0x0632,0x0633,0x0634,
+ 0x0635,0x0636,0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
+
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,
+ 0x007E,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A4,0x00AD,0x060C,0x061B,0x061F,
+ 0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062A,
+ 0x062B,0x062C,0x062D,0x062E,0x062F,0x0630,0x0631,0x0632,0x0633,0x0634,
+ 0x0635,0x0636,0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
+
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,
+ 0x007E,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A4,0x00AD,0x060C,0x061B,0x061F,
+ 0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062A,
+ 0x062B,0x062C,0x062D,0x062E,0x062F,0x0630,0x0631,0x0632,0x0633,0x0634,
+ 0x0635,0x0636,0x0637,0x0638,0x0639,0x063A,0x0640,0x0641,0x0642,0x0643,
+
+ 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,
+ 0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,
+ 0x0074,0x0075,0x0076,0x0077
+};
+
+unsigned char latin7_encSource[]={
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+ 0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,
+ 0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,
+ 0xA3,0xA6,0xA7,0xA8,0xA9,0xAB,0xAC,0xAD,0xB0,0xB1,0xB2,0xB3,0xB4,0xBB,0xBD,0xB5,0xB6,0xB7,0xB8,0xB9,
+ 0xBA,0xBC,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
+ 0xD0,0xD1,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,
+ 0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,
+ 0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xF5,0xF6,0xF7,0xF8,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,
+ 0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,
+ 0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,
+ 0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,
+ 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,
+ 0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,
+ 0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,
+ 0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA3,0xA6,0xA7,0xA8,0xA9,0xAB,0xAC,0xAD,0xB0,0xB1,
+ 0xB2,0xB3,0xB4,0xBB,0xBD,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBC,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,
+ 0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,
+ 0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,
+ 0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xF5,0xF6,0xF7,0xF8,
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,
+ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,
+ 0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,
+ 0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,
+ 0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,
+ 0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,
+ 0xA3,0xA6,0xA7,0xA8,0xA9,0xAB,0xAC,0xAD,0xB0,0xB1,0xB2,0xB3,0xB4,0xBB,0xBD,0xB5,0xB6,0xB7,0xB8,0xB9,
+ 0xBA,0xBC,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
+ 0xD0,0xD1,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,
+ 0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,
+ 0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xF5,0xF6,0xF7,0xF8,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,
+ 0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,
+ 0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,
+ 0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,
+ 0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,
+ 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,
+ 0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,
+ 0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,
+ 0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA3,0xA6,0xA7,0xA8,0xA9,0xAB,0xAC,0xAD,0xB0,0xB1,
+ 0xB2,0xB3,0xB4,0xBB,0xBD,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBC,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,
+ 0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,
+ 0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,
+ 0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xF5,0xF6,0xF7,0xF8,
+ 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,
+ 0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,
+
+
+};
+WCHAR latin7_uniSource[]={
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+ 0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,0x0081,0x0082,
+ 0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,0x008C,
+ 0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,
+ 0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,0x00A0,
+ 0x00A3,0x00A6,0x00A7,0x00A8,0x00A9,0x00AB,0x00AC,0x00AD,0x00B0,0x00B1,
+ 0x00B2,0x00B3,0x0384,0x00BB,0x00BD,0x0385,0x0386,0x00B7,0x0388,0x0389,
+ 0x038A,0x038C,0x038E,0x038F,0x0390,0x0391,0x0392,0x0393,0x0394,0x0395,
+ 0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,
+ 0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,0x03AA,
+ 0x03AB,0x03AC,0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
+ 0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,
+ 0x03BF,0x03C0,0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
+ 0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x03C5,0x03C6,0x03C7,0x03C8,
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+ 0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,0x0081,0x0082,
+ 0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,0x008C,
+ 0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,
+ 0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,0x00A0,
+ 0x00A3,0x00A6,0x00A7,0x00A8,0x00A9,0x00AB,0x00AC,0x00AD,0x00B0,0x00B1,
+ 0x00B2,0x00B3,0x0384,0x00BB,0x00BD,0x0385,0x0386,0x00B7,0x0388,0x0389,
+ 0x038A,0x038C,0x038E,0x038F,0x0390,0x0391,0x0392,0x0393,0x0394,0x0395,
+ 0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,
+ 0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,0x03AA,
+ 0x03AB,0x03AC,0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
+ 0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,
+ 0x03BF,0x03C0,0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
+ 0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x03C5,0x03C6,0x03C7,0x03C8,
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+ 0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,0x0081,0x0082,
+ 0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,0x008C,
+ 0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,
+ 0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,0x00A0,
+ 0x00A3,0x00A6,0x00A7,0x00A8,0x00A9,0x00AB,0x00AC,0x00AD,0x00B0,0x00B1,
+ 0x00B2,0x00B3,0x0384,0x00BB,0x00BD,0x0385,0x0386,0x00B7,0x0388,0x0389,
+ 0x038A,0x038C,0x038E,0x038F,0x0390,0x0391,0x0392,0x0393,0x0394,0x0395,
+ 0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,
+ 0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,0x03AA,
+ 0x03AB,0x03AC,0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
+ 0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,
+ 0x03BF,0x03C0,0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
+ 0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x03C5,0x03C6,0x03C7,0x03C8,
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
+ 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,
+ 0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,
+ 0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,
+ 0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
+ 0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,
+ 0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+ 0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,
+ 0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,
+ 0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,
+ 0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,0x0081,0x0082,
+ 0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,0x008B,0x008C,
+ 0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,0x0095,0x0096,
+ 0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,0x009F,0x00A0,
+ 0x00A3,0x00A6,0x00A7,0x00A8,0x00A9,0x00AB,0x00AC,0x00AD,0x00B0,0x00B1,
+ 0x00B2,0x00B3,0x0384,0x00BB,0x00BD,0x0385,0x0386,0x00B7,0x0388,0x0389,
+ 0x038A,0x038C,0x038E,0x038F,0x0390,0x0391,0x0392,0x0393,0x0394,0x0395,
+ 0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,
+ 0x03A0,0x03A1,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,0x03AA,
+ 0x03AB,0x03AC,0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
+ 0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,
+ 0x03BF,0x03C0,0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
+ 0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x03C5,0x03C6,0x03C7,0x03C8,
+ 0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,
+ 0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,
+ 0x0015,0x0016,0x0017,0x0018
+ };
+
+unsigned char latin8_encSource[]={
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,
+ 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,
+ 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,
+ 0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,
+ 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,
+ 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,
+ 0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,
+ 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,
+ 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,
+ 0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,
+ 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,
+ 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,
+ 0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,
+ 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,
+ 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,
+ 0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,
+ 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,
+ 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,
+ 0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,
+ 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,
+ 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,
+ 0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,
+ 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,
+ 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,
+ 0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,
+ 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,
+ 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,
+ 0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,
+ 0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,
+ 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,
+ 0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+
+ 0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x5B,0x5C,
+
+};
+WCHAR latin8_uniSource[]={
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,
+ 0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,
+ 0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,
+ 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,
+ 0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,
+ 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,
+ 0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,
+ 0x009F,0x00A0,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,
+
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,
+ 0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,
+ 0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,
+ 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,
+ 0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,
+ 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,
+ 0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,
+ 0x009F,0x00A0,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,
+
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,
+ 0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,
+ 0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,
+ 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,
+ 0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,
+ 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,
+ 0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,
+ 0x009F,0x00A0,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,
+
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,
+ 0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,
+ 0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,
+ 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,
+ 0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,
+ 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,
+ 0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,
+ 0x009F,0x00A0,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,
+
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,
+ 0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,
+ 0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,
+ 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,
+ 0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,
+ 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,
+ 0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,
+ 0x009F,0x00A0,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,
+
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,
+ 0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,
+ 0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,
+ 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,
+ 0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,
+ 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,
+ 0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,
+ 0x009F,0x00A0,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,
+
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,
+ 0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,
+ 0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,
+ 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,
+ 0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,
+ 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,
+ 0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,
+ 0x009F,0x00A0,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,
+
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,
+ 0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,
+ 0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,
+ 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,
+ 0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,
+ 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,
+ 0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,
+ 0x009F,0x00A0,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,
+
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,
+ 0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,
+ 0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,
+ 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,
+ 0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,
+ 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,
+ 0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,
+ 0x009F,0x00A0,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,
+
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,
+ 0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,
+ 0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,
+ 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0080,
+ 0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088,0x0089,0x008A,
+ 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,0x0093,0x0094,
+ 0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C,0x009D,0x009E,
+ 0x009F,0x00A0,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,0x00A8,0x00A9,
+
+ 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,
+ 0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,
+ 0x0059,0x005A,0x005B,0x005C,
+};
+unsigned char ebcdic_arabic_encSource[]={
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+ 0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0xA1,0x79,0xC0,0xD0,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+ 0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0xA1,0x79,0xC0,0xD0,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+ 0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0xA1,0x79,0xC0,0xD0,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+ 0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0xA1,0x79,0xC0,0xD0,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+ 0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0xA1,0x79,0xC0,0xD0,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+ 0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0xA1,0x79,0xC0,0xD0,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+ 0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0xA1,0x79,0xC0,0xD0,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+ 0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0xA1,0x79,0xC0,0xD0,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+ 0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0xA1,0x79,0xC0,0xD0,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+ 0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0xA1,0x79,0xC0,0xD0,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,0x41,0x4A,0x6A,0x5F,0xCA,0xE0,
+ 0x4F,0x07,0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,0x30,0x31,
+
+ 0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,
+ 0x4F,0x07,0x20,0x21,
+
+};
+WCHAR ebcdic_arabic_uniSource[]={
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x00F7,0x060C,0x061B,0x061F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x00F7,0x060C,0x061B,0x061F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x00F7,0x060C,0x061B,0x061F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x00F7,0x060C,0x061B,0x061F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x00F7,0x060C,0x061B,0x061F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x00F7,0x060C,0x061B,0x061F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x00F7,0x060C,0x061B,0x061F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x00F7,0x060C,0x061B,0x061F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x00F7,0x060C,0x061B,0x061F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+ 0x009C,0x009D,0x009E,0x009F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x00F7,0x060C,0x061B,0x061F,0x00A0,0x00A2,0x00A6,0x00AC,0x00AD,0x00D7,
+ 0x007C,0x007F,0x0080,0x0081,0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,
+ 0x0088,0x0089,0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,
+ 0x0092,0x0093,0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B,
+
+
+ 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+ 0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,
+ 0x007C,0x007F,0x0080,0x0081,
+};
+
+
+unsigned char utf8_encSource[]={
+ 0xE3,0x80,0x80,0xE3,0x80,0x81,0xE3,0x80,0x82,0x20,0xEF,0xBC,0x8E,0xE3,0x83,0xBB,
+ 0xEF,0xBC,0x9A,0xEF,0xBC,0x9B,0x0D,0x0A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,
+ 0x0D,0x0A,0xEF,0xBC,0x9F,0xEF,0xBC,0x81,0xE3,0x82,0x9B,0xE3,0x82,0x9C,0xC2,0xB4,
+ 0xEF,0xBD,0x80,0xC2,0xA8,0xEF,0xBC,0xBE,0x0D,0x0A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+ 0x51,0x52,0x0D,0x0A,0xEF,0xBF,0xA3,0xEF,0xBC,0xBF,0xE3,0x83,0xBD,0xE3,0x83,0xBE,
+ 0xE3,0x82,0x9D,0xE3,0x82,0x9E,0xE3,0x80,0x83,0xE4,0xBB,0x9D,0x0D,0x0A,0xE3,0x80,
+ 0x85,0xE3,0x80,0x86,0xE3,0x80,0x87,0xE3,0x83,0xBC,0xE2,0x80,0x95,0xE2,0x80,0x90,
+ 0xEF,0xBC,0x8F,0x5C,0x0D,0x0A,0xEF,0xBD,0x9C,0xE2,0x80,0xA6,0xE2,0x80,0xA5,0xE2,
+ 0x80,0x98,0xE2,0x80,0x99,0xE2,0x80,0x9C,0x0D,0x0A,0xE2,0x80,0x9D,0xEF,0xBC,0x88,
+ 0xEF,0xBC,0x89,0xE3,0x80,0x94,0xEF,0xBD,0xB5,0xEF,0xBD,0xB6,0xEF,0xBD,0xB7,0xEF,
+ 0xBD,0xB8,0x0D,0x0A,0xEF,0xBD,0xB9,0xEF,0xBD,0xBA,0xEF,0xBD,0xBB,0xEF,0xBD,0xBC,
+ 0xEF,0xBD,0xBD,0xEF,0xBD,0xBE,0xEF,0xBD,0xBF,0xEF,0xBE,0x80,0x0D,0x0A,0x53,0x54,
+ 0x55,0x56,0x57,0x58,0x59,0x5A,0x0D,0x0A,0xEF,0xBE,0x81,0xEF,0xBE,0x82,0xEF,0xBE,
+ 0x83,0xEF,0xBE,0x84,0xEF,0xBE,0x85,0xEF,0xBE,0x86,0xEF,0xBE,0x87,0xEF,0xBE,0x88,
+ 0x0D,0x0A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x0D,0x0A,0xEF,0xBE,0x89,0xEF,
+ 0xBE,0x8A,0xEF,0xBE,0x8B,0x20,0xEF,0xBE,0x8D,0xEF,0xBE,0x8E,0xEF,0xBE,0x8F,0xEF,
+ 0xBE,0x90,0x0D,0x0A,0xEF,0xBE,0x91,0xEF,0xBE,0x92,0xEF,0xBE,0x93,0xEF,0xBE,0x94,
+ 0xEF,0xBE,0x95,0xEF,0xBE,0x96,0xEF,0xBE,0x97,0xEF,0xBE,0x98,0x0D,0x0A,0xE3,0x80,
+ 0x80,0xE3,0x80,0x81,0xE3,0x80,0x82,0x20,0xEF,0xBC,0x8E,0xE3,0x83,0xBB,0xEF,0xBC,
+ 0x9A,0xEF,0xBC,0x9B,0x0D,0x0A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x0D,0x0A,
+ 0xEF,0xBC,0x9F,0xEF,0xBC,0x81,0xE3,0x82,0x9B,0xE3,0x82,0x9C,0xC2,0xB4,0xEF,0xBD,
+ 0x80,0xC2,0xA8,0xEF,0xBC,0xBE,0x0D,0x0A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,
+ 0x0D,0x0A,0xEF,0xBF,0xA3,0xEF,0xBC,0xBF,0xE3,0x83,0xBD,0xE3,0x83,0xBE,0xE3,0x82,
+ 0x9D,0xE3,0x82,0x9E,0xE3,0x80,0x83,0xE4,0xBB,0x9D,0x0D,0x0A,0xE3,0x80,0x85,0xE3,
+ 0x80,0x86,0xE3,0x80,0x87,0xE3,0x83,0xBC,0xE2,0x80,0x95,0xE2,0x80,0x90,0xEF,0xBC,
+ 0x8F,0x5C,0x0D,0x0A,0xEF,0xBD,0x9C,0xE2,0x80,0xA6,0xE2,0x80,0xA5,0xE2,0x80,0x98,
+ 0xE2,0x80,0x99,0xE2,0x80,0x9C,0x0D,0x0A,0xE2,0x80,0x9D,0xEF,0xBC,0x88,0xEF,0xBC,
+ 0x89,0xE3,0x80,0x94,0xEF,0xBD,0xB5,0xEF,0xBD,0xB6,0xEF,0xBD,0xB7,0xEF,0xBD,0xB8,
+ 0x0D,0x0A,0xEF,0xBD,0xB9,0xEF,0xBD,0xBA,0xEF,0xBD,0xBB,0xEF,0xBD,0xBC,0xEF,0xBD,
+ 0xBD,0xEF,0xBD,0xBE,0xEF,0xBD,0xBF,0xEF,0xBE,0x80,0x0D,0x0A,0x53,0x54,0x55,0x56,
+ 0x57,0x58,0x59,0x5A,0x0D,0x0A,0xEF,0xBE,0x81,0xEF,0xBE,0x82,0xEF,0xBE,0x83,0xEF,
+ 0xBE,0x84,0xEF,0xBE,0x85,0xEF,0xBE,0x86,0xEF,0xBE,0x87,0xEF,0xBE,0x88,0x0D,0x0A,
+ 0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x0D,0x0A,0xEF,0xBE,0x89,0xEF,0xBE,0x8A,
+ 0xEF,0xBE,0x8B,0x20,0xEF,0xBE,0x8D,0xEF,0xBE,0x8E,0xEF,0xBE,0x8F,0xEF,0xBE,0x90,
+ 0x0D,0x0A,0xEF,0xBE,0x91,0xEF,0xBE,0x92,0xEF,0xBE,0x93,0xEF,0xBE,0x94,0xEF,0xBE,
+ 0x95,0xEF,0xBE,0x96,0xEF,0xBE,0x97,0xEF,0xBE,0x98,0x0D,0x0A,0xE3,0x80,0x80,0xE3,
+ 0x80,0x81,0xE3,0x80,0x82,0x20,0xEF,0xBC,0x8E,0xE3,0x83,0xBB,0xEF,0xBC,0x9A,0xEF,
+ 0xBC,0x9B,0x0D,0x0A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x0D,0x0A,0xEF,0xBC,
+ 0x9F,0xEF,0xBC,0x81,0xE3,0x82,0x9B,0xE3,0x82,0x9C,0xC2,0xB4,0xEF,0xBD,0x80,0xC2,
+ 0xA8,0xEF,0xBC,0xBE,0x0D,0x0A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x0D,0x0A,
+ 0xEF,0xBF,0xA3,0xEF,0xBC,0xBF,0xE3,0x83,0xBD,0xE3,0x83,0xBE,0xE3,0x82,0x9D,0xE3,
+ 0x82,0x9E,0xE3,0x80,0x83,0xE4,0xBB,0x9D,0x0D,0x0A,0xE3,0x80,0x85,0xE3,0x80,0x86,
+ 0xE3,0x80,0x87,0xE3,0x83,0xBC,0xE2,0x80,0x95,0xE2,0x80,0x90,0xEF,0xBC,0x8F,0x5C,
+ 0x0D,0x0A,0xEF,0xBD,0x9C,0xE2,0x80,0xA6,0xE2,0x80,0xA5,0xE2,0x80,0x98,0xE2,0x80,
+ 0x99,0xE2,0x80,0x9C,0x0D,0x0A,0xE2,0x80,0x9D,0xEF,0xBC,0x88,0xEF,0xBC,0x89,0xE3,
+ 0x80,0x94,0xEF,0xBD,0xB5,0xEF,0xBD,0xB6,0xEF,0xBD,0xB7,0xEF,0xBD,0xB8,0x0D,0x0A,
+ 0xEF,0xBD,0xB9,0xEF,0xBD,0xBA,0xEF,0xBD,0xBB,0xEF,0xBD,0xBC,0xEF,0xBD,0xBD,0xEF,
+ 0xBD,0xBE,0xEF,0xBD,0xBF,0xEF,0xBE,0x80,0x0D,0x0A,0x53,0x54,0x55,0x56,0x57,0x58,
+ 0x59,0x5A,0x0D,0x0A,0xEF,0xBE,0x81,0xEF,0xBE,0x82,0xEF,0xBE,0x83,0xEF,0xBE,0x84,
+ 0xEF,0xBE,0x85,0xEF,0xBE,0x86,0xEF,0xBE,0x87,0xEF,0xBE,0x88,0x0D,0x0A,0x53,0x54,
+ 0x55,0x56,0x57,0x58,0x59,0x5A,0x0D,0x0A,0xEF,0xBE,0x89,0xEF,0xBE,0x8A,0xEF,0xBE,
+ 0x8B,0x20,0xEF,0xBE,0x8D,0xEF,0xBE,0x8E,0xEF,0xBE,0x8F,0xEF,0xBE,0x90,0x0D,0x0A,
+ 0xEF,0xBE,0x91,0xEF,0xBE,0x92,0xEF,0xBE,0x93,0xEF,0xBE,0x94,0xEF,0xBE,0x95,0xEF,
+ 0xBE,0x96,0xEF,0xBE,0x97,0xEF,0xBE,0x98,0x0D,0x0A,0xE3,0x80,0x80,0xE3,0x80,0x81,
+ 0xE3,0x80,0x82,0x20,0xEF,0xBC,0x8E,0xE3,0x83,0xBB,0xEF,0xBC,0x9A,0xEF,0xBC,0x9B,
+ 0x0D,0x0A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x0D,0x0A,0xEF,0xBC,0x9F,0xEF,
+ 0xBC,0x81,0xE3,0x82,0x9B,0xE3,0x82,0x9C,0xC2,0xB4,0xEF,0xBD,0x80,0xC2,0xA8,0xEF,
+ 0xBC,0xBE,0x0D,0x0A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x0D,0x0A,0xEF,0xBF,
+ 0xA3,0xEF,0xBC,0xBF,0xE3,0x83,0xBD,0xE3,0x83,0xBE,0xE3,0x82,0x9D,0xE3,0x82,0x9E,
+ 0xE3,0x80,0x83,0xE4,0xBB,0x9D,0x0D,0x0A,0xE3,0x80,0x85,0xE3,0x80,0x86,0xE3,0x80,
+ 0x87,0xE3,0x83,0xBC,0xE2,0x80,0x95,0xE2,0x80,0x90,0xEF,0xBC,0x8F,0x5C,0x0D,0x0A,
+ 0xEF,0xBD,0x9C,0xE2,0x80,0xA6,0xE2,0x80,0xA5,0xE2,0x80,0x98,0xE2,0x80,0x99,0xE2,
+ 0x80,0x9C,0x0D,0x0A,0xE2,0x80,0x9D,0xEF,0xBC,0x88,0xEF,0xBC,0x89,0xE3,0x80,0x94,
+ 0xEF,0xBD,0xB5,0xEF,0xBD,0xB6,0xEF,0xBD,0xB7,0xEF,0xBD,0xB8,0x0D,0x0A
+
+};
+WCHAR utf8_uniSource[]={
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,0x000D,0x000A,
+ /*0x301C,0x2016,*/ 0xFF5C,0x2026,0x2025,0x2018,0x2019,0x201C,0x000D,0x000A,
+ 0x201D,0xFF08,0xFF09,0x3014,0xFF75,0xFF76,0xFF77,0xFF78,0x000D,0x000A,
+ 0xFF79,0xFF7A,0xFF7B,0xFF7C,0xFF7D,0xFF7E,0xFF7F,0xFF80,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF81,0xFF82,0xFF83,0xFF84,0xFF85,0xFF86,0xFF87,0xFF88,0x000D,0x000A,
+ 0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x000D,0x000A,
+ 0xFF89,0xFF8A,0xFF8B,0x0020,0xFF8D,0xFF8E,0xFF8F,0xFF90,0x000D,0x000A,
+ 0xFF91,0xFF92,0xFF93,0xFF94,0xFF95,0xFF96,0xFF97,0xFF98,0x000D,0x000A,
+ /**/
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+ 0xFF1F,0xFF01,0x309B,0x309C,0x00B4,0xFF40,0x00A8,0xFF3E,0x000D,0x000A,
+ 0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x000D,0x000A,
+ 0xFFE3,0xFF3F,0x30FD,0x30FE,0x309D,0x309E,0x3003,0x4EDD,0x000D,0x000A,
+ 0x3005,0x3006,0x3007,0x30FC,0x2015,0x2010,0xFF0F,0x005C,
+};
+
+WCHAR utf8_uniSmSource[]={
+ 0x3000,0x3001,0x3002,0x0020,0xFF0E,0x30FB,0xFF1A,0xFF1B,0x000D,0x000A,
+ 0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x000D,0x000A,
+};
+unsigned char utf8_encSmSource[]={
+ 0xE3,0x80,0x80,0xE3,0x80,0x81,0xE3,0x80,0x82,0x20,0xEF,0xBC,0x8E,0xE3,0x83,0xBB,
+ 0xEF,0xBC,0x9A,0xEF,0xBC,0x9B,0x0D,0x0A
+};
+#endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/normperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/normperf/Makefile.in
new file mode 100644
index 00000000000..8b35cab0465
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/normperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/normperf
+## Copyright (c) 2001-2006, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/normperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = normperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = normperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/normperf/NormPerf.pl b/Build/source/libs/icu/icu-4.6/test/perf/normperf/NormPerf.pl
new file mode 100755
index 00000000000..ce2d2683f73
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/normperf/NormPerf.pl
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * Copyright (c) 2002-2008, International Business Machines
+# * Corporation and others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"Normalization performance: ICU ".$ICULatestVersion." vs. Win",
+ "headers"=>"Win ICU".$ICULatestVersion,
+ "operationIs"=>"code point",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>$CollationDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p = $ICUPathLatest."/normperf/$WindowsPlatform/Release/normperf.exe -b -u";
+
+my $tests = {
+ "NFC_NFD_Text", ["$p TestWin_NFC_NFD_Text" , "$p TestICU_NFC_NFD_Text" ],
+ "NFC_NFC_Text", ["$p TestWin_NFC_NFC_Text" , "$p TestICU_NFC_NFC_Text" ],
+ "NFC_Orig_Text", ["$p TestWin_NFC_Orig_Text" , "$p TestICU_NFC_Orig_Text"],
+ "NFD_NFD_Text", ["$p TestWin_NFD_NFD_Text" , "$p TestICU_NFD_NFD_Text" ],
+ "NFD_NFC_Text", ["$p TestWin_NFD_NFC_Text" , "$p TestICU_NFD_NFC_Text" ],
+ "NFD_Orig_Text", ["$p TestWin_NFD_Orig_Text" , "$p TestICU_NFD_Orig_Text"]
+ };
+
+my $dataFiles = {
+ "",
+ [
+ "TestNames_Asian.txt",
+ "TestNames_Chinese.txt",
+ "TestNames_Japanese.txt",
+ "TestNames_Japanese_h.txt",
+ "TestNames_Japanese_k.txt",
+ "TestNames_Korean.txt",
+ "TestNames_Latin.txt",
+ "TestNames_SerbianSH.txt",
+ "TestNames_SerbianSR.txt",
+ "TestNames_Thai.txt",
+ "Testnames_Russian.txt",
+ "th18057.txt",
+ "thesis.txt",
+ "vfear11a.txt",
+ ]
+ };
+
+runTests($options, $tests, $dataFiles);
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/normperf/NormPerf_r.pl b/Build/source/libs/icu/icu-4.6/test/perf/normperf/NormPerf_r.pl
new file mode 100644
index 00000000000..085194a2717
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/normperf/NormPerf_r.pl
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines
+# * Corporation and others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"Normalization performance regression: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"code point",
+ "timePerOperationIs"=>"Time per code point",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>$CollationDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+
+my $p1; # Previous
+my $p2; # Latest
+
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious."/normperf/$WindowsPlatform/Release/normperf.exe";
+ $p2 = $ICUPathLatest."/normperf/$WindowsPlatform/Release/normperf.exe";
+} else {
+ $p1 = $ICUPathPrevious."/normperf/normperf";
+ $p2 = $ICUPathLatest."/normperf/normperf";
+}
+
+my $dataFiles = {
+ "",
+ [
+ "TestNames_Asian.txt",
+ "TestNames_Chinese.txt",
+ "TestNames_Japanese.txt",
+ "TestNames_Japanese_h.txt",
+ "TestNames_Japanese_k.txt",
+ "TestNames_Korean.txt",
+ "TestNames_Latin.txt",
+ "TestNames_SerbianSH.txt",
+ "TestNames_SerbianSR.txt",
+ "TestNames_Thai.txt",
+ "Testnames_Russian.txt",
+ "th18057.txt",
+ "thesis.txt",
+ "vfear11a.txt",
+ ]
+ };
+
+
+my $tests = {
+ "NFC_NFD_Text", ["$p1 TestICU_NFC_NFD_Text" , "$p2 TestICU_NFC_NFD_Text" ],
+ "NFC_NFC_Text", ["$p1 TestICU_NFC_NFC_Text" , "$p2 TestICU_NFC_NFC_Text" ],
+ "NFC_Orig_Text", ["$p1 TestICU_NFC_Orig_Text" , "$p2 TestICU_NFC_Orig_Text"],
+ "NFD_NFD_Text", ["$p1 TestICU_NFD_NFD_Text" , "$p2 TestICU_NFD_NFD_Text" ],
+ "NFD_NFC_Text", ["$p1 TestICU_NFD_NFC_Text" , "$p2 TestICU_NFD_NFC_Text" ],
+ "NFD_Orig_Text", ["$p1 TestICU_NFD_Orig_Text" , "$p2 TestICU_NFD_Orig_Text"],
+ ##
+ "QC_NFC_NFD_Text", ["$p1 TestQC_NFC_NFD_Text" , "$p2 TestQC_NFC_NFD_Text" ],
+ "QC_NFC_NFC_Text", ["$p1 TestQC_NFC_NFC_Text" , "$p2 TestQC_NFC_NFC_Text" ],
+ "QC_NFC_Orig_Text", ["$p1 TestQC_NFC_Orig_Text" , "$p2 TestQC_NFC_Orig_Text"],
+ "QC_NFD_NFD_Text", ["$p1 TestQC_NFD_NFD_Text" , "$p2 TestQC_NFD_NFD_Text" ],
+ "QC_NFD_NFC_Text", ["$p1 TestQC_NFD_NFC_Text" , "$p2 TestQC_NFD_NFC_Text" ],
+ "QC_NFD_Orig_Text", ["$p1 TestQC_NFD_Orig_Text" , "$p2 TestQC_NFD_Orig_Text"],
+ ##
+ "IsNormalized_NFC_NFD_Text", ["$p1 TestIsNormalized_NFC_NFD_Text" , "$p2 TestIsNormalized_NFC_NFD_Text" ],
+ "IsNormalized_NFC_NFC_Text", ["$p1 TestIsNormalized_NFC_NFC_Text" , "$p2 TestIsNormalized_NFC_NFC_Text" ],
+ "IsNormalized_NFC_Orig_Text", ["$p1 TestIsNormalized_NFC_Orig_Text" , "$p2 TestIsNormalized_NFC_Orig_Text"],
+ "IsNormalized_NFD_NFD_Text", ["$p1 TestIsNormalized_NFD_NFD_Text" , "$p2 TestIsNormalized_NFD_NFD_Text" ],
+ "IsNormalized_NFD_NFC_Text", ["$p1 TestIsNormalized_NFD_NFC_Text" , "$p2 TestIsNormalized_NFD_NFC_Text" ],
+ "IsNormalized_NFD_Orig_Text", ["$p1 TestIsNormalized_NFD_Orig_Text" , "$p2 TestIsNormalized_NFD_Orig_Text"]
+ };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.cpp
new file mode 100644
index 00000000000..35d078d60fa
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.cpp
@@ -0,0 +1,76 @@
+/*
+**********************************************************************
+* Copyright (c) 2010,International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+
+#include "dtfmtrtperf.h"
+#include "uoptions.h"
+#include <stdio.h>
+
+#include <iostream>
+using namespace std;
+
+DateTimeRoundTripPerfTest::DateTimeRoundTripPerfTest(int32_t argc, const char* argv[], UErrorCode& status)
+: UPerfTest(argc,argv,status) { }
+
+DateTimeRoundTripPerfTest::~DateTimeRoundTripPerfTest() { }
+
+UPerfFunction* DateTimeRoundTripPerfTest::runIndexedTest(int32_t index, UBool exec,const char* &name, char* par) {
+
+ switch (index)
+ {
+ TESTCASE(0,RoundTripLocale1); // 1 locale
+ TESTCASE(1,RoundTripLocale10); // 10 locales
+ TESTCASE(2,RoundTripLocale11); // 11 locales
+ TESTCASE(3,RoundTripLocale21); // 21 locales w/ reverse order
+ default:
+ name = "";
+ return NULL;
+ }
+ return NULL;
+
+}
+
+UPerfFunction* DateTimeRoundTripPerfTest::RoundTripLocale1(){
+ DateTimeRoundTripFunction* func= new DateTimeRoundTripFunction(1);
+ return func;
+}
+
+UPerfFunction* DateTimeRoundTripPerfTest::RoundTripLocale10(){
+ DateTimeRoundTripFunction* func= new DateTimeRoundTripFunction(10);
+ return func;
+}
+
+UPerfFunction* DateTimeRoundTripPerfTest::RoundTripLocale11(){
+ DateTimeRoundTripFunction* func= new DateTimeRoundTripFunction(11);
+ return func;
+}
+
+UPerfFunction* DateTimeRoundTripPerfTest::RoundTripLocale21(){
+ DateTimeRoundTripFunction* func= new DateTimeRoundTripFunction(21);
+ return func;
+}
+
+int main(int argc, const char* argv[]){
+
+ cout << "ICU version - " << U_ICU_VERSION << endl;
+
+ UErrorCode status = U_ZERO_ERROR;
+ DateTimeRoundTripPerfTest test(argc, argv, status);
+ if(U_FAILURE(status)){
+ cout << "initialization failed! " << status << endl;
+ return status;
+ }
+
+ if(test.run()==FALSE){
+ cout << "run failed!" << endl;
+ fprintf(stderr,"FAILED: Tests could not be run please check the arguments.\n");
+ return -1;
+ }
+
+ cout << "done!" << endl;
+ return 0;
+} \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.h b/Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.h
new file mode 100644
index 00000000000..b100e69aa4f
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.h
@@ -0,0 +1,231 @@
+/*
+**********************************************************************
+* Copyright (c) 2010,International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+
+#ifndef _DTFMTRTPERF_H
+#define _DTFMTRTPERF_H
+
+#include "unicode/utypes.h"
+#include "unicode/uperf.h"
+#include "unicode/timezone.h"
+#include "unicode/simpletz.h"
+#include "unicode/calendar.h"
+#include "unicode/strenum.h"
+#include "unicode/smpdtfmt.h"
+#include "unicode/uchar.h"
+#include "unicode/basictz.h"
+#include "cstring.h"
+
+#include "unicode/uperf.h"
+#include "unicode/unistr.h"
+#include "unicode/datefmt.h"
+#include "unicode/calendar.h"
+#include "unicode/uclean.h"
+#include "unicode/brkiter.h"
+#include "util.h"
+
+static const char* PATTERNS[] = {"z", "zzzz", "Z", "ZZZZ", "v", "vvvv", "V", "VVVV"};
+static const int NUM_PATTERNS = sizeof(PATTERNS)/sizeof(const char*);
+
+#include <iostream>
+#include <stdlib.h>
+#include <fstream>
+#include <string>
+using namespace std;
+
+// Stubs for Windows API functions when building on UNIXes.
+//
+#if defined(U_WINDOWS)
+// do nothing
+#else
+#define _UNICODE
+typedef int DWORD;
+inline int FoldStringW(DWORD dwMapFlags, const UChar* lpSrcStr,int cchSrc, UChar* lpDestStr,int cchDest);
+#endif
+
+class DateTimeRoundTripFunction : public UPerfFunction
+{
+private:
+ int nLocales;
+public:
+
+ DateTimeRoundTripFunction()
+ {
+ nLocales = 0;
+ }
+
+ DateTimeRoundTripFunction(int locs)
+ {
+ nLocales = locs;
+ }
+
+ virtual void call(UErrorCode* status)
+ {
+ *status = U_ZERO_ERROR;
+
+ SimpleTimeZone unknownZone(-31415, (UnicodeString)"Etc/Unknown");
+ int32_t badDstOffset = -1234;
+ int32_t badZoneOffset = -2345;
+
+ int32_t testDateData[][3] = {
+ {2007, 1, 15},
+ {2007, 6, 15},
+ {1990, 1, 15},
+ {1990, 6, 15},
+ {1960, 1, 15},
+ {1960, 6, 15},
+ };
+
+ Calendar *cal = Calendar::createInstance(*status);
+ if (U_FAILURE(*status)) {
+ //dataerrln("Calendar::createInstance failed: %s", u_errorName(*status));
+ return;
+ }
+
+ // Set up rule equivalency test range
+ UDate low, high;
+ cal->set(1900, UCAL_JANUARY, 1);
+ low = cal->getTime(*status);
+ cal->set(2040, UCAL_JANUARY, 1);
+ high = cal->getTime(*status);
+ if (U_FAILURE(*status)) {
+ //errln("getTime failed");
+ return;
+ }
+
+ // Set up test dates
+ UDate DATES[(sizeof(testDateData)/sizeof(int32_t))/3];
+ const int32_t nDates = (sizeof(testDateData)/sizeof(int32_t))/3;
+ cal->clear();
+ for (int32_t i = 0; i < nDates; i++) {
+ cal->set(testDateData[i][0], testDateData[i][1], testDateData[i][2]);
+ DATES[i] = cal->getTime(*status);
+ if (U_FAILURE(*status)) {
+ //errln("getTime failed");
+ return;
+ }
+ }
+
+ // Set up test locales
+ const Locale testLocales[] = {
+ Locale("en"),
+ Locale("en_US"),
+ Locale("en_AU"),
+ Locale("de_DE"),
+ Locale("fr"),
+ Locale("ja_JP"),
+ Locale("ko"),
+ Locale("pt"),
+ Locale("th_TH"),
+ Locale("zh_Hans"),
+
+ Locale("it"),
+
+ Locale("en"),
+ Locale("en_US"),
+ Locale("en_AU"),
+ Locale("de_DE"),
+ Locale("fr"),
+ Locale("ja_JP"),
+ Locale("ko"),
+ Locale("pt"),
+ Locale("th_TH"),
+ Locale("zh_Hans"),
+ };
+
+ const Locale *LOCALES;
+ LOCALES = testLocales;
+
+ StringEnumeration *tzids = TimeZone::createEnumeration();
+ if (U_FAILURE(*status)) {
+ //errln("tzids->count failed");
+ return;
+ }
+
+ // Run the roundtrip test
+ for (int32_t locidx = 0; locidx < nLocales; locidx++) {
+ for (int32_t patidx = 0; patidx < NUM_PATTERNS; patidx++) {
+ SimpleDateFormat *sdf = new SimpleDateFormat((UnicodeString)PATTERNS[patidx], LOCALES[locidx], *status);
+ if (U_FAILURE(*status)) {
+ //errcheckln(*status, (UnicodeString)"new SimpleDateFormat failed for pattern " +
+ // PATTERNS[patidx] + " for locale " + LOCALES[locidx].getName() + " - " + u_errorName(*status));
+ *status = U_ZERO_ERROR;
+ continue;
+ }
+
+ tzids->reset(*status);
+ const UnicodeString *tzid;
+ while ((tzid = tzids->snext(*status))) {
+ TimeZone *tz = TimeZone::createTimeZone(*tzid);
+
+ for (int32_t datidx = 0; datidx < nDates; datidx++) {
+ UnicodeString tzstr;
+ FieldPosition fpos(0);
+
+ // Format
+ sdf->setTimeZone(*tz);
+ sdf->format(DATES[datidx], tzstr, fpos);
+
+ // Before parse, set unknown zone to SimpleDateFormat instance
+ // just for making sure that it does not depends on the time zone
+ // originally set.
+ sdf->setTimeZone(unknownZone);
+
+ // Parse
+ ParsePosition pos(0);
+ Calendar *outcal = Calendar::createInstance(unknownZone, *status);
+ if (U_FAILURE(*status)) {
+ //errln("Failed to create an instance of calendar for receiving parse result.");
+ *status = U_ZERO_ERROR;
+ continue;
+ }
+ outcal->set(UCAL_DST_OFFSET, badDstOffset);
+ outcal->set(UCAL_ZONE_OFFSET, badZoneOffset);
+ sdf->parse(tzstr, *outcal, pos);
+
+ // clean loop
+ delete outcal;
+
+ }
+ delete tz;
+ // break time zone loop
+ break;
+
+ }
+ delete sdf;
+ }
+ }
+ delete cal;
+ delete tzids;
+
+ }
+
+ virtual long getOperationsPerIteration()
+ {
+ return NUM_PATTERNS * nLocales * 6;
+ }
+};
+
+
+class DateTimeRoundTripPerfTest : public UPerfTest
+{
+private:
+
+public:
+
+ DateTimeRoundTripPerfTest(int32_t argc, const char* argv[], UErrorCode& status);
+ ~DateTimeRoundTripPerfTest();
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par);
+
+ UPerfFunction* RoundTripLocale1();
+ UPerfFunction* RoundTripLocale10();
+ UPerfFunction* RoundTripLocale11();
+ UPerfFunction* RoundTripLocale21();
+};
+
+
+#endif // DateTimeRoundTripPerfTest \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.vcproj b/Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.vcproj
new file mode 100644
index 00000000000..db5b060b824
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/normperf/dtfmtrtperf.vcproj
@@ -0,0 +1,462 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="dtfmtrtperf"
+ ProjectGUID="{1FCAA83C-955C-4DEF-9CEF-3679AE75C44D}"
+ RootNamespace="rtperf"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\x86\Debug"
+ IntermediateDirectory=".\x86\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\x86\Debug/normperf.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_MBCS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x86\Debug/normperf.pch"
+ AssemblerListingLocation=".\x86\Debug/"
+ ObjectFile=".\x86\Debug/"
+ ProgramDataBaseFileName=".\x86\Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icudt.lib icuind.lib icuiod.lib iculed.lib iculxd.lib icutud.lib icuucd.lib icutestd.lib winmm.lib"
+ OutputFile=".\x86\Debug/dtfmtrtperf.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\..\..\lib\"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\x86\Debug/dtfmtrtperf.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\x86\Release"
+ IntermediateDirectory=".\x86\Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\x86\Release/normperf.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x86\Release/normperf.pch"
+ AssemblerListingLocation=".\x86\Release/"
+ ObjectFile=".\x86\Release/"
+ ProgramDataBaseFileName=".\x86\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuuc.lib icutu.lib icutest.lib winmm.lib"
+ OutputFile=".\x86\Release/normperf.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\..\..\lib\"
+ ProgramDatabaseFile=".\x86\Release/normperf.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory=".\x64\Debug"
+ IntermediateDirectory=".\x64\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ TypeLibraryName=".\x64\Debug/normperf.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw"
+ PreprocessorDefinitions="WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x64\Debug/normperf.pch"
+ AssemblerListingLocation=".\x64\Debug/"
+ ObjectFile=".\x64\Debug/"
+ ProgramDataBaseFileName=".\x64\Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuucd.lib icutud.lib icutestd.lib winmm.lib"
+ OutputFile=".\x64\Debug/normperf.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\..\..\lib64\"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\x64\Debug/normperf.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory=".\x64\Release"
+ IntermediateDirectory=".\x64\Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ TypeLibraryName=".\x64\Release/normperf.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw"
+ PreprocessorDefinitions="WIN64;WIN32;NDEBUG;_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x64\Release/normperf.pch"
+ AssemblerListingLocation=".\x64\Release/"
+ ObjectFile=".\x64\Release/"
+ ProgramDataBaseFileName=".\x64\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuuc.lib icutu.lib icutest.lib winmm.lib"
+ OutputFile=".\x64\Release/normperf.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\..\..\lib64\"
+ ProgramDatabaseFile=".\x64\Release/normperf.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath=".\dtfmtrtperf.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath=".\dtfmtrtperf.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.cpp
new file mode 100644
index 00000000000..011bbcbd3ec
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.cpp
@@ -0,0 +1,505 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2005, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+/**
+ * This Program tests the performance of ICU's Normalization engine against Windows
+ * to run it use the command like
+ *
+ * c:\normperf.exe -s C:\work\ICUCupertinoRep\icu4c\collation-perf-data -i 10 -p 15 -f TestNames_Asian.txt -u -e UTF-8 -l
+ */
+#include "normperf.h"
+#include "uoptions.h"
+#include <stdio.h>
+
+#define LENGTHOF(array) (sizeof(array)/sizeof((array)[0]))
+
+UPerfFunction* NormalizerPerformanceTest::runIndexedTest(int32_t index, UBool exec,const char* &name, char* par) {
+ switch (index) {
+ TESTCASE(0,TestICU_NFC_NFD_Text);
+ TESTCASE(1,TestICU_NFC_NFC_Text);
+ TESTCASE(2,TestICU_NFC_Orig_Text);
+
+ TESTCASE(3,TestICU_NFD_NFD_Text);
+ TESTCASE(4,TestICU_NFD_NFC_Text);
+ TESTCASE(5,TestICU_NFD_Orig_Text);
+
+ TESTCASE(6,TestICU_FCD_NFD_Text);
+ TESTCASE(7,TestICU_FCD_NFC_Text);
+ TESTCASE(8,TestICU_FCD_Orig_Text);
+
+ TESTCASE(9,TestWin_NFC_NFD_Text);
+ TESTCASE(10,TestWin_NFC_NFC_Text);
+ TESTCASE(11,TestWin_NFC_Orig_Text);
+
+ TESTCASE(12,TestWin_NFD_NFD_Text);
+ TESTCASE(13,TestWin_NFD_NFC_Text);
+ TESTCASE(14,TestWin_NFD_Orig_Text);
+
+ TESTCASE(15,TestQC_NFC_NFD_Text);
+ TESTCASE(16,TestQC_NFC_NFC_Text);
+ TESTCASE(17,TestQC_NFC_Orig_Text);
+
+ TESTCASE(18,TestQC_NFD_NFD_Text);
+ TESTCASE(19,TestQC_NFD_NFC_Text);
+ TESTCASE(20,TestQC_NFD_Orig_Text);
+
+ TESTCASE(21,TestQC_FCD_NFD_Text);
+ TESTCASE(22,TestQC_FCD_NFC_Text);
+ TESTCASE(23,TestQC_FCD_Orig_Text);
+
+ TESTCASE(24,TestIsNormalized_NFC_NFD_Text);
+ TESTCASE(25,TestIsNormalized_NFC_NFC_Text);
+ TESTCASE(26,TestIsNormalized_NFC_Orig_Text);
+
+ TESTCASE(27,TestIsNormalized_NFD_NFD_Text);
+ TESTCASE(28,TestIsNormalized_NFD_NFC_Text);
+ TESTCASE(29,TestIsNormalized_NFD_Orig_Text);
+
+ TESTCASE(30,TestIsNormalized_FCD_NFD_Text);
+ TESTCASE(31,TestIsNormalized_FCD_NFC_Text);
+ TESTCASE(32,TestIsNormalized_FCD_Orig_Text);
+
+ default:
+ name = "";
+ return NULL;
+ }
+ return NULL;
+
+}
+
+void NormalizerPerformanceTest::normalizeInput(ULine* dest,const UChar* src ,int32_t srcLen,UNormalizationMode mode, int32_t options){
+ int32_t reqLen = 0;
+ UErrorCode status = U_ZERO_ERROR;
+ for(;;){
+ /* pure pre-flight */
+ reqLen=unorm_normalize(src,srcLen,mode, options,NULL,0,&status);
+ if(status==U_BUFFER_OVERFLOW_ERROR){
+ status=U_ZERO_ERROR;
+ dest->name = new UChar[reqLen+1];
+ reqLen= unorm_normalize(src,srcLen,mode, options,dest->name,reqLen+1,&status);
+ dest->len=reqLen;
+ break;
+ }else if(U_FAILURE(status)){
+ printf("Could not normalize input. Error: %s", u_errorName(status));
+ }
+ }
+}
+UChar* NormalizerPerformanceTest::normalizeInput(int32_t& len, const UChar* src ,int32_t srcLen,UNormalizationMode mode, int32_t options){
+ int32_t reqLen = 0;
+ UErrorCode status = U_ZERO_ERROR;
+ UChar* dest = NULL;
+ for(;;){
+ /* pure pre-flight */
+ reqLen=unorm_normalize(src,srcLen,mode, options,NULL,0,&status);
+ if(status==U_BUFFER_OVERFLOW_ERROR){
+ status=U_ZERO_ERROR;
+ dest = new UChar[reqLen+1];
+ reqLen= unorm_normalize(src,srcLen,mode, options,dest,reqLen+1,&status);
+ len=reqLen;
+ break;
+ }else if(U_FAILURE(status)){
+ printf("Could not normalize input. Error: %s", u_errorName(status));
+ return NULL;
+ }
+ }
+ return dest;
+}
+
+static UOption cmdLineOptions[]={
+ UOPTION_DEF("options", 'o', UOPT_OPTIONAL_ARG)
+};
+
+NormalizerPerformanceTest::NormalizerPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status)
+: UPerfTest(argc,argv,status), options(0) {
+ NFDBuffer = NULL;
+ NFCBuffer = NULL;
+ NFDBufferLen = 0;
+ NFCBufferLen = 0;
+ NFDFileLines = NULL;
+ NFCFileLines = NULL;
+
+ if(status== U_ILLEGAL_ARGUMENT_ERROR){
+ fprintf(stderr,gUsageString, "normperf");
+ return;
+ }
+
+ if(U_FAILURE(status)){
+ fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n", u_errorName(status));
+ return;
+ }
+
+ _remainingArgc = u_parseArgs(_remainingArgc, (char **)argv, (int32_t)(LENGTHOF(cmdLineOptions)), cmdLineOptions);
+ if(cmdLineOptions[0].doesOccur && cmdLineOptions[0].value!=NULL) {
+ options=(int32_t)strtol(cmdLineOptions[0].value, NULL, 16);
+ }
+
+ if(line_mode){
+ ULine* filelines = getLines(status);
+ if(U_FAILURE(status)){
+ fprintf(stderr, "FAILED to read lines from file and create UPerfTest object. Error: %s\n", u_errorName(status));
+ return;
+ }
+ NFDFileLines = new ULine[numLines];
+ NFCFileLines = new ULine[numLines];
+
+ for(int32_t i=0;i<numLines;i++){
+ normalizeInput(&NFDFileLines[i],filelines[i].name,filelines[i].len,UNORM_NFD, options);
+ normalizeInput(&NFCFileLines[i],filelines[i].name,filelines[i].len,UNORM_NFC, options);
+
+ }
+ }else if(bulk_mode){
+ int32_t srcLen = 0;
+ const UChar* src = getBuffer(srcLen,status);
+ NFDBufferLen = 0;
+ NFCBufferLen = 0;
+
+ if(U_FAILURE(status)){
+ fprintf(stderr, "FAILED to read buffer from file and create UPerfTest object. Error: %s\n", u_errorName(status));
+ return;
+ }
+
+ NFDBuffer = normalizeInput(NFDBufferLen,src,srcLen,UNORM_NFD, options);
+ NFCBuffer = normalizeInput(NFCBufferLen,src,srcLen,UNORM_NFC, options);
+ }
+
+}
+
+NormalizerPerformanceTest::~NormalizerPerformanceTest(){
+ delete[] NFDFileLines;
+ delete[] NFCFileLines;
+ delete[] NFDBuffer;
+ delete[] NFCBuffer;
+}
+
+// Test NFC Performance
+UPerfFunction* NormalizerPerformanceTest::TestICU_NFC_NFD_Text(){
+ if(line_mode){
+ NormPerfFunction* func= new NormPerfFunction(ICUNormNFC, options,NFDFileLines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func= new NormPerfFunction(ICUNormNFC, options,NFDBuffer, NFDBufferLen, uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestICU_NFC_NFC_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(ICUNormNFC, options,NFCFileLines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func= new NormPerfFunction(ICUNormNFC, options,NFCBuffer, NFCBufferLen, uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestICU_NFC_Orig_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(ICUNormNFC, options,lines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(ICUNormNFC, options,buffer, bufferLen, uselen);
+ return func;
+ }
+}
+
+// Test NFD Performance
+UPerfFunction* NormalizerPerformanceTest::TestICU_NFD_NFD_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(ICUNormNFD, options,NFDFileLines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(ICUNormNFD, options,NFDBuffer,NFDBufferLen, uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestICU_NFD_NFC_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(ICUNormNFD, options,NFCFileLines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(ICUNormNFD, options,NFCBuffer,NFCBufferLen, uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestICU_NFD_Orig_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(ICUNormNFD, options,lines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(ICUNormNFD, options,buffer,bufferLen, uselen);
+ return func;
+ }
+}
+
+// Test FCD Performance
+UPerfFunction* NormalizerPerformanceTest::TestICU_FCD_NFD_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(ICUNormFCD, options,NFDFileLines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(ICUNormFCD, options,NFDBuffer,NFDBufferLen, uselen);
+ return func;
+ }
+
+}
+UPerfFunction* NormalizerPerformanceTest::TestICU_FCD_NFC_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(ICUNormFCD, options,NFCFileLines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(ICUNormFCD, options,NFCBuffer,NFCBufferLen, uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestICU_FCD_Orig_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(ICUNormFCD, options,lines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(ICUNormFCD, options,buffer,bufferLen, uselen);
+ return func;
+ }
+}
+
+// Test Win NFC Performance
+UPerfFunction* NormalizerPerformanceTest::TestWin_NFC_NFD_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFC, options,NFDFileLines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFC, options,NFDBuffer,NFDBufferLen, uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestWin_NFC_NFC_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFC, options,NFCFileLines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFC, options,NFCBuffer,NFCBufferLen, uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestWin_NFC_Orig_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFC, options,lines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFC, options,buffer,bufferLen, uselen);
+ return func;
+ }
+}
+
+// Test Win NFD Performance
+UPerfFunction* NormalizerPerformanceTest::TestWin_NFD_NFD_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFD, options,NFDFileLines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFD, options,NFDBuffer,NFDBufferLen, uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestWin_NFD_NFC_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFD, options,NFCFileLines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFD, options,NFCBuffer,NFCBufferLen, uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestWin_NFD_Orig_Text(){
+ if(line_mode){
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFD, options,lines,numLines, uselen);
+ return func;
+ }else{
+ NormPerfFunction* func = new NormPerfFunction(WinNormNFD, options,buffer,bufferLen, uselen);
+ return func;
+ }
+}
+
+// Test Quick Check Performance
+UPerfFunction* NormalizerPerformanceTest::TestQC_NFC_NFD_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFDFileLines, numLines, UNORM_NFC, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFDBuffer, NFDBufferLen, UNORM_NFC, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestQC_NFC_NFC_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFCFileLines, numLines, UNORM_NFC, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFCBuffer, NFCBufferLen, UNORM_NFC, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestQC_NFC_Orig_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,lines, numLines, UNORM_NFC, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,buffer, bufferLen, UNORM_NFC, options,uselen);
+ return func;
+ }
+}
+
+UPerfFunction* NormalizerPerformanceTest::TestQC_NFD_NFD_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFDFileLines, numLines, UNORM_NFD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFDBuffer, NFDBufferLen, UNORM_NFD, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestQC_NFD_NFC_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFCFileLines, numLines, UNORM_NFD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFCBuffer, NFCBufferLen, UNORM_NFD, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestQC_NFD_Orig_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,lines, numLines, UNORM_NFD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,buffer, bufferLen, UNORM_NFD, options,uselen);
+ return func;
+ }
+}
+
+UPerfFunction* NormalizerPerformanceTest::TestQC_FCD_NFD_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFDFileLines, numLines, UNORM_FCD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFDBuffer, NFDBufferLen, UNORM_FCD, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestQC_FCD_NFC_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFCFileLines, numLines, UNORM_FCD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,NFCBuffer, NFCBufferLen, UNORM_FCD, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestQC_FCD_Orig_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,lines, numLines, UNORM_FCD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUQuickCheck,buffer, bufferLen, UNORM_FCD, options,uselen);
+ return func;
+ }
+}
+
+// Test isNormalized Performance
+UPerfFunction* NormalizerPerformanceTest::TestIsNormalized_NFC_NFD_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFDFileLines, numLines, UNORM_NFC, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFDBuffer, NFDBufferLen, UNORM_NFC, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestIsNormalized_NFC_NFC_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFCFileLines, numLines, UNORM_NFC, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFCBuffer, NFCBufferLen, UNORM_NFC, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestIsNormalized_NFC_Orig_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,lines, numLines, UNORM_NFC, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,buffer, bufferLen, UNORM_NFC, options,uselen);
+ return func;
+ }
+}
+
+UPerfFunction* NormalizerPerformanceTest::TestIsNormalized_NFD_NFD_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFDFileLines, numLines, UNORM_NFD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFDBuffer, NFDBufferLen, UNORM_NFD, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestIsNormalized_NFD_NFC_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFCFileLines, numLines, UNORM_NFD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFCBuffer, NFCBufferLen, UNORM_NFD, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestIsNormalized_NFD_Orig_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,lines, numLines, UNORM_NFD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,buffer, bufferLen, UNORM_NFD, options,uselen);
+ return func;
+ }
+}
+
+UPerfFunction* NormalizerPerformanceTest::TestIsNormalized_FCD_NFD_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFDFileLines, numLines, UNORM_FCD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFDBuffer, NFDBufferLen, UNORM_FCD, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestIsNormalized_FCD_NFC_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFCFileLines, numLines, UNORM_FCD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,NFCBuffer, NFCBufferLen, UNORM_FCD, options,uselen);
+ return func;
+ }
+}
+UPerfFunction* NormalizerPerformanceTest::TestIsNormalized_FCD_Orig_Text(){
+ if(line_mode){
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,lines, numLines, UNORM_FCD, options,uselen);
+ return func;
+ }else{
+ QuickCheckPerfFunction* func = new QuickCheckPerfFunction(ICUIsNormalized,buffer, bufferLen, UNORM_FCD, options,uselen);
+ return func;
+ }
+}
+
+int main(int argc, const char* argv[]){
+ UErrorCode status = U_ZERO_ERROR;
+ NormalizerPerformanceTest test(argc, argv, status);
+ if(U_FAILURE(status)){
+ return status;
+ }
+ if(test.run()==FALSE){
+ fprintf(stderr,"FAILED: Tests could not be run please check the arguments.\n");
+ return -1;
+ }
+ return 0;
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.h b/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.h
new file mode 100644
index 00000000000..6a43a7727be
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.h
@@ -0,0 +1,353 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2006, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+#ifndef _NORMPERF_H
+#define _NORMPERF_H
+
+#include "unicode/unorm.h"
+#include "unicode/ustring.h"
+
+#include "unicode/uperf.h"
+#include <stdlib.h>
+
+// Stubs for Windows API functions when building on UNIXes.
+//
+#if defined(U_WINDOWS)
+// do nothing
+#else
+#define _UNICODE
+typedef int DWORD;
+inline int FoldStringW(DWORD dwMapFlags, const UChar* lpSrcStr,int cchSrc, UChar* lpDestStr,int cchDest);
+#endif
+
+#define DEST_BUFFER_CAPACITY 6000
+typedef int32_t (*NormFn)(const UChar* src,int32_t srcLen, UChar* dest,int32_t dstLen, int32_t options, UErrorCode* status);
+typedef int32_t (*QuickCheckFn)(const UChar* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status);
+
+class QuickCheckPerfFunction : public UPerfFunction{
+private:
+ ULine* lines;
+ int32_t numLines;
+ QuickCheckFn fn;
+ UNormalizationMode mode;
+ int32_t retVal;
+ UBool uselen;
+ const UChar* src;
+ int32_t srcLen;
+ UBool line_mode;
+ int32_t options;
+
+public:
+ virtual void call(UErrorCode* status){
+ if(line_mode==TRUE){
+ if(uselen){
+ for(int32_t i = 0; i< numLines; i++){
+ retVal = (*fn)(lines[i].name,lines[i].len,mode, options, status);
+ }
+ }else{
+ for(int32_t i = 0; i< numLines; i++){
+ retVal = (*fn)(lines[i].name,-1,mode, options, status);
+ }
+ }
+ }else{
+ if(uselen){
+
+ retVal = (*fn)(src,srcLen,mode, options, status);
+ }else{
+ retVal = (*fn)(src,-1,mode, options, status);
+ }
+ }
+
+ }
+ virtual long getOperationsPerIteration(){
+ if(line_mode==TRUE){
+ int32_t totalChars=0;
+ for(int32_t i =0; i< numLines; i++){
+ totalChars+= lines[i].len;
+ }
+ return totalChars;
+ }else{
+ return srcLen;
+ }
+ }
+ QuickCheckPerfFunction(QuickCheckFn func, ULine* srcLines,int32_t srcNumLines, UNormalizationMode _mode, int32_t opts, UBool _uselen) : options(opts) {
+ fn = func;
+ lines = srcLines;
+ numLines = srcNumLines;
+ uselen = _uselen;
+ mode = _mode;
+ src = NULL;
+ srcLen = 0;
+ line_mode = TRUE;
+ }
+ QuickCheckPerfFunction(QuickCheckFn func, const UChar* source,int32_t sourceLen, UNormalizationMode _mode, int32_t opts, UBool _uselen) : options(opts) {
+ fn = func;
+ lines = NULL;
+ numLines = 0;
+ uselen = _uselen;
+ mode = _mode;
+ src = source;
+ srcLen = sourceLen;
+ line_mode = FALSE;
+ }
+};
+
+
+class NormPerfFunction : public UPerfFunction{
+private:
+ ULine* lines;
+ int32_t numLines;
+ UChar dest[DEST_BUFFER_CAPACITY];
+ UChar* pDest;
+ int32_t destLen;
+ NormFn fn;
+ int32_t retVal;
+ UBool uselen;
+ const UChar* src;
+ int32_t srcLen;
+ UBool line_mode;
+ int32_t options;
+
+public:
+ virtual void call(UErrorCode* status){
+ if(line_mode==TRUE){
+ if(uselen){
+ for(int32_t i = 0; i< numLines; i++){
+ retVal = (*fn)(lines[i].name,lines[i].len,pDest,destLen, options, status);
+ }
+ }else{
+ for(int32_t i = 0; i< numLines; i++){
+ retVal = (*fn)(lines[i].name,-1,pDest,destLen, options, status);
+ }
+ }
+ }else{
+ if(uselen){
+ retVal = (*fn)(src,srcLen,pDest,destLen, options, status);
+ }else{
+ retVal = (*fn)(src,-1,pDest,destLen, options, status);
+ }
+ }
+ }
+ virtual long getOperationsPerIteration(){
+ if(line_mode ==TRUE){
+ int32_t totalChars=0;
+ for(int32_t i =0; i< numLines; i++){
+ totalChars+= lines[i].len;
+ }
+ return totalChars;
+ }else{
+ return srcLen;
+ }
+ }
+ NormPerfFunction(NormFn func, int32_t opts, ULine* srcLines,int32_t srcNumLines,UBool _uselen) : options(opts) {
+ fn = func;
+ lines = srcLines;
+ numLines = srcNumLines;
+ uselen = _uselen;
+ destLen = DEST_BUFFER_CAPACITY;
+ pDest = dest;
+ src = NULL;
+ srcLen = 0;
+ line_mode = TRUE;
+ }
+ NormPerfFunction(NormFn func, int32_t opts, const UChar* source,int32_t sourceLen,UBool _uselen) : options(opts) {
+ fn = func;
+ lines = NULL;
+ numLines = 0;
+ uselen = _uselen;
+ destLen = sourceLen*3;
+ pDest = (UChar*) malloc(destLen * U_SIZEOF_UCHAR);
+ src = source;
+ srcLen = sourceLen;
+ line_mode = FALSE;
+ }
+ ~NormPerfFunction(){
+ if(dest != pDest){
+ free(pDest);
+ }
+ }
+};
+
+
+
+class NormalizerPerformanceTest : public UPerfTest{
+private:
+ ULine* NFDFileLines;
+ ULine* NFCFileLines;
+ UChar* NFDBuffer;
+ UChar* NFCBuffer;
+ UChar* origBuffer;
+ int32_t origBufferLen;
+ int32_t NFDBufferLen;
+ int32_t NFCBufferLen;
+ int32_t options;
+
+ void normalizeInput(ULine* dest,const UChar* src ,int32_t srcLen,UNormalizationMode mode, int32_t options);
+ UChar* normalizeInput(int32_t& len, const UChar* src ,int32_t srcLen,UNormalizationMode mode, int32_t options);
+
+public:
+
+ NormalizerPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status);
+ ~NormalizerPerformanceTest();
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par = NULL);
+ /* NFC performance */
+ UPerfFunction* TestICU_NFC_NFD_Text();
+ UPerfFunction* TestICU_NFC_NFC_Text();
+ UPerfFunction* TestICU_NFC_Orig_Text();
+
+ /* NFD performance */
+ UPerfFunction* TestICU_NFD_NFD_Text();
+ UPerfFunction* TestICU_NFD_NFC_Text();
+ UPerfFunction* TestICU_NFD_Orig_Text();
+
+ /* FCD performance */
+ UPerfFunction* TestICU_FCD_NFD_Text();
+ UPerfFunction* TestICU_FCD_NFC_Text();
+ UPerfFunction* TestICU_FCD_Orig_Text();
+
+ /*Win NFC performance */
+ UPerfFunction* TestWin_NFC_NFD_Text();
+ UPerfFunction* TestWin_NFC_NFC_Text();
+ UPerfFunction* TestWin_NFC_Orig_Text();
+
+ /* Win NFD performance */
+ UPerfFunction* TestWin_NFD_NFD_Text();
+ UPerfFunction* TestWin_NFD_NFC_Text();
+ UPerfFunction* TestWin_NFD_Orig_Text();
+
+ /* Quick check performance */
+ UPerfFunction* TestQC_NFC_NFD_Text();
+ UPerfFunction* TestQC_NFC_NFC_Text();
+ UPerfFunction* TestQC_NFC_Orig_Text();
+
+ UPerfFunction* TestQC_NFD_NFD_Text();
+ UPerfFunction* TestQC_NFD_NFC_Text();
+ UPerfFunction* TestQC_NFD_Orig_Text();
+
+ UPerfFunction* TestQC_FCD_NFD_Text();
+ UPerfFunction* TestQC_FCD_NFC_Text();
+ UPerfFunction* TestQC_FCD_Orig_Text();
+
+ /* IsNormalized performnace */
+ UPerfFunction* TestIsNormalized_NFC_NFD_Text();
+ UPerfFunction* TestIsNormalized_NFC_NFC_Text();
+ UPerfFunction* TestIsNormalized_NFC_Orig_Text();
+
+ UPerfFunction* TestIsNormalized_NFD_NFD_Text();
+ UPerfFunction* TestIsNormalized_NFD_NFC_Text();
+ UPerfFunction* TestIsNormalized_NFD_Orig_Text();
+
+ UPerfFunction* TestIsNormalized_FCD_NFD_Text();
+ UPerfFunction* TestIsNormalized_FCD_NFC_Text();
+ UPerfFunction* TestIsNormalized_FCD_Orig_Text();
+
+};
+
+//---------------------------------------------------------------------------------------
+// Platform / ICU version specific proto-types
+//---------------------------------------------------------------------------------------
+
+
+#if (U_ICU_VERSION_MAJOR_NUM > 1 ) || ((U_ICU_VERSION_MAJOR_NUM == 1 )&&(U_ICU_VERSION_MINOR_NUM > 8) && (U_ICU_VERSION_PATCHLEVEL_NUM >=1))
+
+int32_t ICUNormNFD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return unorm_normalize(src,srcLen,UNORM_NFD, options,dest,dstLen,status);
+}
+
+int32_t ICUNormNFC(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return unorm_normalize(src,srcLen,UNORM_NFC, options,dest,dstLen,status);
+}
+
+int32_t ICUNormNFKD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return unorm_normalize(src,srcLen,UNORM_NFKD, options,dest,dstLen,status);
+}
+int32_t ICUNormNFKC(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return unorm_normalize(src,srcLen,UNORM_NFKC, options,dest,dstLen,status);
+}
+
+int32_t ICUNormFCD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return unorm_normalize(src,srcLen,UNORM_FCD, options,dest,dstLen,status);
+}
+
+int32_t ICUQuickCheck(const UChar* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
+#if (U_ICU_VERSION_MAJOR_NUM > 2 ) || ((U_ICU_VERSION_MAJOR_NUM == 2 )&&(U_ICU_VERSION_MINOR_NUM >= 6))
+ return unorm_quickCheckWithOptions(src,srcLen,mode, options, status);
+#else
+ return unorm_quickCheck(src,srcLen,mode,status);
+#endif
+}
+int32_t ICUIsNormalized(const UChar* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
+ return unorm_isNormalized(src,srcLen,mode,status);
+}
+
+
+#else
+
+int32_t ICUNormNFD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return unorm_normalize(src,srcLen,UCOL_DECOMP_CAN, options,dest,dstLen,status);
+}
+
+int32_t ICUNormNFC(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return unorm_normalize(src,srcLen,UCOL_COMPOSE_CAN, options,dest,dstLen,status);
+}
+
+int32_t ICUNormNFKD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return unorm_normalize(src,srcLen,UCOL_DECOMP_COMPAT, options,dest,dstLen,status);
+}
+int32_t ICUNormNFKC(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return unorm_normalize(src,srcLen,UCOL_COMPOSE_COMPAT, options,dest,dstLen,status);
+}
+
+int32_t ICUNormFCD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return unorm_normalize(src,srcLen,UNORM_FCD, options,dest,dstLen,status);
+}
+
+int32_t ICUQuickCheck(const UChar* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
+ return unorm_quickCheck(src,srcLen,mode,status);
+}
+
+int32_t ICUIsNormalized(const UChar* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
+ return 0;
+}
+#endif
+
+#if defined(U_WINDOWS)
+
+int32_t WinNormNFD(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return FoldStringW(MAP_COMPOSITE,src,srcLen,dest,dstLen);
+}
+
+int32_t WinNormNFC(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return FoldStringW(MAP_PRECOMPOSED,src,srcLen,dest,dstLen);
+}
+
+int32_t WinNormNFKD(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return FoldStringW(MAP_COMPOSITE+MAP_FOLDCZONE,src,srcLen,dest,dstLen);
+}
+int32_t WinNormNFKC(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return FoldStringW(MAP_FOLDCZONE,src,srcLen,dest,dstLen);
+}
+#else
+int32_t WinNormNFD(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return 0 ;
+}
+
+int32_t WinNormNFC(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return 0;
+}
+
+int32_t WinNormNFKD(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return 0;
+}
+int32_t WinNormNFKC(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+ return 0;
+}
+#endif
+
+
+#endif // NORMPERF_H
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.vcxproj
new file mode 100644
index 00000000000..aa421fbc519
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.vcxproj
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{56CCC661-8D33-4F0A-B62F-C619CE843C68}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/normperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/normperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/normperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/normperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/normperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/normperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/normperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/normperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/normperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Release/normperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/normperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/normperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/normperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Release/normperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/normperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/normperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="normperf.cpp">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="normperf.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.vcxproj.filters
new file mode 100644
index 00000000000..f54db9b995b
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/normperf/normperf.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{d041613b-068f-422e-9d8e-e33410289c2c}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{5c68a2a2-e19e-4069-be92-bb2f090b0d52}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{10617b42-7a0c-4493-ad84-34049a8d5c06}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="normperf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="normperf.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/perf.sln b/Build/source/libs/icu/icu-4.6/test/perf/perf.sln
new file mode 100644
index 00000000000..47f7977f575
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/perf.sln
@@ -0,0 +1,139 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "charperf", "charperf\charperf.vcxproj", "{D850A4B6-7D94-476E-9392-E9272DA4EAAF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "normperf", "normperf\normperf.vcxproj", "{56CCC661-8D33-4F0A-B62F-C619CE843C68}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convperf", "convperf\convperf.vcxproj", "{B4C03939-D417-41F0-85B4-848ECF105E3A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stringperf", "ustrperf\stringperf.vcxproj", "{523710EA-349D-45BF-8B39-289CC86E7D91}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ubrkperf", "ubrkperf\ubrkperf.vcxproj", "{7E280294-49BD-43D1-9903-CF29648D88CA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utfperf", "utfperf\utfperf.vcxproj", "{E7728E98-0469-43F4-AF37-4529A3D52C6B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "collperf", "collperf\collperf.vcxproj", "{01807B4A-E3B5-4B97-A7F3-207746DCD71E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "usetperf", "usetperf\usetperf.vcxproj", "{EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unisetperf", "unisetperf\unisetperf.vcxproj", "{E7728E98-0469-AF37-43F4-4529A3D52C6B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strsrchperf", "strsrchperf\strsrchperf.vcxproj", "{241DED26-1635-45E6-9564-7742AC8043B5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utrie2perf", "utrie2perf\utrie2perf.vcxproj", "{B9458CB3-9B09-402A-8C4C-43B6D0EA9691}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ucnvavailperf", "ucnvavailperf\ucnvavailperf.vcxproj", "{EE2259BF-280D-4E0E-8A08-D77A26AE4191}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DateFmtPerf", "DateFmtPerf\DateFmtPerf.vcxproj", "{B5E59422-0C52-4469-AB69-0C2AFD6E37A5}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {D850A4B6-7D94-476E-9392-E9272DA4EAAF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D850A4B6-7D94-476E-9392-E9272DA4EAAF}.Debug|Win32.Build.0 = Debug|Win32
+ {D850A4B6-7D94-476E-9392-E9272DA4EAAF}.Debug|x64.ActiveCfg = Debug|x64
+ {D850A4B6-7D94-476E-9392-E9272DA4EAAF}.Debug|x64.Build.0 = Debug|x64
+ {D850A4B6-7D94-476E-9392-E9272DA4EAAF}.Release|Win32.ActiveCfg = Release|Win32
+ {D850A4B6-7D94-476E-9392-E9272DA4EAAF}.Release|Win32.Build.0 = Release|Win32
+ {D850A4B6-7D94-476E-9392-E9272DA4EAAF}.Release|x64.ActiveCfg = Release|x64
+ {D850A4B6-7D94-476E-9392-E9272DA4EAAF}.Release|x64.Build.0 = Release|x64
+ {56CCC661-8D33-4F0A-B62F-C619CE843C68}.Debug|Win32.ActiveCfg = Debug|Win32
+ {56CCC661-8D33-4F0A-B62F-C619CE843C68}.Debug|Win32.Build.0 = Debug|Win32
+ {56CCC661-8D33-4F0A-B62F-C619CE843C68}.Debug|x64.ActiveCfg = Debug|x64
+ {56CCC661-8D33-4F0A-B62F-C619CE843C68}.Debug|x64.Build.0 = Debug|x64
+ {56CCC661-8D33-4F0A-B62F-C619CE843C68}.Release|Win32.ActiveCfg = Release|Win32
+ {56CCC661-8D33-4F0A-B62F-C619CE843C68}.Release|Win32.Build.0 = Release|Win32
+ {56CCC661-8D33-4F0A-B62F-C619CE843C68}.Release|x64.ActiveCfg = Release|x64
+ {56CCC661-8D33-4F0A-B62F-C619CE843C68}.Release|x64.Build.0 = Release|x64
+ {B4C03939-D417-41F0-85B4-848ECF105E3A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B4C03939-D417-41F0-85B4-848ECF105E3A}.Debug|Win32.Build.0 = Debug|Win32
+ {B4C03939-D417-41F0-85B4-848ECF105E3A}.Debug|x64.ActiveCfg = Debug|x64
+ {B4C03939-D417-41F0-85B4-848ECF105E3A}.Debug|x64.Build.0 = Debug|x64
+ {B4C03939-D417-41F0-85B4-848ECF105E3A}.Release|Win32.ActiveCfg = Release|Win32
+ {B4C03939-D417-41F0-85B4-848ECF105E3A}.Release|Win32.Build.0 = Release|Win32
+ {B4C03939-D417-41F0-85B4-848ECF105E3A}.Release|x64.ActiveCfg = Release|x64
+ {B4C03939-D417-41F0-85B4-848ECF105E3A}.Release|x64.Build.0 = Release|x64
+ {523710EA-349D-45BF-8B39-289CC86E7D91}.Debug|Win32.ActiveCfg = Debug|Win32
+ {523710EA-349D-45BF-8B39-289CC86E7D91}.Debug|Win32.Build.0 = Debug|Win32
+ {523710EA-349D-45BF-8B39-289CC86E7D91}.Debug|x64.ActiveCfg = Debug|x64
+ {523710EA-349D-45BF-8B39-289CC86E7D91}.Debug|x64.Build.0 = Debug|x64
+ {523710EA-349D-45BF-8B39-289CC86E7D91}.Release|Win32.ActiveCfg = Release|Win32
+ {523710EA-349D-45BF-8B39-289CC86E7D91}.Release|Win32.Build.0 = Release|Win32
+ {523710EA-349D-45BF-8B39-289CC86E7D91}.Release|x64.ActiveCfg = Release|x64
+ {523710EA-349D-45BF-8B39-289CC86E7D91}.Release|x64.Build.0 = Release|x64
+ {7E280294-49BD-43D1-9903-CF29648D88CA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7E280294-49BD-43D1-9903-CF29648D88CA}.Debug|Win32.Build.0 = Debug|Win32
+ {7E280294-49BD-43D1-9903-CF29648D88CA}.Debug|x64.ActiveCfg = Debug|x64
+ {7E280294-49BD-43D1-9903-CF29648D88CA}.Debug|x64.Build.0 = Debug|x64
+ {7E280294-49BD-43D1-9903-CF29648D88CA}.Release|Win32.ActiveCfg = Release|Win32
+ {7E280294-49BD-43D1-9903-CF29648D88CA}.Release|Win32.Build.0 = Release|Win32
+ {7E280294-49BD-43D1-9903-CF29648D88CA}.Release|x64.ActiveCfg = Release|x64
+ {7E280294-49BD-43D1-9903-CF29648D88CA}.Release|x64.Build.0 = Release|x64
+ {E7728E98-0469-43F4-AF37-4529A3D52C6B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E7728E98-0469-43F4-AF37-4529A3D52C6B}.Debug|Win32.Build.0 = Debug|Win32
+ {E7728E98-0469-43F4-AF37-4529A3D52C6B}.Debug|x64.ActiveCfg = Debug|x64
+ {E7728E98-0469-43F4-AF37-4529A3D52C6B}.Debug|x64.Build.0 = Debug|x64
+ {E7728E98-0469-43F4-AF37-4529A3D52C6B}.Release|Win32.ActiveCfg = Release|Win32
+ {E7728E98-0469-43F4-AF37-4529A3D52C6B}.Release|Win32.Build.0 = Release|Win32
+ {E7728E98-0469-43F4-AF37-4529A3D52C6B}.Release|x64.ActiveCfg = Release|x64
+ {E7728E98-0469-43F4-AF37-4529A3D52C6B}.Release|x64.Build.0 = Release|x64
+ {01807B4A-E3B5-4B97-A7F3-207746DCD71E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {01807B4A-E3B5-4B97-A7F3-207746DCD71E}.Debug|Win32.Build.0 = Debug|Win32
+ {01807B4A-E3B5-4B97-A7F3-207746DCD71E}.Debug|x64.ActiveCfg = Debug|x64
+ {01807B4A-E3B5-4B97-A7F3-207746DCD71E}.Debug|x64.Build.0 = Debug|x64
+ {01807B4A-E3B5-4B97-A7F3-207746DCD71E}.Release|Win32.ActiveCfg = Release|Win32
+ {01807B4A-E3B5-4B97-A7F3-207746DCD71E}.Release|Win32.Build.0 = Release|Win32
+ {01807B4A-E3B5-4B97-A7F3-207746DCD71E}.Release|x64.ActiveCfg = Release|x64
+ {01807B4A-E3B5-4B97-A7F3-207746DCD71E}.Release|x64.Build.0 = Release|x64
+ {EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}.Debug|Win32.Build.0 = Debug|Win32
+ {EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}.Debug|x64.ActiveCfg = Debug|x64
+ {EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}.Debug|x64.Build.0 = Debug|x64
+ {EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}.Release|Win32.ActiveCfg = Release|Win32
+ {EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}.Release|Win32.Build.0 = Release|Win32
+ {EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}.Release|x64.ActiveCfg = Release|x64
+ {EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}.Release|x64.Build.0 = Release|x64
+ {E7728E98-0469-AF37-43F4-4529A3D52C6B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E7728E98-0469-AF37-43F4-4529A3D52C6B}.Debug|Win32.Build.0 = Debug|Win32
+ {E7728E98-0469-AF37-43F4-4529A3D52C6B}.Debug|x64.ActiveCfg = Debug|x64
+ {E7728E98-0469-AF37-43F4-4529A3D52C6B}.Debug|x64.Build.0 = Debug|x64
+ {E7728E98-0469-AF37-43F4-4529A3D52C6B}.Release|Win32.ActiveCfg = Release|Win32
+ {E7728E98-0469-AF37-43F4-4529A3D52C6B}.Release|Win32.Build.0 = Release|Win32
+ {E7728E98-0469-AF37-43F4-4529A3D52C6B}.Release|x64.ActiveCfg = Release|x64
+ {E7728E98-0469-AF37-43F4-4529A3D52C6B}.Release|x64.Build.0 = Release|x64
+ {241DED26-1635-45E6-9564-7742AC8043B5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {241DED26-1635-45E6-9564-7742AC8043B5}.Debug|Win32.Build.0 = Debug|Win32
+ {241DED26-1635-45E6-9564-7742AC8043B5}.Debug|x64.ActiveCfg = Debug|x64
+ {241DED26-1635-45E6-9564-7742AC8043B5}.Debug|x64.Build.0 = Debug|x64
+ {241DED26-1635-45E6-9564-7742AC8043B5}.Release|Win32.ActiveCfg = Release|Win32
+ {241DED26-1635-45E6-9564-7742AC8043B5}.Release|Win32.Build.0 = Release|Win32
+ {241DED26-1635-45E6-9564-7742AC8043B5}.Release|x64.ActiveCfg = Release|x64
+ {241DED26-1635-45E6-9564-7742AC8043B5}.Release|x64.Build.0 = Release|x64
+ {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Debug|Win32.Build.0 = Debug|Win32
+ {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Debug|x64.ActiveCfg = Debug|Win32
+ {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Release|Win32.ActiveCfg = Release|Win32
+ {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Release|Win32.Build.0 = Release|Win32
+ {B9458CB3-9B09-402A-8C4C-43B6D0EA9691}.Release|x64.ActiveCfg = Release|Win32
+ {EE2259BF-280D-4E0E-8A08-D77A26AE4191}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EE2259BF-280D-4E0E-8A08-D77A26AE4191}.Debug|Win32.Build.0 = Debug|Win32
+ {EE2259BF-280D-4E0E-8A08-D77A26AE4191}.Debug|x64.ActiveCfg = Debug|Win32
+ {EE2259BF-280D-4E0E-8A08-D77A26AE4191}.Release|Win32.ActiveCfg = Release|Win32
+ {EE2259BF-280D-4E0E-8A08-D77A26AE4191}.Release|Win32.Build.0 = Release|Win32
+ {EE2259BF-280D-4E0E-8A08-D77A26AE4191}.Release|x64.ActiveCfg = Release|Win32
+ {B5E59422-0C52-4469-AB69-0C2AFD6E37A5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B5E59422-0C52-4469-AB69-0C2AFD6E37A5}.Debug|Win32.Build.0 = Debug|Win32
+ {B5E59422-0C52-4469-AB69-0C2AFD6E37A5}.Debug|x64.ActiveCfg = Debug|Win32
+ {B5E59422-0C52-4469-AB69-0C2AFD6E37A5}.Release|Win32.ActiveCfg = Release|Win32
+ {B5E59422-0C52-4469-AB69-0C2AFD6E37A5}.Release|Win32.Build.0 = Release|Win32
+ {B5E59422-0C52-4469-AB69-0C2AFD6E37A5}.Release|x64.ActiveCfg = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Common.pl b/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Common.pl
new file mode 100644
index 00000000000..29760793596
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Common.pl
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2010, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+# Settings by user
+$ICULatestVersion = ""; # Change to respective version number
+$ICUPreviousVersion = ""; # Change to respective version number
+$ICUPrevious2Version = ""; # Change to respective version number
+
+$PerformanceDataPath = ""; #Change to Performance Data Path
+
+$ICULatest = ""; # Change to path of latest ICU (e.g. /home/user/Desktop/icu-4.0)
+$ICUPrevious = ""; # Change to path of previous ICU
+$ICUPrevious2 = ""; # Change to path of ICU before previous release
+
+$OnWindows = 0; # Change to 1 if on Windows
+$Windows64 = 0; # Change to 1 if on Windows and running 64 bit
+# End of settings by user
+
+$CollationDataPath = $PerformanceDataPath."/collation"; # Collation Performance Data Path
+$ConversionDataPath = $PerformanceDataPath."/conversion"; # Conversion Performance Data Path
+$UDHRDataPath = $PerformanceDataPath."/udhr"; # UDHR Performance Data Path
+
+$ICUPathLatest = $ICULatest."/source/test/perf";
+$ICUPathPrevious = $ICUPrevious."/source/test/perf";
+$ICUPathPrevious2 = $ICUPrevious."/source/test/perf";
+
+$WindowsPlatform = "";
+if ($Windows64) {
+ $WindowsPlatform = "x64";
+} else {
+ $WindowsPlatform = "x86";
+}
+
+return 1;
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Dataset.pm b/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Dataset.pm
new file mode 100644
index 00000000000..ab5d05bbb4e
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Dataset.pm
@@ -0,0 +1,139 @@
+#!/usr/local/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+package Dataset;
+use Statistics::Descriptive;
+use Statistics::Distributions;
+use strict;
+
+# Create a new Dataset with the given data.
+sub new {
+ my ($class) = shift;
+ my $self = bless {
+ _data => \@_,
+ _scale => 1.0,
+ _mean => 0.0,
+ _error => 0.0,
+ }, $class;
+
+ my $n = @_;
+
+ if ($n >= 1) {
+ my $stats = Statistics::Descriptive::Full->new();
+ $stats->add_data(@{$self->{_data}});
+ $self->{_mean} = $stats->mean();
+
+ if ($n >= 2) {
+ # Use a t distribution rather than Gaussian because (a) we
+ # assume an underlying normal dist, (b) we do not know the
+ # standard deviation -- we estimate it from the data, and (c)
+ # we MAY have a small sample size (also works for large n).
+ my $t = Statistics::Distributions::tdistr($n-1, 0.005);
+ $self->{_error} = $t * $stats->standard_deviation();
+ }
+ }
+
+ $self;
+}
+
+# Set a scaling factor for all data; 1.0 means no scaling.
+# Scale must be > 0.
+sub setScale {
+ my ($self, $scale) = @_;
+ $self->{_scale} = $scale;
+}
+
+# Multiply the scaling factor by a value.
+sub scaleBy {
+ my ($self, $a) = @_;
+ $self->{_scale} *= $a;
+}
+
+# Return the mean.
+sub getMean {
+ my $self = shift;
+ return $self->{_mean} * $self->{_scale};
+}
+
+# Return a 99% error based on the t distribution. The dataset
+# is desribed as getMean() +/- getError().
+sub getError {
+ my $self = shift;
+ return $self->{_error} * $self->{_scale};
+}
+
+# Divide two Datasets and return a new one, maintaining the
+# mean+/-error. The new Dataset has no data points.
+sub divide {
+ my $self = shift;
+ my $rhs = shift;
+
+ my $minratio = ($self->{_mean} - $self->{_error}) /
+ ($rhs->{_mean} + $rhs->{_error});
+ my $maxratio = ($self->{_mean} + $self->{_error}) /
+ ($rhs->{_mean} - $rhs->{_error});
+
+ my $result = Dataset->new();
+ $result->{_mean} = ($minratio + $maxratio) / 2;
+ $result->{_error} = $result->{_mean} - $minratio;
+ $result->{_scale} = $self->{_scale} / $rhs->{_scale};
+ $result;
+}
+
+# subtracts two Datasets and return a new one, maintaining the
+# mean+/-error. The new Dataset has no data points.
+sub subtract {
+ my $self = shift;
+ my $rhs = shift;
+
+ my $result = Dataset->new();
+ $result->{_mean} = $self->{_mean} - $rhs->{_mean};
+ $result->{_error} = $self->{_error} + $rhs->{_error};
+ $result->{_scale} = $self->{_scale};
+ $result;
+}
+
+# adds two Datasets and return a new one, maintaining the
+# mean+/-error. The new Dataset has no data points.
+sub add {
+ my $self = shift;
+ my $rhs = shift;
+
+ my $result = Dataset->new();
+ $result->{_mean} = $self->{_mean} + $rhs->{_mean};
+ $result->{_error} = $self->{_error} + $rhs->{_error};
+ $result->{_scale} = $self->{_scale};
+ $result;
+}
+
+# Divides a dataset by a scalar.
+# The new Dataset has no data points.
+sub divideByScalar {
+ my $self = shift;
+ my $s = shift;
+
+ my $result = Dataset->new();
+ $result->{_mean} = $self->{_mean}/$s;
+ $result->{_error} = $self->{_error}/$s;
+ $result->{_scale} = $self->{_scale};
+ $result;
+}
+
+# Divides a dataset by a scalar.
+# The new Dataset has no data points.
+sub multiplyByScalar {
+ my $self = shift;
+ my $s = shift;
+
+ my $result = Dataset->new();
+ $result->{_mean} = $self->{_mean}*$s;
+ $result->{_error} = $self->{_error}*$s;
+ $result->{_scale} = $self->{_scale};
+ $result;
+}
+
+1;
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Format.pm b/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Format.pm
new file mode 100644
index 00000000000..d12fd18ad25
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Format.pm
@@ -0,0 +1,166 @@
+#!/usr/local/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+my $PLUS_MINUS = "&plusmn;";
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset. Output is as
+#|# as follows:
+#|# 241.23 - 241.98 => 241.5 +/- 0.3
+#|# 241.2 - 243.8 => 242 +/- 1
+#|# 211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|# 220.3 - 234.3 => 227 +/- 7
+#|# 220.3 - 300.3 => 260 +/- 40
+#|# 220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|# 0.022 - 0.024 => 0.023 +/- 0.001
+#|# 0.022 - 0.032 => 0.027 +/- 0.005
+#|# 0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#| my $ds = shift;
+#| my $lower = $ds->getMean() - $ds->getError();
+#| my $upper = $ds->getMean() + $ds->getError();
+#| my $scale = 0;
+#| # Find how many initial digits are the same
+#| while ($lower < 1 ||
+#| int($lower) == int($upper)) {
+#| $lower *= 10;
+#| $upper *= 10;
+#| $scale++;
+#| }
+#| while ($lower >= 10 &&
+#| int($lower) == int($upper)) {
+#| $lower /= 10;
+#| $upper /= 10;
+#| $scale--;
+#| }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+ my $sigdig = shift;
+ my $mult = shift;
+ my $a = shift;
+ my $delta = shift; # may be undef
+
+ my $result = formatSigDig($sigdig, $a*$mult);
+ if (defined($delta)) {
+ my $d = formatSigDig($sigdig, $delta*$mult);
+ # restrict PRECISION of delta to that of main number
+ if ($result =~ /\.(\d+)/) {
+ # TODO make this work for values with all significant
+ # digits to the left of the decimal, e.g., 1234000.
+
+ # TODO the other thing wrong with this is that it
+ # isn't rounding the $delta properly. Have to put
+ # this logic into formatSigDig().
+ my $x = length($1);
+ $d =~ s/\.(\d{$x})\d+/.$1/;
+ }
+ $result .= " $PLUS_MINUS " . $d;
+ }
+ $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+ my $sigdig = shift;
+ my $a = shift;
+ my $delta = shift; # may be undef
+
+ my @MULT = (1 , 1e3, 1e6, 1e9);
+ my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+ # Determine our scale
+ my $i = 0;
+ #always do seconds if the following line is commented out
+ ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+
+ formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+ my $sigdig = shift;
+ my $a = shift;
+ my $delta = shift; # may be undef
+
+ formatNumber($sigdig, 100, $a, $delta) . '%';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234". If
+# number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+ my $n = shift() - 1;
+ my $a = shift;
+
+ local $_ = sprintf("%.${n}e", $a);
+ my $sign = (s/^-//) ? '-' : '';
+
+ my $a_e;
+ my $result;
+ if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+ my ($d, $dn, $e) = ($1, $2, $3);
+ $a_e = $e;
+ $d .= $dn;
+ $e++;
+ $d .= '0' while ($e > length($d));
+ while ($e < 1) {
+ $e++;
+ $d = '0' . $d;
+ }
+ if ($e == length($d)) {
+ $result = $sign . $d;
+ } else {
+ $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+ }
+ } else {
+ die "Can't parse $_";
+ }
+ $result;
+}
+
+1;
+
+#eof
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Output.pm b/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Output.pm
new file mode 100644
index 00000000000..7b67a9c337b
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/perldriver/Output.pm
@@ -0,0 +1,389 @@
+#!/usr/local/bin/perl
+
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+
+use strict;
+
+use Dataset;
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+my $outType = "HTML";
+my $html = "noName";
+my $inTable;
+my @headers;
+my @timetypes = ("mean per op", "error per op", "events", "per event");
+my %raw;
+my $current = "";
+my $exp = 0;
+my $mult = 1e9; #use nanoseconds
+my $perc = 100; #for percent
+my $printEvents = 0;
+my $legend = "<a name=\"Legend\">\n<h2>Table legend</h2></a><ul>";
+my $legendDone = 0;
+my %options;
+my $operationIs = "operation";
+my $eventIs = "event";
+
+sub startTest {
+ $current = shift;
+ $exp = 0;
+ outputData($current);
+}
+
+sub printLeg {
+ if(!$legendDone) {
+ my $message;
+ foreach $message (@_) {
+ $legend .= "<li>".$message."</li>\n";
+ }
+ }
+}
+
+sub outputDist {
+ my $value = shift;
+ my $percent = shift;
+ my $mean = $value->getMean;
+ my $error = $value->getError;
+ print HTML "<td class=\"";
+ if($mean > 0) {
+ print HTML "value";
+ } else {
+ print HTML "worse";
+ }
+ print HTML "\">";
+ if($percent) {
+ print HTML formatPercent(2, $mean);
+ } else {
+ print HTML formatNumber(2, $mult, $mean);
+ }
+ print HTML "</td>\n";
+ print HTML "<td class=\"";
+ if((($error*$mult < 10)&&!$percent) || (($error<10)&&$percent)) {
+ print HTML "error";
+ } else {
+ print HTML "errorLarge";
+ }
+ print HTML "\">&plusmn;";
+ if($percent) {
+ print HTML formatPercent(2, $error);
+ } else {
+ print HTML formatNumber(2, $mult, $error);
+ }
+ print HTML "</td>\n";
+}
+
+sub outputValue {
+ my $value = shift;
+ print HTML "<td class=\"sepvalue\">";
+ print HTML $value;
+ #print HTML formatNumber(2, 1, $value);
+ print HTML "</td>\n";
+}
+
+sub startTable {
+ #my $printEvents = shift;
+ $inTable = 1;
+ my $i;
+ print HTML "<table $TABLEATTR>\n";
+ print HTML "<tbody>\n";
+ if($#headers >= 0) {
+ my ($header, $i);
+ print HTML "<tr>\n";
+ print HTML "<th rowspan=\"2\" class=\"testNameHeader\"><a href=\"#TestName\">Test Name</a></th>\n";
+ print HTML "<th rowspan=\"2\" class=\"testNameHeader\"><a href=\"#Ops\">Ops</a></th>\n";
+ printLeg("<a name=\"Test Name\">TestName</a> - name of the test as set by the test writer\n", "<a name=\"Ops\">Ops</a> - number of ".$operationIs."s per iteration\n");
+ if(!$printEvents) {
+ print HTML "<th colspan=".((4*($#headers+1))-2)." class=\"sourceType\">Per Operation</th>\n";
+ } else {
+ print HTML "<th colspan=".((2*($#headers+1))-2)." class=\"sourceType\">Per Operation</th>\n";
+ print HTML "<th colspan=".((5*($#headers+1))-2)." class=\"sourceType\">Per Event</th>\n";
+ }
+ print HTML "</tr>\n<tr>\n";
+ if(!$printEvents) {
+ foreach $header (@headers) {
+ print HTML "<th class=\"source\" colspan=2><a href=\"#meanop_$header\">$header<br>/op</a></th>\n";
+ printLeg("<a name=\"meanop_$header\">$header /op</a> - mean time and error for $header per $operationIs");
+ }
+ }
+ for $i (1 .. $#headers) {
+ print HTML "<th class=\"source\" colspan=2><a href=\"#mean_op_$i\">ratio $i<br>/op</a></th>\n";
+ printLeg("<a name=\"mean_op_$i\">ratio $i /op</a> - ratio and error of per $operationIs time, calculated as: (($headers[0] - $headers[$i])/$headers[$i])*100%, mean value");
+ }
+ if($printEvents) {
+ foreach $header (@headers) {
+ print HTML "<th class=\"source\"><a href=\"#events_$header\">$header<br>events</a></th>\n";
+ printLeg("<a name=\"events_$header\">$header events</a> - number of ".$eventIs."s for $header per iteration");
+ }
+ foreach $header (@headers) {
+ print HTML "<th class=\"source\" colspan=2><a href=\"#mean_ev_$header\">$header<br>/ev</a></th>\n";
+ printLeg("<a name=\"mean_ev_$header\">$header /ev</a> - mean time and error for $header per $eventIs");
+ }
+ for $i (1 .. $#headers) {
+ print HTML "<th class=\"source\" colspan=2><a href=\"#mean_ev_$i\">ratio $i<br>/ev</a></th>\n";
+ printLeg("<a name=\"mean_ev_$i\">ratio $i /ev</a> - ratio and error of per $eventIs time, calculated as: (($headers[0] - $headers[$i])/$headers[$i])*100%, mean value");
+ }
+ }
+ print HTML "</tr>\n";
+ }
+ $legendDone = 1;
+}
+
+sub closeTable {
+ if($inTable) {
+ undef $inTable;
+ print HTML "</tr>\n";
+ print HTML "</tbody>";
+ print HTML "</table>\n";
+ }
+}
+
+sub newRow {
+ if(!$inTable) {
+ startTable;
+ } else {
+ print HTML "</tr>\n";
+ }
+ print HTML "<tr>";
+}
+
+sub outputData {
+ if($inTable) {
+ my $msg = shift;
+ my $align = shift;
+ print HTML "<td";
+ if($align) {
+ print HTML " align = $align>";
+ } else {
+ print HTML ">";
+ }
+ print HTML "$msg";
+ print HTML "</td>";
+ } else {
+ my $message;
+ foreach $message (@_) {
+ print HTML "$message";
+ }
+ }
+}
+
+sub setupOutput {
+ my $date = localtime;
+ my $options = shift;
+ %options = %{ $options };
+ my $title = $options{ "title" };
+ my $headers = $options{ "headers" };
+ if($options{ "operationIs" }) {
+ $operationIs = $options{ "operationIs" };
+ }
+ if($options{ "eventIs" }) {
+ $eventIs = $options{ "eventIs" };
+ }
+ @headers = split(/ /, $headers);
+ my ($t, $rest);
+ ($t, $rest) = split(/\.\w+/, $0);
+ $t =~ /^.*\W(\w+)$/;
+ $t = $1;
+ if($outType eq 'HTML') {
+ $html = $date;
+ $html =~ s/://g; # ':' illegal
+ $html =~ s/\s*\d+$//; # delete year
+ $html =~ s/^\w+\s*//; # delete dow
+ $html = "$t $html.html";
+ if($options{ "outputDir" }) {
+ $html = $options{ "outputDir" }."/".$html;
+ }
+ $html =~ s/ /_/g;
+
+ open(HTML,">$html") or die "Can't write to $html: $!";
+
+#<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+ print HTML <<EOF;
+<HTML>
+ <HEAD>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <TITLE>$title</TITLE>
+<style>
+<!--
+body { font-size: 10pt; font-family: sans-serif }
+th { font-size: 10pt; border: 0 solid #000080; padding: 5 }
+th.testNameHeader { border-width: 1 }
+th.testName { text-align: left; border-left-width: 1; border-right-width: 1;
+ border-bottom-width: 1 }
+th.source { border-right-width: 1; border-bottom-width: 1 }
+th.sourceType { border-right-width: 1; border-top-width: 1; border-bottom-width: 1 }
+td { font-size: 10pt; text-align: Right; border: 0 solid #000080; padding: 5 }
+td.string { text-align: Left; border-bottom-width:1; border-right-width:1 }
+td.sepvalue { border-bottom-width: 1; border-right-width: 1 }
+td.value { border-bottom-width: 1 }
+td.worse { color: #FF0000; font-weight: bold; border-bottom-width: 1 }
+td.error { font-size: 75%; border-right-width: 1; border-bottom-width: 1 }
+td.errorLarge { font-size: 75%; color: #FF0000; font-weight: bold; border-right-width: 1;
+ border-bottom-width: 1 }
+A:link { color: black; font-weight: normal; text-decoration: none} /* unvisited links */
+A:visited { color: blue; font-weight: normal; text-decoration: none } /* visited links */
+A:hover { color: red; font-weight: normal; text-decoration: none } /* user hovers */
+A:active { color: lime; font-weight: normal; text-decoration: none } /* active links */
+-->
+</style>
+ </HEAD>
+ <BODY bgcolor="#FFFFFF" LINK="#006666" VLINK="#000000">
+EOF
+ print HTML "<H1>$title</H1>\n";
+
+ #print HTML "<H2>$TESTCLASS</H2>\n";
+ }
+}
+
+sub closeOutput {
+ if($outType eq 'HTML') {
+ if($inTable) {
+ closeTable;
+ }
+ $legend .= "</ul>\n";
+ print HTML $legend;
+ outputRaw();
+ print HTML <<EOF;
+ </BODY>
+</HTML>
+EOF
+ close(HTML) or die "Can't close $html: $!";
+ }
+}
+
+
+sub outputRaw {
+ print HTML "<h2>Raw data</h2>";
+ my $key;
+ my $i;
+ my $j;
+ my $k;
+ print HTML "<table $TABLEATTR>\n";
+ for $key (sort keys %raw) {
+ my $printkey = $key;
+ $printkey =~ s/\<br\>/ /g;
+ if($printEvents) {
+ if($key ne "") {
+ print HTML "<tr><th class=\"testNameHeader\" colspan = 7>$printkey</td></tr>\n"; # locale and data file
+ }
+ print HTML "<tr><th class=\"testName\">test name</th><th class=\"testName\">interesting arguments</th><th class=\"testName\">iterations</th><th class=\"testName\">operations</th><th class=\"testName\">mean time (ns)</th><th class=\"testName\">error (ns)</th><th class=\"testName\">events</th></tr>\n";
+ } else {
+ if($key ne "") {
+ print HTML "<tr><th class=\"testName\" colspan = 6>$printkey</td></tr>\n"; # locale and data file
+ }
+ print HTML "<tr><th class=\"testName\">test name</th><th class=\"testName\">interesting arguments</th><th class=\"testName\">iterations</th><th class=\"testName\">operations</th><th class=\"testName\">mean time (ns)</th><th class=\"testName\">error (ns)</th></tr>\n";
+ }
+ $printkey =~ s/[\<\>\/ ]//g;
+
+ my %done;
+ for $i ( $raw{$key} ) {
+ print HTML "<tr>";
+ for $j ( @$i ) {
+ my ($test, $args);
+ ($test, $args) = split(/,/, shift(@$j));
+
+ print HTML "<th class=\"testName\">";
+ if(!$done{$test}) {
+ print HTML "<a name=\"".$printkey."_".$test."\">".$test."</a>";
+ $done{$test} = 1;
+ } else {
+ print HTML $test;
+ }
+ print HTML "</th>";
+
+ print HTML "<td class=\"string\">".$args."</td>";
+
+ print HTML "<td class=\"sepvalue\">".shift(@$j)."</td>";
+ print HTML "<td class=\"sepvalue\">".shift(@$j)."</td>";
+
+ my @data = @{ shift(@$j) };
+ my $ds = Dataset->new(@data);
+ print HTML "<td class=\"sepvalue\">".formatNumber(4, $mult, $ds->getMean)."</td><td class=\"sepvalue\">".formatNumber(4, $mult, $ds->getError)."</td>";
+ if($#{ $j } >= 0) {
+ print HTML "<td class=\"sepvalue\">".shift(@$j)."</td>";
+ }
+ print HTML "</tr>\n";
+ }
+ }
+ }
+}
+
+sub store {
+ $raw{$current}[$exp++] = [@_];
+}
+
+sub outputRow {
+ #$raw{$current}[$exp++] = [@_];
+ my $testName = shift;
+ my @iterPerPass = @{shift(@_)};
+ my @noopers = @{shift(@_)};
+ my @timedata = @{shift(@_)};
+ my @noevents;
+ if($#_ >= 0) {
+ @noevents = @{shift(@_)};
+ }
+ if(!$inTable) {
+ if(@noevents) {
+ $printEvents = 1;
+ startTable;
+ } else {
+ startTable;
+ }
+ }
+ debug("No events: @noevents, $#noevents\n");
+
+ my $j;
+ my $loc = $current;
+ $loc =~ s/\<br\>/ /g;
+ $loc =~ s/[\<\>\/ ]//g;
+
+ # Finished one row of results. Outputting
+ newRow;
+ #outputData($testName, "LEFT");
+ print HTML "<th class=\"testName\"><a href=\"#".$loc."_".$testName."\">$testName</a></th>\n";
+ #outputData($iterCount);
+ #outputData($noopers[0], "RIGHT");
+ outputValue($noopers[0]);
+
+ if(!$printEvents) {
+ for $j ( 0 .. $#timedata ) {
+ my $perOperation = $timedata[$j]->divideByScalar($iterPerPass[$j]*$noopers[$j]); # time per operation
+ #debug("Time per operation: ".formatSeconds(4, $perOperation->getMean, $perOperation->getError)."\n");
+ outputDist($perOperation);
+ }
+ }
+ my $baseLinePO = $timedata[0]->divideByScalar($iterPerPass[0]*$noopers[0]);
+ for $j ( 1 .. $#timedata ) {
+ my $perOperation = $timedata[$j]->divideByScalar($iterPerPass[$j]*$noopers[$j]); # time per operation
+ my $ratio = $baseLinePO->subtract($perOperation);
+ $ratio = $ratio->divide($perOperation);
+ outputDist($ratio, "%");
+ }
+ if (@noevents) {
+ for $j ( 0 .. $#timedata ) {
+ #outputData($noevents[$j], "RIGHT");
+ outputValue($noevents[$j]);
+ }
+ for $j ( 0 .. $#timedata ) {
+ my $perEvent = $timedata[$j]->divideByScalar($iterPerPass[$j]*$noevents[$j]); # time per event
+ #debug("Time per operation: ".formatSeconds(4, $perEvent->getMean, $perEvent->getError)."\n");
+ outputDist($perEvent);
+ }
+ my $baseLinePO = $timedata[0]->divideByScalar($iterPerPass[0]*$noevents[0]);
+ for $j ( 1 .. $#timedata ) {
+ my $perOperation = $timedata[$j]->divideByScalar($iterPerPass[$j]*$noevents[$j]); # time per operation
+ my $ratio = $baseLinePO->subtract($perOperation);
+ $ratio = $ratio->divide($perOperation);
+ outputDist($ratio, "%");
+ }
+ }
+}
+
+
+1;
+
+#eof
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/perldriver/PerfFramework.pm b/Build/source/libs/icu/icu-4.6/test/perf/perldriver/PerfFramework.pm
new file mode 100644
index 00000000000..96ba82c0e72
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/perldriver/PerfFramework.pm
@@ -0,0 +1,391 @@
+#!/usr/local/bin/perl
+# ***********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines Corporation
+# * and others. All Rights Reserved.
+# ***********************************************************************
+
+use strict;
+
+#use Dataset;
+use Format;
+use Output;
+
+my $VERBOSE = 0;
+my $DEBUG = 1;
+my $start_l = ""; #formatting help
+my $end_l = "";
+my @testArgs; # different kinds of tests we want to do
+my $datadir = "data";
+my $extraArgs; # stuff that always gets passed to the test program
+
+
+my $iterCount = 0;
+my $NUMPASSES = 4;
+my $TIME = 2;
+my $ITERATIONS; #Added by Doug
+my $DATADIR;
+
+sub setupOptions {
+ my %options = %{shift @_};
+
+ if($options{"time"}) {
+ $TIME = $options{"time"};
+ }
+
+ if($options{"passes"}) {
+ $NUMPASSES = $options{"passes"};
+ }
+
+ if($options{"dataDir"}) {
+ $DATADIR = $options{"dataDir"};
+ }
+
+ # Added by Doug
+ if ($options{"iterations"}) {
+ $ITERATIONS = $options{"iterations"};
+ }
+}
+
+sub runTests {
+ my $options = shift;
+ my @programs;
+ my $tests = shift;
+ my %datafiles;
+ if($#_ >= 0) { # maybe no files/locales
+ my $datafiles = shift;
+ if($datafiles) {
+ %datafiles = %{$datafiles};
+ }
+ }
+ setupOutput($options);
+ setupOptions($options);
+
+ my($locale, $iter, $data, $program, $args, $variable);
+#
+# Outer loop runs through the locales to test
+#
+ if (%datafiles) {
+ foreach $locale (sort keys %datafiles ) {
+ foreach $data (@{ $datafiles{$locale} }) {
+ closeTable;
+ my $locdata = "";
+ if(!($locale eq "")) {
+ $locdata = "<b>Locale:</b> $locale<br>";
+ }
+ $locdata .= "<b>Datafile:</b> $data<br>";
+ startTest($locdata);
+
+ if($DATADIR) {
+ compareLoop ($tests, $locale, $DATADIR."/".$data);
+ } else {
+ compareLoop ($tests, $locale, $data);
+ }
+ }
+ }
+ } else {
+ compareLoop($tests);
+ }
+ closeOutput();
+}
+
+sub compareLoop {
+ my $tests = shift;
+ #my @tests = @{$tests};
+ my %tests = %{$tests};
+ my $locale = shift;
+ my $datafile = shift;
+ my $locAndData = "";
+ if($locale) {
+ $locAndData .= " -L $locale";
+ }
+ if($datafile) {
+ $locAndData .= " -f $datafile";
+ }
+
+ my $args;
+ my ($i, $j, $aref);
+ foreach $i ( sort keys %tests ) {
+ debug("Test: $i\n");
+ $aref = $tests{$i};
+ my @timedata;
+ my @iterPerPass;
+ my @noopers;
+ my @noevents;
+
+ my $program;
+ my @argsAndTest;
+ for $j ( 0 .. $#{$aref} ) {
+ # first we calibrate. Use time from somewhere
+ # first test is used for calibration
+ ($program, @argsAndTest) = split(/\ /, @{ $tests{$i} }[$j]);
+ #Modified by Doug
+ my $commandLine;
+ if ($ITERATIONS) {
+ $commandLine = "$program -i $ITERATIONS -p $NUMPASSES $locAndData @argsAndTest";
+ } else {
+ $commandLine = "$program -t $TIME -p $NUMPASSES $locAndData @argsAndTest";
+ }
+ #my $commandLine = "$program -i 5 -p $NUMPASSES $locAndData @argsAndTest";
+ my @res = measure1($commandLine);
+ store("$i, $program @argsAndTest", @res);
+
+ push(@iterPerPass, shift(@res));
+ push(@noopers, shift(@res));
+ my @data = @{ shift(@res) };
+ if($#res >= 0) {
+ push(@noevents, shift(@res));
+ }
+
+
+ shift(@data) if (@data > 1); # discard first run
+
+ #debug("data is @data\n");
+ my $ds = Dataset->new(@data);
+
+ push(@timedata, $ds);
+ }
+
+ outputRow($i, \@iterPerPass, \@noopers, \@timedata, \@noevents);
+ }
+
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass. If <0 then
+# (negative of) the number of seconds per pass.
+#
+# @return array of:
+# [0] iterations per pass
+# [1] events per iteration
+# [2..] ms reported for each pass, in order
+#
+sub measure1 {
+ # run passes
+ my @t = callProg(shift); #"$program $args $argsAndTest");
+ my @ms = ();
+ my @b; # scratch
+ for my $a (@t) {
+ # $a->[0]: method name, corresponds to $method
+ # $a->[1]: 'begin' data, == $iterCount
+ # $a->[2]: 'end' data, of the form <ms> <eventsPerIter>
+ # $a->[3...]: gc messages from JVM during pass
+ @b = split(/\s+/, $a->[2]);
+ #push(@ms, $b[0]);
+ push(@ms, shift(@b));
+ }
+ my $iterCount = shift(@b);
+ my $operationsPerIter = shift(@b);
+ my $eventsPerIter;
+ if($#b >= 0) {
+ $eventsPerIter = shift(@b);
+ }
+
+# out("Iterations per pass: $iterCount<BR>\n");
+# out("Events per iteration: $eventsPerIter<BR>\n");
+# debug("Iterations per pass: $iterCount<BR>\n");
+# if($eventsPerIter) {
+# debug("Events per iteration: $eventsPerIter<BR>\n");
+# }
+
+ my @ms_str = @ms;
+ $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+# out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+ debug("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+ if($eventsPerIter) {
+ ($iterCount, $operationsPerIter, \@ms, $eventsPerIter);
+ } else {
+ ($iterCount, $operationsPerIter, \@ms);
+ }
+}
+
+
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass. If <0 then
+# (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+# events per iteration, to give time per event
+#
+sub measure2 {
+ my @res = measure1(@_);
+ my $iterPerPass = shift(@res);
+ my $operationsPerIter = shift(@res);
+ my @data = @{ shift(@res) };
+ my $eventsPerIter = shift(@res);
+
+
+ shift(@data) if (@data > 1); # discard first run
+
+ my $ds = Dataset->new(@data);
+ #$ds->setScale(1.0e-3 / ($iterPerPass * $operationsPerIter));
+ ($ds, $iterPerPass, $operationsPerIter, $eventsPerIter);
+}
+
+
+#---------------------------------------------------------------------
+# Invoke program and capture results, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+# in seconds. If more than on pass is desired, pass in
+# a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results. Each result is an array REF
+# describing one pass. The array REF contains:
+# ->[0]: The method name as reported
+# ->[1]: The params on the '= <meth> begin ...' line
+# ->[2]: The params on the '= <meth> end ...' line
+# ->[3..]: GC messages from the JVM, if any
+#
+sub callProg {
+ my $cmd = shift;
+ #my $pat = shift;
+ #my $n = shift;
+
+ #my $cmd = "java -cp c:\\dev\\myicu4j\\classes $TESTCLASS $method $n $pat";
+ debug( "[$cmd]\n"); # for debugging
+ open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+ my @out;
+ while (<PIPE>) {
+ push(@out, $_);
+ }
+ close(PIPE) or die "Program failed: \"$cmd\"";
+
+ @out = grep(!/^\#/, @out); # filter out comments
+
+ #debug( "[", join("\n", @out), "]\n");
+
+ my @results;
+ my $method = '';
+ my $data = [];
+ foreach (@out) {
+ next unless (/\S/);
+
+ if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+ my ($m, $state, $d) = ($1, $2, $3);
+ #debug ("$_ => [[$m $state !!!$d!!! $data ]]\n");
+ if ($state eq 'begin') {
+ die "$method was begun but not finished" if ($method);
+ $method = $m;
+ push(@$data, $d);
+ push(@$data, ''); # placeholder for end data
+ } elsif ($state eq 'end') {
+ if ($m ne $method) {
+ die "$method end does not match: $_";
+ }
+ $data->[1] = $d; # insert end data at [1]
+ #debug( "#$method:", join(";",@$data), "\n");
+ unshift(@$data, $method); # add method to start
+ push(@results, $data);
+ $method = '';
+ $data = [];
+ } else {
+ die "Can't parse: $_";
+ }
+ }
+
+ elsif (/^\[/) {
+ if ($method) {
+ push(@$data, $_);
+ } else {
+ # ignore extraneous GC notices
+ }
+ }
+
+ else {
+ # die "Can't parse: $_";
+ }
+ }
+
+ die "$method was begun but not finished" if ($method);
+
+ @results;
+}
+
+sub debug {
+ my $message;
+ if($DEBUG != 0) {
+ foreach $message (@_) {
+ print STDERR "$message";
+ }
+ }
+}
+
+sub measure1Alan {
+ #Added here, was global
+ my $CALIBRATE = 2; # duration in seconds for initial calibration
+
+ my $method = shift;
+ my $pat = shift;
+ my $iterCount = shift; # actually might be -seconds/pass
+
+ out("<P>Measuring $method using $pat, ");
+ if ($iterCount > 0) {
+ out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+ } else {
+ out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+ }
+
+ # is $iterCount actually -seconds?
+ if ($iterCount < 0) {
+
+ # calibrate: estimate ms/iteration
+ print "Calibrating...";
+ my @t = callJava($method, $pat, -$CALIBRATE);
+ print "done.\n";
+
+ my @data = split(/\s+/, $t[0]->[2]);
+ my $timePerIter = 1.0e-3 * $data[0] / $data[2];
+
+ # determine iterations/pass
+ $iterCount = int(-$iterCount / $timePerIter + 0.5);
+
+ out("<P>Calibration pass ($CALIBRATE sec): ");
+ out("$data[0] ms, ");
+ out("$data[2] iterations = ");
+ out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+ }
+
+ # run passes
+ print "Measuring $iterCount iterations x $NUMPASSES passes...";
+ my @t = callJava($method, $pat, "$iterCount " x $NUMPASSES);
+ print "done.\n";
+ my @ms = ();
+ my @b; # scratch
+ for my $a (@t) {
+ # $a->[0]: method name, corresponds to $method
+ # $a->[1]: 'begin' data, == $iterCount
+ # $a->[2]: 'end' data, of the form <ms> <eventsPerIter>
+ # $a->[3...]: gc messages from JVM during pass
+ @b = split(/\s+/, $a->[2]);
+ push(@ms, $b[0]);
+ }
+ my $eventsPerIter = $b[1];
+
+ out("Iterations per pass: $iterCount<BR>\n");
+ out("Events per iteration: $eventsPerIter<BR>\n");
+
+ my @ms_str = @ms;
+ $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+ out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+ ($iterCount, $eventsPerIter, @ms);
+}
+
+
+1;
+
+#eof
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/Makefile.in
new file mode 100644
index 00000000000..bd03d38e579
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/strsrchperf
+## Copyright (c) 2008, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/strsrchperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = strsrchperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = strsrchperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/StrSrchPerf_r.pl b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/StrSrchPerf_r.pl
new file mode 100644
index 00000000000..ea7b082dcb8
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/StrSrchPerf_r.pl
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2008, International Business Machines
+# * Corporation and others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title" => "String search performance regression: ICU ("
+ . $ICUPreviousVersion . " and "
+ . $ICULatestVersion . ")",
+ "headers" => "ICU" . $ICUPreviousVersion . " ICU" . $ICULatestVersion,
+ "operationIs" => "code point",
+ "timePerOperationIs" => "Time per code point",
+ "passes" => "10",
+ "time" => "5",
+
+ #"outputType"=>"HTML",
+ "dataDir" => $UDHRDataPath,
+ "outputDir" => "../results"
+};
+
+# programs
+
+my $p1; # Previous
+my $p2; # Latest
+
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious . "/strsrchperf/$WindowsPlatform/Release/strsrchperf.exe -b";
+ $p2 = $ICUPathLatest . "/strsrchperf/$WindowsPlatform/Release/strsrchperf.exe -b";
+}
+else {
+ $p1 = $ICUPathPrevious . "/strsrchperf/strsrchperf -b";
+ $p2 = $ICUPathLatest . "/strsrchperf/strsrchperf -b";
+}
+
+my $dataFiles = {
+ "en" => ["udhr_eng.txt"],
+ "de" => ["udhr_deu_1996.txt"],
+ "fr" => ["udhr_fra.txt"],
+ "ru" => ["udhr_rus.txt"],
+ "th" => ["udhr_tha.txt"],
+ "ja" => ["udhr_jpn.txt"],
+ "zh" => ["udhr_cmn_hans.txt"],
+};
+
+my $tests = {
+ "ICU Forward Search", [ "$p1 Test_ICU_Forward_Search", "$p2 Test_ICU_Forward_Search" ],
+ "ICU Backward Search",[ "$p1 Test_ICU_Backward_Search", "$p2 Test_ICU_Backward_Search" ],
+};
+
+runTests( $options, $tests, $dataFiles );
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.cpp
new file mode 100644
index 00000000000..23d16d7de2a
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.cpp
@@ -0,0 +1,148 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (C) 2008-2009 IBM, Inc. All Rights Reserved.
+ *
+ ********************************************************************/
+/**
+ * This program tests string search performance.
+ * APIs tested:
+ * ICU4C
+ */
+
+#include "strsrchperf.h"
+
+StringSearchPerformanceTest::StringSearchPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status)
+:UPerfTest(argc,argv,status){
+ int32_t start, end;
+
+#ifdef TEST_BOYER_MOORE_SEARCH
+ bms = NULL;
+#else
+ srch = NULL;
+#endif
+
+ pttrn = NULL;
+ if(status== U_ILLEGAL_ARGUMENT_ERROR || line_mode){
+ fprintf(stderr,gUsageString, "strsrchperf");
+ return;
+ }
+ /* Get the Text */
+ src = getBuffer(srcLen, status);
+
+#if 0
+ /* Get a word to find. Do this by selecting a random word with a word breakiterator. */
+ UBreakIterator* brk = ubrk_open(UBRK_WORD, locale, src, srcLen, &status);
+ if(U_FAILURE(status)){
+ fprintf(stderr, "FAILED to create pattern for searching. Error: %s\n", u_errorName(status));
+ return;
+ }
+ start = ubrk_preceding(brk, 1000);
+ end = ubrk_following(brk, start);
+ pttrnLen = end - start;
+ UChar* temp = (UChar*)malloc(sizeof(UChar)*(pttrnLen));
+ for (int i = 0; i < pttrnLen; i++) {
+ temp[i] = src[start++];
+ }
+ pttrn = temp; /* store word in pttrn */
+ ubrk_close(brk);
+#else
+ /* The first line of the file contains the pattern */
+ start = 0;
+
+ for(end = start; ; end += 1) {
+ UChar ch = src[end];
+
+ if (ch == 0x000A || ch == 0x000D || ch == 0x2028) {
+ break;
+ }
+ }
+
+ pttrnLen = end - start;
+ UChar* temp = (UChar*)malloc(sizeof(UChar)*(pttrnLen));
+ for (int i = 0; i < pttrnLen; i++) {
+ temp[i] = src[start++];
+ }
+ pttrn = temp; /* store word in pttrn */
+#endif
+
+#ifdef TEST_BOYER_MOORE_SEARCH
+ UnicodeString patternString(pttrn, pttrnLen);
+ UCollator *coll = ucol_open(locale, &status);
+ CollData *data = CollData::open(coll, status);
+
+ targetString = new UnicodeString(src, srcLen);
+ bms = new BoyerMooreSearch(data, patternString, targetString, status);
+#else
+ /* Create the StringSearch object to be use in performance test. */
+ srch = usearch_open(pttrn, pttrnLen, src, srcLen, locale, NULL, &status);
+#endif
+
+ if(U_FAILURE(status)){
+ fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n", u_errorName(status));
+ return;
+ }
+
+}
+
+StringSearchPerformanceTest::~StringSearchPerformanceTest() {
+ CollData *data = bms->getData();
+ UCollator *coll = data->getCollator();
+
+ delete bms;
+ delete targetString;
+ CollData::close(data);
+ ucol_close(coll);
+
+ if (pttrn != NULL) {
+ free(pttrn);
+ }
+
+#ifndef TEST_BOYER_MOORE_SEARCH
+ if (srch != NULL) {
+ usearch_close(srch);
+ }
+#endif
+}
+
+UPerfFunction* StringSearchPerformanceTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char *par) {
+ switch (index) {
+ TESTCASE(0,Test_ICU_Forward_Search);
+ TESTCASE(1,Test_ICU_Backward_Search);
+
+ default:
+ name = "";
+ return NULL;
+ }
+ return NULL;
+}
+
+UPerfFunction* StringSearchPerformanceTest::Test_ICU_Forward_Search(){
+#ifdef TEST_BOYER_MOORE_SEARCH
+ StringSearchPerfFunction *func = new StringSearchPerfFunction(ICUForwardSearch, bms, src, srcLen, pttrn, pttrnLen);
+#else
+ StringSearchPerfFunction* func = new StringSearchPerfFunction(ICUForwardSearch, srch, src, srcLen, pttrn, pttrnLen);
+#endif
+ return func;
+}
+
+UPerfFunction* StringSearchPerformanceTest::Test_ICU_Backward_Search(){
+#ifdef TEST_BOYER_MOORE_SEARCH
+ StringSearchPerfFunction *func = new StringSearchPerfFunction(ICUBackwardSearch, bms, src, srcLen, pttrn, pttrnLen);
+#else
+ StringSearchPerfFunction* func = new StringSearchPerfFunction(ICUBackwardSearch, srch, src, srcLen, pttrn, pttrnLen);
+#endif
+ return func;
+}
+
+int main (int argc, const char* argv[]) {
+ UErrorCode status = U_ZERO_ERROR;
+ StringSearchPerformanceTest test(argc, argv, status);
+ if(U_FAILURE(status)){
+ return status;
+ }
+ if(test.run()==FALSE){
+ fprintf(stderr,"FAILED: Tests could not be run please check the arguments.\n");
+ return -1;
+ }
+ return 0;
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.h b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.h
new file mode 100644
index 00000000000..6f2281c5855
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.h
@@ -0,0 +1,137 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (C) 2008-2009 IBM, Inc. All Rights Reserved.
+ *
+ ********************************************************************/
+#ifndef _STRSRCHPERF_H
+#define _STRSRCHPERF_H
+
+#include "unicode/ubrk.h"
+#include "unicode/usearch.h"
+#include "unicode/colldata.h"
+#include "unicode/bmsearch.h"
+#include "unicode/uperf.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+#define TEST_BOYER_MOORE_SEARCH
+
+#ifdef TEST_BOYER_MOORE_SEARCH
+typedef void (*StrSrchFn) (BoyerMooreSearch * bms, const UChar *src, int32_t srcLen, const UChar *pttrn, int32_t pttrnLen, UErrorCode *status);
+#else
+typedef void (*StrSrchFn)(UStringSearch* srch, const UChar* src,int32_t srcLen, const UChar* pttrn, int32_t pttrnLen, UErrorCode* status);
+#endif
+
+class StringSearchPerfFunction : public UPerfFunction {
+private:
+ StrSrchFn fn;
+ const UChar* src;
+ int32_t srcLen;
+ const UChar* pttrn;
+ int32_t pttrnLen;
+#ifdef TEST_BOYER_MOORE_SEARCH
+ BoyerMooreSearch *bms;
+#else
+ UStringSearch* srch;
+#endif
+
+public:
+ virtual void call(UErrorCode* status) {
+#ifdef TEST_BOYER_MOORE_SEARCH
+ (*fn)(bms, src, srcLen, pttrn, pttrnLen, status);
+#else
+ (*fn)(srch, src, srcLen, pttrn, pttrnLen, status);
+#endif
+ }
+
+ virtual long getOperationsPerIteration() {
+#if 0
+ return (long)(srcLen/pttrnLen);
+#else
+ return (long) srcLen;
+#endif
+ }
+
+#ifdef TEST_BOYER_MOORE_SEARCH
+ StringSearchPerfFunction(StrSrchFn func, BoyerMooreSearch *search, const UChar *source, int32_t sourceLen, const UChar *pattern, int32_t patternLen) {
+ fn = func;
+ src = source;
+ srcLen = sourceLen;
+ pttrn = pattern;
+ pttrnLen = patternLen;
+ bms = search;
+ }
+#else
+ StringSearchPerfFunction(StrSrchFn func, UStringSearch* search, const UChar* source,int32_t sourceLen, const UChar* pattern, int32_t patternLen) {
+ fn = func;
+ src = source;
+ srcLen = sourceLen;
+ pttrn = pattern;
+ pttrnLen = patternLen;
+ srch = search;
+ }
+#endif
+};
+
+class StringSearchPerformanceTest : public UPerfTest {
+private:
+ const UChar* src;
+ int32_t srcLen;
+ UChar* pttrn;
+ int32_t pttrnLen;
+#ifdef TEST_BOYER_MOORE_SEARCH
+ UnicodeString *targetString;
+ BoyerMooreSearch *bms;
+#else
+ UStringSearch* srch;
+#endif
+
+public:
+ StringSearchPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
+ ~StringSearchPerformanceTest();
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL);
+
+ UPerfFunction* Test_ICU_Forward_Search();
+
+ UPerfFunction* Test_ICU_Backward_Search();
+};
+
+
+#ifdef TEST_BOYER_MOORE_SEARCH
+void ICUForwardSearch(BoyerMooreSearch *bms, const UChar *source, int32_t sourceLen, const UChar *pattern, int32_t patternLen, UErrorCode * /*status*/) {
+ int32_t offset = 0, start = -1, end = -1;
+
+ while (bms->search(offset, start, end)) {
+ offset = end;
+ }
+}
+
+void ICUBackwardSearch(BoyerMooreSearch *bms, const UChar *source, int32_t sourceLen, const UChar *pattern, int32_t patternLen, UErrorCode * /*status*/) {
+ int32_t offset = 0, start = -1, end = -1;
+
+ /* NOTE: No Boyer-Moore backward search yet... */
+ while (bms->search(offset, start, end)) {
+ offset = end;
+ }
+}
+#else
+void ICUForwardSearch(UStringSearch *srch, const UChar* source, int32_t sourceLen, const UChar* pattern, int32_t patternLen, UErrorCode* status) {
+ int32_t match;
+
+ match = usearch_first(srch, status);
+ while (match != USEARCH_DONE) {
+ match = usearch_next(srch, status);
+ }
+}
+
+void ICUBackwardSearch(UStringSearch *srch, const UChar* source, int32_t sourceLen, const UChar* pattern, int32_t patternLen, UErrorCode* status) {
+ int32_t match;
+
+ match = usearch_last(srch, status);
+ while (match != USEARCH_DONE) {
+ match = usearch_previous(srch, status);
+ }
+}
+#endif
+
+#endif /* _STRSRCHPERF_H */
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.vcxproj
new file mode 100644
index 00000000000..63b49ae0e53
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.vcxproj
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{241DED26-1635-45E6-9564-7742AC8043B5}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/strsrchperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/strsrchperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/strsrchperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/strsrchperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/strsrchperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/strsrchperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/strsrchperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/strsrchperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/strsrchperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Release/strsrchperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icuin.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/strsrchperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/strsrchperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/strsrchperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Release/strsrchperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icuin.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/strsrchperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/strsrchperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="strsrchperf.cpp">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="strsrchperf.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.vcxproj.filters
new file mode 100644
index 00000000000..e51b5505fe9
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/strsrchperf/strsrchperf.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{e93bed94-f6ed-440a-89e4-1f6cd36a66ee}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{1290a308-d398-4dce-bb72-bd78364b6b89}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{8ce52384-19ce-4b5d-acf8-10b9672b324f}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="strsrchperf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="strsrchperf.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/Makefile.in
new file mode 100644
index 00000000000..e255c38940e
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/ubrkperf
+## Copyright (c) 2001-2006, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/ubrkperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = ubrkperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = ubrkperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/UBrkPerf.pl b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/UBrkPerf.pl
new file mode 100755
index 00000000000..0fdf71b2882
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/UBrkPerf.pl
@@ -0,0 +1,94 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"BreakIterator performance regression (ICU ".$ICUPrevious2Version.", ".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPrevious2Version." ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"code point",
+ "eventIs"=>"break",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>$CollationDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $m1 = "-- -m char";
+my $m2 = "-- -m word";
+my $m3 = "-- -m line";
+my $m4 = "-- -m sentence";
+
+my $m;
+
+if(@_ >= 0) {
+ $m = "-- -m ".shift;
+} else {
+ $m = $m1;
+}
+
+my $p1; # Before Previous
+my $p2; # Previous
+my $p3; # Latest
+
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious2."/ubrkperf/$WindowsPlatform/Release/ubrkperf.exe";
+ $p2 = $ICUPathPrevious."/ubrkperf/$WindowsPlatform/Release/ubrkperf.exe";
+ $p3 = $ICUPathLatest."/ubrkperf/$WindowsPlatform/Release/ubrkperf.exe";
+} else {
+ $p1 = $ICUPathPrevious2."/ubrkperf/ubrkperf";
+ $p2 = $ICUPathPrevious."/ubrkperf/ubrkperf";
+ $p3 = $ICUPathLatest."/ubrkperf/ubrkperf";
+}
+
+my $dataFiles = {
+"en", ["thesis.txt",
+ "2drvb10.txt",
+ "ulyss10.txt",
+ "nvsbl10.txt",
+ "vfear11a.txt",
+ "TestNames_Asian.txt",
+ "TestNames_Chinese.txt",
+ "TestNames_Japanese.txt",
+ "TestNames_Japanese_h.txt",
+ "TestNames_Japanese_k.txt",
+ "TestNames_Korean.txt",
+ "TestNames_Latin.txt",
+ "TestNames_SerbianSH.txt",
+ "TestNames_SerbianSR.txt",
+ "TestNames_Thai.txt",
+ "Testnames_Russian.txt",
+],
+"th", ["TestNames_Thai.txt", "th18057.txt"]
+};
+
+
+my $tests = {
+"TestForwardChar", ["$p1 $m1 TestICUForward", "$p2 $m1 TestICUForward", "$p3 $m1 TestICUForward"],
+"TestForwardWord", ["$p1 $m2 TestICUForward", "$p2 $m2 TestICUForward", "$p3 $m2 TestICUForward"],
+"TestForwardLine", ["$p1 $m3 TestICUForward", "$p2 $m3 TestICUForward", "$p3 $m3 TestICUForward"],
+"TestForwardSentence", ["$p1 $m4 TestICUForward", "$p2 $m4 TestICUForward", "$p3 $m4 TestICUForward"],
+
+"TestIsBoundChar", ["$p1 $m1 TestICUIsBound", "$p2 $m1 TestICUIsBound", "$p3 $m1 TestICUIsBound"],
+"TestIsBoundWord", ["$p1 $m2 TestICUIsBound", "$p2 $m2 TestICUIsBound", "$p3 $m2 TestICUIsBound"],
+"TestIsBoundLine", ["$p1 $m3 TestICUIsBound", "$p2 $m3 TestICUIsBound", "$p3 $m3 TestICUIsBound"],
+"TestIsBoundSentence", ["$p1 $m4 TestICUIsBound", "$p2 $m4 TestICUIsBound", "$p3 $m4 TestICUIsBound"],
+
+};
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/UBrkPerf_r.pl b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/UBrkPerf_r.pl
new file mode 100644
index 00000000000..6edffb3097d
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/UBrkPerf_r.pl
@@ -0,0 +1,86 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * Copyright (c) 2002-2008, International Business Machines
+# * Corporation and others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"BreakIterator performance regression: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"code point",
+ "eventIs"=>"break",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>$CollationDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $m1 = "-- -m char";
+my $m2 = "-- -m word";
+my $m3 = "-- -m line";
+my $m4 = "-- -m sentence";
+
+my $m;
+
+if(@_ >= 0) {
+ $m = "-- -m ".shift;
+} else {
+ $m = $m1;
+}
+
+my $p1; # Previous
+my $p2; # Latest
+
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious."/ubrkperf/$WindowsPlatform/Release/ubrkperf.exe";
+ $p2 = $ICUPathLatest."/ubrkperf/$WindowsPlatform/Release/ubrkperf.exe";
+} else {
+ $p1 = $ICUPathPrevious."/ubrkperf/ubrkperf";
+ $p2 = $ICUPathLatest."/ubrkperf/ubrkperf";
+}
+
+my $dataFiles = {
+"en", [
+ "TestNames_Asian.txt",
+ "TestNames_Chinese.txt",
+ "TestNames_Japanese.txt",
+ "TestNames_Japanese_h.txt",
+ "TestNames_Japanese_k.txt",
+ "TestNames_Korean.txt",
+ "TestNames_Latin.txt",
+ "TestNames_SerbianSH.txt",
+ "TestNames_SerbianSR.txt",
+ "TestNames_Thai.txt",
+ "Testnames_Russian.txt",
+],
+"th", ["TestNames_Thai.txt", "th18057.txt"]
+};
+
+
+my $tests = {
+"TestForwardChar", ["$p1 $m1 TestICUForward", "$p2 $m1 TestICUForward"],
+"TestForwardWord", ["$p1 $m2 TestICUForward", "$p2 $m2 TestICUForward"],
+"TestForwardLine", ["$p1 $m3 TestICUForward", "$p2 $m3 TestICUForward"],
+"TestForwardSentence", ["$p1 $m4 TestICUForward", "$p2 $m4 TestICUForward"],
+
+"TestIsBoundChar", ["$p1 $m1 TestICUIsBound", "$p2 $m1 TestICUIsBound"],
+"TestIsBoundWord", ["$p1 $m2 TestICUIsBound", "$p2 $m2 TestICUIsBound"],
+"TestIsBoundLine", ["$p1 $m3 TestICUIsBound", "$p2 $m3 TestICUIsBound"],
+"TestIsBoundSentence", ["$p1 $m4 TestICUIsBound", "$p2 $m4 TestICUIsBound"],
+
+};
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.cpp
new file mode 100644
index 00000000000..9a090ee5fac
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.cpp
@@ -0,0 +1,251 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (C) 2001-2008 International Business Machines Corporation
+ * and others. All Rights Reserved.
+ *
+ ********************************************************************/
+/********************************************************************************
+*
+* File ubrkperf.cpp
+*
+* Modification History:
+* Name Description
+* Vladimir Weinstein First Version, based on collperf
+*
+*********************************************************************************
+*/
+
+#include "ubrkperf.h"
+#include "uoptions.h"
+#include <stdio.h>
+
+
+#if 0
+#ifdef U_DARWIN
+#include <ApplicationServices/ApplicationServices.h>
+enum{
+ kUCTextBreakAllMask = (kUCTextBreakClusterMask | kUCTextBreakWordMask | kUCTextBreakLineMask)
+ };
+UCTextBreakType breakTypes[4] = {kUCTextBreakCharMask, kUCTextBreakClusterMask, kUCTextBreakWordMask, kUCTextBreakLineMask};
+TextBreakLocatorRef breakRef;
+UCTextBreakType macBreakType;
+
+void createMACBrkIt() {
+ OSStatus status = noErr;
+ LocaleRef lref;
+ status = LocaleRefFromLocaleString(opt_locale, &lref);
+ status = UCCreateTextBreakLocator(lref, 0, kUCTextBreakAllMask, (TextBreakLocatorRef*)&breakRef);
+ if(opt_char == TRUE) {
+ macBreakType = kUCTextBreakClusterMask;
+ } else if(opt_word == TRUE) {
+ macBreakType = kUCTextBreakWordMask;
+ } else if(opt_line == TRUE) {
+ macBreakType = kUCTextBreakLineMask;
+ } else if(opt_sentence == TRUE) {
+ // error
+ // brkit = BreakIterator::createSentenceInstance(opt_locale, status);
+ } else {
+ // default is character iterator
+ macBreakType = kUCTextBreakClusterMask;
+ }
+}
+#endif
+
+
+void doForwardTest() {
+ if (opt_terse == FALSE) {
+ printf("Doing the forward test\n");
+ }
+ int32_t noBreaks = 0;
+ int32_t i = 0;
+ unsigned long startTime = timeGetTime();
+ unsigned long elapsedTime = 0;
+ if(opt_icu) {
+ createICUBrkIt();
+ brkit->setText(text);
+ brkit->first();
+ if (opt_terse == FALSE) {
+ printf("Warmup\n");
+ }
+ while(brkit->next() != BreakIterator::DONE) {
+ noBreaks++;
+ }
+
+ if (opt_terse == FALSE) {
+ printf("Measure\n");
+ }
+ startTime = timeGetTime();
+ for(i = 0; i < opt_loopCount; i++) {
+ brkit->first();
+ while(brkit->next() != BreakIterator::DONE) {
+ }
+ }
+
+ elapsedTime = timeGetTime()-startTime;
+ } else if(opt_mac) {
+#ifdef U_DARWIN
+ createMACBrkIt();
+ UniChar* filePtr = text;
+ OSStatus status = noErr;
+ UniCharCount startOffset = 0, breakOffset = 0, numUniChars = textSize;
+ startOffset = 0;
+ //printf("\t---Search forward--\n");
+
+ while (startOffset < numUniChars)
+ {
+ status = UCFindTextBreak(breakRef, macBreakType, kUCTextBreakLeadingEdgeMask, filePtr, numUniChars,
+ startOffset, &breakOffset);
+ //require_action(status == noErr, EXIT, printf( "**UCFindTextBreak failed: startOffset %d, status %d\n", (int)startOffset, (int)status));
+ //require_action((breakOffset <= numUniChars),EXIT, printf("**UCFindTextBreak breakOffset too big: startOffset %d, breakOffset %d\n", (int)startOffset, (int)breakOffset));
+
+ // Output break
+ //printf("\t%d\n", (int)breakOffset);
+
+ // Increment counters
+ noBreaks++;
+ startOffset = breakOffset;
+ }
+ startTime = timeGetTime();
+ for(i = 0; i < opt_loopCount; i++) {
+ startOffset = 0;
+
+ while (startOffset < numUniChars)
+ {
+ status = UCFindTextBreak(breakRef, macBreakType, kUCTextBreakLeadingEdgeMask, filePtr, numUniChars,
+ startOffset, &breakOffset);
+ // Increment counters
+ startOffset = breakOffset;
+ }
+ }
+ elapsedTime = timeGetTime()-startTime;
+ UCDisposeTextBreakLocator(&breakRef);
+#endif
+
+
+ }
+
+
+ if (opt_terse == FALSE) {
+ int32_t loopTime = (int)(float(1000) * ((float)elapsedTime/(float)opt_loopCount));
+ int32_t timePerCU = (int)(float(1000) * ((float)loopTime/(float)textSize));
+ int32_t timePerBreak = (int)(float(1000) * ((float)loopTime/(float)noBreaks));
+ printf("forward break iteration average loop time %d\n", loopTime);
+ printf("number of code units %d average time per code unit %d\n", textSize, timePerCU);
+ printf("number of breaks %d average time per break %d\n", noBreaks, timePerBreak);
+ } else {
+ printf("time=%d\nevents=%d\nsize=%d\n", elapsedTime, noBreaks, textSize);
+ }
+
+
+}
+
+
+
+
+#endif
+
+UPerfFunction* BreakIteratorPerformanceTest::TestICUForward()
+{
+ return new ICUForward(locale, m_mode_, m_file_, m_fileLen_);
+}
+
+UPerfFunction* BreakIteratorPerformanceTest::TestICUIsBound()
+{
+ return new ICUIsBound(locale, m_mode_, m_file_, m_fileLen_);
+}
+
+UPerfFunction* BreakIteratorPerformanceTest::TestDarwinForward()
+{
+ return NULL;
+}
+
+UPerfFunction* BreakIteratorPerformanceTest::TestDarwinIsBound()
+{
+ return NULL;
+}
+
+UPerfFunction* BreakIteratorPerformanceTest::runIndexedTest(int32_t index, UBool exec,
+ const char *&name,
+ char* par)
+{
+ switch (index) {
+ TESTCASE(0, TestICUForward);
+ TESTCASE(1, TestICUIsBound);
+ TESTCASE(2, TestDarwinForward);
+ TESTCASE(3, TestDarwinIsBound);
+ default:
+ name = "";
+ return NULL;
+ }
+ return NULL;
+}
+
+UOption options[]={
+ UOPTION_DEF( "mode", 'm', UOPT_REQUIRES_ARG)
+ };
+
+
+BreakIteratorPerformanceTest::BreakIteratorPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status)
+: UPerfTest(argc,argv,status),
+m_mode_(NULL),
+m_file_(NULL),
+m_fileLen_(0)
+{
+
+ _remainingArgc = u_parseArgs(_remainingArgc, (char**)argv, (int32_t)(sizeof(options)/sizeof(options[0])), options);
+
+
+ if(options[0].doesOccur) {
+ m_mode_ = options[0].value;
+ switch(options[0].value[0]) {
+ case 'w' :
+ case 'c' :
+ case 's' :
+ case 'l' :
+ break;
+ default:
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ break;
+ }
+ } else {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+
+ m_file_ = getBuffer(m_fileLen_, status);
+
+ if(status== U_ILLEGAL_ARGUMENT_ERROR){
+ fprintf(stderr, gUsageString, "ubrkperf");
+ fprintf(stderr, "\t-m or --mode Required mode for breakiterator: char, word, line or sentence\n");
+
+ return;
+ }
+
+ if(U_FAILURE(status)){
+ fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n", u_errorName(status));
+ return;
+ }
+}
+
+BreakIteratorPerformanceTest::~BreakIteratorPerformanceTest()
+{
+}
+
+
+//----------------------------------------------------------------------------------------
+//
+// Main -- process command line, read in and pre-process the test file,
+// call other functions to do the actual tests.
+//
+//----------------------------------------------------------------------------------------
+int main(int argc, const char** argv) {
+ UErrorCode status = U_ZERO_ERROR;
+ BreakIteratorPerformanceTest test(argc, argv, status);
+ if(U_FAILURE(status)){
+ return status;
+ }
+ if(test.run()==FALSE){
+ fprintf(stderr,"FAILED: Tests could not be run please check the arguments.\n");
+ return -1;
+ }
+ return 0;
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.dsp b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.dsp
new file mode 100644
index 00000000000..d3417e55961
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.dsp
@@ -0,0 +1,172 @@
+# Microsoft Developer Studio Project File - Name="ubrkperf" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=UBRKPERF - WIN32 RELEASE
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ubrkperf.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ubrkperf.mak" CFG="UBRKPERF - WIN32 RELEASE"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ubrkperf - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ubrkperf - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "ubrkperf - Win64 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ubrkperf - Win64 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "ubrkperf - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /Ob2 /I "..\..\..\..\include" /I "..\..\..\tools\toolutil" /I "..\..\..\common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 icuuc.lib icuin.lib ctestfw.lib icutu.lib kernel32.lib user32.lib advapi32.lib shell32.lib winmm.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\bin\ubrkperf24.exe" /libpath:"..\..\..\..\lib\\"
+# Begin Custom Build
+InputPath=\dev\0_icu\bin\ubrkperf24.exe
+SOURCE="$(InputPath)"
+
+"c:\dev\0_icu\bin\ubrkperf22.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) c:\dev\0_icu\bin\ubrkperf22.exe
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "ubrkperf - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# ADD CPP /nologo /G6 /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\include" /I "..\..\..\tools\toolutil" /I "..\..\..\common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 icuucd.lib icuind.lib icutud.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\lib\\"
+
+!ELSEIF "$(CFG)" == "ubrkperf - Win64 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /Op /I "..\..\..\..\include" /I "..\..\..\tools\toolutil" /I "..\..\..\common" /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /Wp64 /Zm600 /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IX86 /machine:IA64
+# ADD LINK32 icuuc.lib icuin.lib ctestfw.lib icutu.lib kernel32.lib user32.lib advapi32.lib shell32.lib winmm.lib /nologo /subsystem:console /machine:IX86 /libpath:"..\..\..\..\lib\\" /machine:IA64
+
+!ELSEIF "$(CFG)" == "ubrkperf - Win64 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /Op /I "..\..\..\..\include" /I "..\..\..\tools\toolutil" /I "..\..\..\common" /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FR /FD /GZ /Wp64 /Zm600 /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /machine:IA64
+# ADD LINK32 icuucd.lib icuind.lib icutud.lib winmm.lib /nologo /subsystem:console /incremental:no /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\..\lib\\" /machine:IA64
+
+!ENDIF
+
+# Begin Target
+
+# Name "ubrkperf - Win32 Release"
+# Name "ubrkperf - Win32 Debug"
+# Name "ubrkperf - Win64 Release"
+# Name "ubrkperf - Win64 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\ubrkperf.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\ubrkperf.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.h b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.h
new file mode 100644
index 00000000000..4c55a73976c
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.h
@@ -0,0 +1,137 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2005, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+**********************************************************************
+*/
+#ifndef _UBRKPERF_H
+#define _UBRKPERF_H
+
+#include "unicode/uperf.h"
+
+#include <unicode/brkiter.h>
+
+class ICUBreakFunction : public UPerfFunction {
+protected:
+ BreakIterator *m_brkIt_;
+ const UChar *m_file_;
+ int32_t m_fileLen_;
+ int32_t m_noBreaks_;
+ UErrorCode m_status_;
+public:
+ ICUBreakFunction(const char *locale, const char *mode, const UChar *file, int32_t file_len) :
+ m_brkIt_(NULL),
+ m_file_(file),
+ m_fileLen_(file_len),
+ m_noBreaks_(-1),
+ m_status_(U_ZERO_ERROR)
+ {
+ switch(mode[0]) {
+ case 'c' :
+ m_brkIt_ = BreakIterator::createCharacterInstance(locale, m_status_);
+ break;
+ case 'w' :
+ m_brkIt_ = BreakIterator::createWordInstance(locale, m_status_);
+ break;
+ case 'l' :
+ m_brkIt_ = BreakIterator::createLineInstance(locale, m_status_);
+ break;
+ case 's' :
+ m_brkIt_ = BreakIterator::createSentenceInstance(locale, m_status_);
+ break;
+ default:
+ // should not happen as we already check for this in the caller
+ m_status_ = U_ILLEGAL_ARGUMENT_ERROR;
+ break;
+ }
+ }
+
+ ~ICUBreakFunction() { delete m_brkIt_; }
+ virtual void call(UErrorCode *status) = 0;
+ virtual long getOperationsPerIteration() { return m_fileLen_; }
+ virtual long getEventsPerIteration() { return m_noBreaks_; }
+ virtual UErrorCode getStatus() { return m_status_; }
+};
+
+class ICUIsBound : public ICUBreakFunction {
+public:
+ ICUIsBound(const char *locale, const char *mode, const UChar *file, int32_t file_len) :
+ ICUBreakFunction(locale, mode, file, file_len)
+ {
+ m_noBreaks_ = 0;
+ m_brkIt_->setText(UnicodeString(m_file_, m_fileLen_));
+ m_brkIt_->first();
+ int32_t j = 0;
+ for(j = 0; j < m_fileLen_; j++) {
+ if(m_brkIt_->isBoundary(j)) {
+ m_noBreaks_++;
+ }
+ }
+ }
+ virtual void call(UErrorCode *status)
+ {
+ m_noBreaks_ = 0;
+ int32_t j = 0;
+ for(j = 0; j < m_fileLen_; j++) {
+ if(m_brkIt_->isBoundary(j)) {
+ m_noBreaks_++;
+ }
+ }
+ }
+};
+
+class ICUForward : public ICUBreakFunction {
+public:
+ ICUForward(const char *locale, const char *mode, const UChar *file, int32_t file_len) :
+ ICUBreakFunction(locale, mode, file, file_len)
+ {
+ m_noBreaks_ = 0;
+ m_brkIt_->setText(UnicodeString(m_file_, m_fileLen_));
+ m_brkIt_->first();
+ while(m_brkIt_->next() != BreakIterator::DONE) {
+ m_noBreaks_++;
+ }
+ }
+ virtual void call(UErrorCode *status)
+ {
+ m_noBreaks_ = 0;
+ m_brkIt_->first();
+ while(m_brkIt_->next() != BreakIterator::DONE) {
+ m_noBreaks_++;
+ }
+ }
+};
+
+class DarwinBreakFunction : public UPerfFunction {
+#ifdef U_DARWIN
+public:
+ virtual void call(UErrorCode *status) {};
+#else
+public:
+ virtual void call(UErrorCode *status) {};
+#endif
+};
+
+class BreakIteratorPerformanceTest : public UPerfTest {
+private:
+ const char* m_mode_;
+ const UChar* m_file_;
+ int32_t m_fileLen_;
+
+public:
+ BreakIteratorPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status);
+ ~BreakIteratorPerformanceTest();
+
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
+ const char* &name, char* par = NULL);
+
+ UPerfFunction* TestICUForward();
+ UPerfFunction* TestICUIsBound();
+
+ UPerfFunction* TestDarwinForward();
+ UPerfFunction* TestDarwinIsBound();
+
+};
+
+#endif // UBRKPERF_H
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.vcxproj
new file mode 100644
index 00000000000..1bf7fe6438f
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.vcxproj
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{7E280294-49BD-43D1-9903-CF29648D88CA}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/ubrkperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/ubrkperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/ubrkperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/ubrkperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/ubrkperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x86\Release/ubrkperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/ubrkperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/ubrkperf24.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/ubrkperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/ubrkperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/ubrkperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/ubrkperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/ubrkperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x64\Release/ubrkperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>..\..\..\..\bin64\ubrkperf24.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/ubrkperf24.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="ubrkperf.cpp">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="ubrkperf.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.vcxproj.filters
new file mode 100644
index 00000000000..a340f3b1c0b
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{1f501253-3925-4e08-8d2b-135156a08c33}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{a52d344e-b0ff-4887-9cf8-049bce2805b6}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{ee1c75fb-ce68-41f4-ae6c-588fbef8008e}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="ubrkperf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="ubrkperf.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf20.dsp b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf20.dsp
new file mode 100644
index 00000000000..197aed77abe
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperf20.dsp
@@ -0,0 +1,172 @@
+# Microsoft Developer Studio Project File - Name="ubrkperf20" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=ubrkperf20 - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ubrkperf20.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ubrkperf20.mak" CFG="ubrkperf20 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ubrkperf20 - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ubrkperf20 - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "ubrkperf20 - Win64 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ubrkperf20 - Win64 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "ubrkperf20 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /Ob2 /I "c:\src\oldICU\icu-2-0\include" /I "..\..\..\tools\toolutil" /I "c:\src\oldICU\icu-2-0\source\common" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 c:\src\oldICU\icu-2-0\lib\icuuc.lib c:\src\oldICU\icu-2-0\lib\icuin.lib ..\..\..\..\lib\icutu.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\bin\ubrkperf20.exe" /libpath:"..\..\..\..\lib\\"
+# Begin Custom Build
+InputPath=\dev\0_icu\bin\ubrkperf20.exe
+SOURCE="$(InputPath)"
+
+"c:\dev\0_icu\bin\ubrkperf20.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) c:\dev\0_icu\bin\ubrkperf20.exe
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "ubrkperf20 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# ADD CPP /nologo /G6 /MDd /W3 /Gm /GX /ZI /Od /I "c:\src\oldICU\icu-2-0\include" /I "..\..\..\tools\toolutil" /I "c:\src\oldICU\icu-2-0\source\common" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 c:\src\oldICU\icu-2-0\lib\icuucd.lib c:\src\oldICU\icu-2-0\lib\icuind.lib ..\..\..\..\lib\icutud.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ELSEIF "$(CFG)" == "ubrkperf20 - Win64 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /Op /I "c:\src\oldICU\icu-2-0\include" /I "..\..\..\tools\toolutil" /I "c:\src\oldICU\icu-2-0\source\common" /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /Wp64 /Zm600 /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IX86 /machine:IA64
+# ADD LINK32 c:\src\oldICU\icu-2-0\lib\icuuc.lib c:\src\oldICU\icu-2-0\lib\icuin.lib ..\..\..\..\lib\icutu.lib /nologo /subsystem:console /machine:IX86 /machine:IA64
+
+!ELSEIF "$(CFG)" == "ubrkperf20 - Win64 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /Op /I "c:\src\oldICU\icu-2-0\include" /I "..\..\..\tools\toolutil" /I "c:\src\oldICU\icu-2-0\source\common" /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FR /FD /GZ /Wp64 /Zm600 /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /machine:IA64
+# ADD LINK32 c:\src\oldICU\icu-2-0\lib\icuucd.lib c:\src\oldICU\icu-2-0\lib\icuind.lib ..\..\..\..\lib\icutud.lib /nologo /subsystem:console /incremental:no /debug /machine:IX86 /pdbtype:sept /machine:IA64
+
+!ENDIF
+
+# Begin Target
+
+# Name "ubrkperf20 - Win32 Release"
+# Name "ubrkperf20 - Win32 Debug"
+# Name "ubrkperf20 - Win64 Release"
+# Name "ubrkperf20 - Win64 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\dev\0_icu\source\test\perf\ubrkperf\ubrkperf.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\ubrkperf.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperfold.cpp b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperfold.cpp
new file mode 100644
index 00000000000..4ab8190f5ba
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperfold.cpp
@@ -0,0 +1,771 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (C) 2001-2005 IBM, Inc. All Rights Reserved.
+ *
+ ********************************************************************/
+/********************************************************************************
+*
+* File ubrkperf.cpp
+*
+* Modification History:
+* Name Description
+* Vladimir Weinstein First Version, based on collperf
+*
+*********************************************************************************
+*/
+
+//
+// This program tests break iterator performance
+// Currently we test only ICU APIs with the future possibility of testing *nix & win32 APIs
+// (if any)
+// A text file is required as input. It must be in utf-8 or utf-16 format,
+// and include a byte order mark. Either LE or BE format is OK.
+//
+
+const char gUsageString[] =
+ "usage: ubrkperf options...\n"
+ "-help Display this message.\n"
+ "-file file_name utf-16/utf-8 format file.\n"
+ "-locale name ICU locale to use. Default is en_US\n"
+ "-langid 0x1234 Windows Language ID number. Default to value for -locale option\n"
+ " see http://msdn.microsoft.com/library/psdk/winbase/nls_8xo3.htm\n"
+ "-win Run test using Windows native services. (currently not working) (ICU is default)\n"
+ "-unix Run test using Unix word breaking services. (currently not working) \n"
+ "-mac Run test using MacOSX word breaking services.\n"
+ "-uselen Use API with string lengths. Default is null-terminated strings\n"
+ "-char Use character break iterator\n"
+ "-word Use word break iterator\n"
+ "-line Use line break iterator\n"
+ "-sentence Use sentence break iterator\n"
+ "-loop nnnn Loopcount for test. Adjust for reasonable total running time.\n"
+ "-iloop n Inner Loop Count. Default = 1. Number of calls to function\n"
+ " under test at each call point. For measuring test overhead.\n"
+ "-terse Terse numbers-only output. Intended for use by scripts.\n"
+ "-dump Display stuff.\n"
+ "-capi Use C APIs instead of C++ APIs (currently not working)\n"
+ "-next Do the next test\n"
+ "-isBound Do the isBound test\n"
+ ;
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include <locale.h>
+#include <errno.h>
+#include <sys/stat.h>
+
+#include <unicode/utypes.h>
+#include <unicode/ucol.h>
+#include <unicode/ucoleitr.h>
+#include <unicode/uloc.h>
+#include <unicode/ustring.h>
+#include <unicode/ures.h>
+#include <unicode/uchar.h>
+#include <unicode/ucnv.h>
+#include <unicode/utf8.h>
+
+#include <unicode/brkiter.h>
+
+
+#ifdef U_WINDOWS
+#include <windows.h>
+#else
+//
+// Stubs for Windows API functions when building on UNIXes.
+//
+#include <sys/time.h>
+unsigned long timeGetTime() {
+ struct timeval t;
+ gettimeofday(&t, 0);
+ unsigned long val = t.tv_sec * 1000; // Let it overflow. Who cares.
+ val += t.tv_usec / 1000;
+ return val;
+};
+#define MAKELCID(a,b) 0
+#endif
+
+
+//
+// Command line option variables
+// These global variables are set according to the options specified
+// on the command line by the user.
+char * opt_fName = 0;
+char * opt_locale = "en_US";
+int opt_langid = 0; // Defaults to value corresponding to opt_locale.
+char * opt_rules = 0;
+UBool opt_help = FALSE;
+int opt_time = 0;
+int opt_loopCount = 0;
+int opt_passesCount= 1;
+UBool opt_terse = FALSE;
+UBool opt_icu = TRUE;
+UBool opt_win = FALSE; // Run with Windows native functions.
+UBool opt_unix = FALSE; // Run with UNIX strcoll, strxfrm functions.
+UBool opt_mac = FALSE; // Run with MacOSX word break services.
+UBool opt_uselen = FALSE;
+UBool opt_dump = FALSE;
+UBool opt_char = FALSE;
+UBool opt_word = FALSE;
+UBool opt_line = FALSE;
+UBool opt_sentence = FALSE;
+UBool opt_capi = FALSE;
+
+UBool opt_next = FALSE;
+UBool opt_isBound = FALSE;
+
+
+
+//
+// Definitions for the command line options
+//
+struct OptSpec {
+ const char *name;
+ enum {FLAG, NUM, STRING} type;
+ void *pVar;
+};
+
+OptSpec opts[] = {
+ {"-file", OptSpec::STRING, &opt_fName},
+ {"-locale", OptSpec::STRING, &opt_locale},
+ {"-langid", OptSpec::NUM, &opt_langid},
+ {"-win", OptSpec::FLAG, &opt_win},
+ {"-unix", OptSpec::FLAG, &opt_unix},
+ {"-mac", OptSpec::FLAG, &opt_mac},
+ {"-uselen", OptSpec::FLAG, &opt_uselen},
+ {"-loop", OptSpec::NUM, &opt_loopCount},
+ {"-time", OptSpec::NUM, &opt_time},
+ {"-passes", OptSpec::NUM, &opt_passesCount},
+ {"-char", OptSpec::FLAG, &opt_char},
+ {"-word", OptSpec::FLAG, &opt_word},
+ {"-line", OptSpec::FLAG, &opt_line},
+ {"-sentence", OptSpec::FLAG, &opt_sentence},
+ {"-terse", OptSpec::FLAG, &opt_terse},
+ {"-dump", OptSpec::FLAG, &opt_dump},
+ {"-capi", OptSpec::FLAG, &opt_capi},
+ {"-next", OptSpec::FLAG, &opt_next},
+ {"-isBound", OptSpec::FLAG, &opt_isBound},
+ {"-help", OptSpec::FLAG, &opt_help},
+ {"-?", OptSpec::FLAG, &opt_help},
+ {0, OptSpec::FLAG, 0}
+};
+
+
+//---------------------------------------------------------------------------
+//
+// Global variables pointing to and describing the test file
+//
+//---------------------------------------------------------------------------
+
+//DWORD gWinLCID;
+BreakIterator *brkit = NULL;
+UChar *text = NULL;
+int32_t textSize = 0;
+
+
+
+#ifdef U_DARWIN
+#include <ApplicationServices/ApplicationServices.h>
+enum{
+ kUCTextBreakAllMask = (kUCTextBreakClusterMask | kUCTextBreakWordMask | kUCTextBreakLineMask)
+ };
+UCTextBreakType breakTypes[4] = {kUCTextBreakCharMask, kUCTextBreakClusterMask, kUCTextBreakWordMask, kUCTextBreakLineMask};
+TextBreakLocatorRef breakRef;
+UCTextBreakType macBreakType;
+
+void createMACBrkIt() {
+ OSStatus status = noErr;
+ LocaleRef lref;
+ status = LocaleRefFromLocaleString(opt_locale, &lref);
+ status = UCCreateTextBreakLocator(lref, 0, kUCTextBreakAllMask, (TextBreakLocatorRef*)&breakRef);
+ if(opt_char == TRUE) {
+ macBreakType = kUCTextBreakClusterMask;
+ } else if(opt_word == TRUE) {
+ macBreakType = kUCTextBreakWordMask;
+ } else if(opt_line == TRUE) {
+ macBreakType = kUCTextBreakLineMask;
+ } else if(opt_sentence == TRUE) {
+ // error
+ // brkit = BreakIterator::createSentenceInstance(opt_locale, status);
+ } else {
+ // default is character iterator
+ macBreakType = kUCTextBreakClusterMask;
+ }
+}
+#endif
+
+void createICUBrkIt() {
+ //
+ // Set up an ICU break iterator
+ //
+ UErrorCode status = U_ZERO_ERROR;
+ if(opt_char == TRUE) {
+ brkit = BreakIterator::createCharacterInstance(opt_locale, status);
+ } else if(opt_word == TRUE) {
+ brkit = BreakIterator::createWordInstance(opt_locale, status);
+ } else if(opt_line == TRUE) {
+ brkit = BreakIterator::createLineInstance(opt_locale, status);
+ } else if(opt_sentence == TRUE) {
+ brkit = BreakIterator::createSentenceInstance(opt_locale, status);
+ } else {
+ // default is character iterator
+ brkit = BreakIterator::createCharacterInstance(opt_locale, status);
+ }
+ if (status==U_USING_DEFAULT_WARNING && opt_terse==FALSE) {
+ fprintf(stderr, "Warning, U_USING_DEFAULT_WARNING for %s\n", opt_locale);
+ }
+ if (status==U_USING_FALLBACK_WARNING && opt_terse==FALSE) {
+ fprintf(stderr, "Warning, U_USING_FALLBACK_ERROR for %s\n", opt_locale);
+ }
+
+}
+
+//---------------------------------------------------------------------------
+//
+// ProcessOptions() Function to read the command line options.
+//
+//---------------------------------------------------------------------------
+UBool ProcessOptions(int argc, const char **argv, OptSpec opts[])
+{
+ int i;
+ int argNum;
+ const char *pArgName;
+ OptSpec *pOpt;
+
+ for (argNum=1; argNum<argc; argNum++) {
+ pArgName = argv[argNum];
+ for (pOpt = opts; pOpt->name != 0; pOpt++) {
+ if (strcmp(pOpt->name, pArgName) == 0) {
+ switch (pOpt->type) {
+ case OptSpec::FLAG:
+ *(UBool *)(pOpt->pVar) = TRUE;
+ break;
+ case OptSpec::STRING:
+ argNum ++;
+ if (argNum >= argc) {
+ fprintf(stderr, "value expected for \"%s\" option.\n", pOpt->name);
+ return FALSE;
+ }
+ *(const char **)(pOpt->pVar) = argv[argNum];
+ break;
+ case OptSpec::NUM:
+ argNum ++;
+ if (argNum >= argc) {
+ fprintf(stderr, "value expected for \"%s\" option.\n", pOpt->name);
+ return FALSE;
+ }
+ char *endp;
+ i = strtol(argv[argNum], &endp, 0);
+ if (endp == argv[argNum]) {
+ fprintf(stderr, "integer value expected for \"%s\" option.\n", pOpt->name);
+ return FALSE;
+ }
+ *(int *)(pOpt->pVar) = i;
+ }
+ break;
+ }
+ }
+ if (pOpt->name == 0)
+ {
+ fprintf(stderr, "Unrecognized option \"%s\"\n", pArgName);
+ return FALSE;
+ }
+ }
+return TRUE;
+}
+
+
+void doForwardTest() {
+ if (opt_terse == FALSE) {
+ printf("Doing the forward test\n");
+ }
+ int32_t noBreaks = 0;
+ int32_t i = 0;
+ unsigned long startTime = timeGetTime();
+ unsigned long elapsedTime = 0;
+ if(opt_icu) {
+ createICUBrkIt();
+ brkit->setText(UnicodeString(text, textSize));
+ brkit->first();
+ if (opt_terse == FALSE) {
+ printf("Warmup\n");
+ }
+ int j;
+ while((j = brkit->next()) != BreakIterator::DONE) {
+ noBreaks++;
+ //fprintf(stderr, "%d ", j);
+ }
+
+ if (opt_terse == FALSE) {
+ printf("Measure\n");
+ }
+ startTime = timeGetTime();
+ for(i = 0; i < opt_loopCount; i++) {
+ brkit->first();
+ while(brkit->next() != BreakIterator::DONE) {
+ }
+ }
+
+ elapsedTime = timeGetTime()-startTime;
+ } else if(opt_mac) {
+#ifdef U_DARWIN
+ createMACBrkIt();
+ UniChar* filePtr = text;
+ OSStatus status = noErr;
+ UniCharCount startOffset = 0, breakOffset = 0, numUniChars = textSize;
+ startOffset = 0;
+ //printf("\t---Search forward--\n");
+
+ while (startOffset < numUniChars)
+ {
+ status = UCFindTextBreak(breakRef, macBreakType, kUCTextBreakLeadingEdgeMask, filePtr, numUniChars,
+ startOffset, &breakOffset);
+ //require_action(status == noErr, EXIT, printf( "**UCFindTextBreak failed: startOffset %d, status %d\n", (int)startOffset, (int)status));
+ //require_action((breakOffset <= numUniChars),EXIT, printf("**UCFindTextBreak breakOffset too big: startOffset %d, breakOffset %d\n", (int)startOffset, (int)breakOffset));
+
+ // Output break
+ //printf("\t%d\n", (int)breakOffset);
+
+ // Increment counters
+ noBreaks++;
+ startOffset = breakOffset;
+ }
+ startTime = timeGetTime();
+ for(i = 0; i < opt_loopCount; i++) {
+ startOffset = 0;
+
+ while (startOffset < numUniChars)
+ {
+ status = UCFindTextBreak(breakRef, macBreakType, kUCTextBreakLeadingEdgeMask, filePtr, numUniChars,
+ startOffset, &breakOffset);
+ // Increment counters
+ startOffset = breakOffset;
+ }
+ }
+ elapsedTime = timeGetTime()-startTime;
+ UCDisposeTextBreakLocator(&breakRef);
+#endif
+
+
+ }
+
+
+ if (opt_terse == FALSE) {
+ int32_t loopTime = (int)(float(1000) * ((float)elapsedTime/(float)opt_loopCount));
+ int32_t timePerCU = (int)(float(1000) * ((float)loopTime/(float)textSize));
+ int32_t timePerBreak = (int)(float(1000) * ((float)loopTime/(float)noBreaks));
+ printf("forward break iteration average loop time %d\n", loopTime);
+ printf("number of code units %d average time per code unit %d\n", textSize, timePerCU);
+ printf("number of breaks %d average time per break %d\n", noBreaks, timePerBreak);
+ } else {
+ printf("time=%d\nevents=%d\nsize=%d\n", elapsedTime, noBreaks, textSize);
+ }
+
+
+}
+
+void doIsBoundTest() {
+ int32_t noBreaks = 0, hit = 0;
+ int32_t i = 0, j = 0;
+ unsigned long startTime = timeGetTime();
+ unsigned long elapsedTime = 0;
+ createICUBrkIt();
+ brkit->setText(UnicodeString(text, textSize));
+ brkit->first();
+ for(j = 0; j < textSize; j++) {
+ if(brkit->isBoundary(j)) {
+ noBreaks++;
+ //fprintf(stderr, "%d ", j);
+ }
+ }
+ /*
+ while(brkit->next() != BreakIterator::DONE) {
+ noBreaks++;
+ }
+ */
+
+ startTime = timeGetTime();
+ for(i = 0; i < opt_loopCount; i++) {
+ for(j = 0; j < textSize; j++) {
+ if(brkit->isBoundary(j)) {
+ hit++;
+ }
+ }
+ }
+
+ elapsedTime = timeGetTime()-startTime;
+ int32_t loopTime = (int)(float(1000) * ((float)elapsedTime/(float)opt_loopCount));
+ if (opt_terse == FALSE) {
+ int32_t timePerCU = (int)(float(1000) * ((float)loopTime/(float)textSize));
+ int32_t timePerBreak = (int)(float(1000) * ((float)loopTime/(float)noBreaks));
+ printf("forward break iteration average loop time %d\n", loopTime);
+ printf("number of code units %d average time per code unit %d\n", textSize, timePerCU);
+ printf("number of breaks %d average time per break %d\n", noBreaks, timePerBreak);
+ } else {
+ printf("time=%d\nevents=%d\nsize=%d\n", elapsedTime, noBreaks, textSize);
+ }
+}
+
+//----------------------------------------------------------------------------------------
+//
+// UnixConvert -- Convert the lines of the file to the encoding for UNIX
+// Since it appears that Unicode support is going in the general
+// direction of the use of UTF-8 locales, that is the approach
+// that is used here.
+//
+//----------------------------------------------------------------------------------------
+void UnixConvert() {
+#if 0
+ int line;
+
+ UConverter *cvrtr; // An ICU code page converter.
+ UErrorCode status = U_ZERO_ERROR;
+
+
+ cvrtr = ucnv_open("utf-8", &status); // we are just doing UTF-8 locales for now.
+ if (U_FAILURE(status)) {
+ fprintf(stderr, "ICU Converter open failed.: %d\n", &status);
+ exit(-1);
+ }
+ // redo for unix
+ for (line=0; line < gNumFileLines; line++) {
+ int sizeNeeded = ucnv_fromUChars(cvrtr,
+ 0, // ptr to target buffer.
+ 0, // length of target buffer.
+ gFileLines[line].name,
+ -1, // source is null terminated
+ &status);
+ if (status != U_BUFFER_OVERFLOW_ERROR && status != U_ZERO_ERROR) {
+ fprintf(stderr, "Conversion from Unicode, something is wrong.\n");
+ exit(-1);
+ }
+ status = U_ZERO_ERROR;
+ gFileLines[line].unixName = new char[sizeNeeded+1];
+ sizeNeeded = ucnv_fromUChars(cvrtr,
+ gFileLines[line].unixName, // ptr to target buffer.
+ sizeNeeded+1, // length of target buffer.
+ gFileLines[line].name,
+ -1, // source is null terminated
+ &status);
+ if (U_FAILURE(status)) {
+ fprintf(stderr, "ICU Conversion Failed.: %d\n", status);
+ exit(-1);
+ }
+ gFileLines[line].unixName[sizeNeeded] = 0;
+ };
+ ucnv_close(cvrtr);
+#endif
+}
+
+
+//----------------------------------------------------------------------------------------
+//
+// class UCharFile Class to hide all the gorp to read a file in
+// and produce a stream of UChars.
+//
+//----------------------------------------------------------------------------------------
+class UCharFile {
+public:
+ UCharFile(const char *fileName);
+ ~UCharFile();
+ UChar get();
+ UBool eof() {return fEof;};
+ UBool error() {return fError;};
+ int32_t size() { return fFileSize; };
+
+private:
+ UCharFile (const UCharFile &other) {}; // No copy constructor.
+ UCharFile & operator = (const UCharFile &other) {return *this;}; // No assignment op
+
+ FILE *fFile;
+ const char *fName;
+ UBool fEof;
+ UBool fError;
+ UChar fPending2ndSurrogate;
+ int32_t fFileSize;
+
+ enum {UTF16LE, UTF16BE, UTF8} fEncoding;
+};
+
+UCharFile::UCharFile(const char * fileName) {
+ fEof = FALSE;
+ fError = FALSE;
+ fName = fileName;
+ struct stat buf;
+ int32_t result = stat(fileName, &buf);
+ if(result != 0) {
+ fprintf(stderr, "Error getting info\n");
+ fFileSize = -1;
+ } else {
+ fFileSize = buf.st_size;
+ }
+ fFile = fopen(fName, "rb");
+ fPending2ndSurrogate = 0;
+ if (fFile == NULL) {
+ fprintf(stderr, "Can not open file \"%s\"\n", opt_fName);
+ fError = TRUE;
+ return;
+ }
+ //
+ // Look for the byte order mark at the start of the file.
+ //
+ int BOMC1, BOMC2, BOMC3;
+ BOMC1 = fgetc(fFile);
+ BOMC2 = fgetc(fFile);
+
+ if (BOMC1 == 0xff && BOMC2 == 0xfe) {
+ fEncoding = UTF16LE; }
+ else if (BOMC1 == 0xfe && BOMC2 == 0xff) {
+ fEncoding = UTF16BE; }
+ else if (BOMC1 == 0xEF && BOMC2 == 0xBB && (BOMC3 = fgetc(fFile)) == 0xBF ) {
+ fEncoding = UTF8; }
+ else
+ {
+ fprintf(stderr, "collperf: file \"%s\" encoding must be UTF-8 or UTF-16, and "
+ "must include a BOM.\n", fileName);
+ fError = true;
+ return;
+ }
+}
+
+
+UCharFile::~UCharFile() {
+ fclose(fFile);
+}
+
+
+
+UChar UCharFile::get() {
+ UChar c;
+ switch (fEncoding) {
+ case UTF16LE:
+ {
+ int cL, cH;
+ cL = fgetc(fFile);
+ cH = fgetc(fFile);
+ c = cL | (cH << 8);
+ if (cH == EOF) {
+ c = 0;
+ fEof = TRUE;
+ }
+ break;
+ }
+ case UTF16BE:
+ {
+ int cL, cH;
+ cH = fgetc(fFile);
+ cL = fgetc(fFile);
+ c = cL | (cH << 8);
+ if (cL == EOF) {
+ c = 0;
+ fEof = TRUE;
+ }
+ break;
+ }
+ case UTF8:
+ {
+ if (fPending2ndSurrogate != 0) {
+ c = fPending2ndSurrogate;
+ fPending2ndSurrogate = 0;
+ break;
+ }
+
+ int ch = fgetc(fFile); // Note: c and ch are separate cause eof test doesn't work on UChar type.
+ if (ch == EOF) {
+ c = 0;
+ fEof = TRUE;
+ break;
+ }
+
+ if (ch <= 0x7f) {
+ // It's ascii. No further utf-8 conversion.
+ c = ch;
+ break;
+ }
+
+ // Figure out the lenght of the char and read the rest of the bytes
+ // into a temp array.
+ int nBytes;
+ if (ch >= 0xF0) {nBytes=4;}
+ else if (ch >= 0xE0) {nBytes=3;}
+ else if (ch >= 0xC0) {nBytes=2;}
+ else {
+ fprintf(stderr, "not likely utf-8 encoded file %s contains corrupt data at offset %d.\n", fName, ftell(fFile));
+ fError = TRUE;
+ return 0;
+ }
+
+ unsigned char bytes[10];
+ bytes[0] = (unsigned char)ch;
+ int i;
+ for (i=1; i<nBytes; i++) {
+ bytes[i] = fgetc(fFile);
+ if (bytes[i] < 0x80 || bytes[i] >= 0xc0) {
+ fprintf(stderr, "utf-8 encoded file %s contains corrupt data at offset %d. Expected %d bytes, byte %d is invalid. First byte is %02X\n", fName, ftell(fFile), nBytes, i, ch);
+ fError = TRUE;
+ return 0;
+ }
+ }
+
+ // Convert the bytes from the temp array to a Unicode char.
+ i = 0;
+ uint32_t cp;
+ UTF8_NEXT_CHAR_UNSAFE(bytes, i, cp);
+ c = (UChar)cp;
+
+ if (cp >= 0x10000) {
+ // The code point needs to be broken up into a utf-16 surrogate pair.
+ // Process first half this time through the main loop, and
+ // remember the other half for the next time through.
+ UChar utf16Buf[3];
+ i = 0;
+ UTF16_APPEND_CHAR_UNSAFE(utf16Buf, i, cp);
+ fPending2ndSurrogate = utf16Buf[1];
+ c = utf16Buf[0];
+ }
+ break;
+ };
+ }
+ return c;
+}
+
+
+//----------------------------------------------------------------------------------------
+//
+// Main -- process command line, read in and pre-process the test file,
+// call other functions to do the actual tests.
+//
+//----------------------------------------------------------------------------------------
+int main(int argc, const char** argv) {
+ if (ProcessOptions(argc, argv, opts) != TRUE || opt_help || opt_fName == 0) {
+ printf(gUsageString);
+ exit (1);
+ }
+ // Make sure that we've only got one API selected.
+ if (opt_mac || opt_unix || opt_win) opt_icu = FALSE;
+ if (opt_mac || opt_unix) opt_win = FALSE;
+ if (opt_mac) opt_unix = FALSE;
+
+ UErrorCode status = U_ZERO_ERROR;
+
+
+
+ //
+ // Set up a Windows LCID
+ //
+ /*
+ if (opt_langid != 0) {
+ gWinLCID = MAKELCID(opt_langid, SORT_DEFAULT);
+ }
+ else {
+ gWinLCID = uloc_getLCID(opt_locale);
+ }
+ */
+
+ //
+ // Set the UNIX locale
+ //
+ if (opt_unix) {
+ if (setlocale(LC_ALL, opt_locale) == 0) {
+ fprintf(stderr, "setlocale(LC_ALL, %s) failed.\n", opt_locale);
+ exit(-1);
+ }
+ }
+
+ // Read in the input file.
+ // File assumed to be utf-16.
+ // Lines go onto heap buffers. Global index array to line starts is created.
+ // Lines themselves are null terminated.
+ //
+
+ UCharFile f(opt_fName);
+ if (f.error()) {
+ exit(-1);
+ }
+ int32_t fileSize = f.size();
+ const int STARTSIZE = 70000;
+ int32_t bufSize = 0;
+ int32_t charCount = 0;
+ if(fileSize != -1) {
+ text = (UChar *)malloc(fileSize*sizeof(UChar));
+ bufSize = fileSize;
+ } else {
+ text = (UChar *)malloc(STARTSIZE*sizeof(UChar));
+ bufSize = STARTSIZE;
+ }
+ if(text == NULL) {
+ fprintf(stderr, "Allocating buffer failed\n");
+ exit(-1);
+ }
+
+
+ // Read the file, split into lines, and save in memory.
+ // Loop runs once per utf-16 value from the input file,
+ // (The number of bytes read from file per loop iteration depends on external encoding.)
+ for (;;) {
+
+ UChar c = f.get();
+ if(f.eof()) {
+ break;
+ }
+ if (f.error()){
+ exit(-1);
+ }
+ // We now have a good UTF-16 value in c.
+ text[charCount++] = c;
+ if(charCount == bufSize) {
+ text = (UChar *)realloc(text, 2*bufSize*sizeof(UChar));
+ if(text == NULL) {
+ fprintf(stderr, "Reallocating buffer failed\n");
+ exit(-1);
+ }
+ bufSize *= 2;
+ }
+ }
+
+
+ if (opt_terse == FALSE) {
+ printf("file \"%s\", %d charCount code units.\n", opt_fName, charCount);
+ }
+
+ textSize = charCount;
+
+
+
+
+ //
+ // Dump file contents if requested.
+ //
+ if (opt_dump) {
+ // dump file, etc... possibly
+ }
+
+
+ //
+ // We've got the file read into memory. Go do something with it.
+ //
+ int32_t i = 0;
+ for(i = 0; i < opt_passesCount; i++) {
+ if(opt_loopCount != 0) {
+ if(opt_next) {
+ doForwardTest();
+ } else if(opt_isBound) {
+ doIsBoundTest();
+ } else {
+ doForwardTest();
+ }
+ } else if(opt_time != 0) {
+
+ }
+ }
+
+ if(text != NULL) {
+ free(text);
+ }
+ if(brkit != NULL) {
+ delete brkit;
+ }
+
+ return 0;
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperfold.dsp b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperfold.dsp
new file mode 100644
index 00000000000..2befc0aba27
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ubrkperf/ubrkperfold.dsp
@@ -0,0 +1,168 @@
+# Microsoft Developer Studio Project File - Name="ubrkperfold" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=ubrkperfold - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ubrkperfold.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ubrkperfold.mak" CFG="ubrkperfold - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ubrkperfold - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ubrkperfold - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "ubrkperfold - Win64 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ubrkperfold - Win64 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "ubrkperfold - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /Ob2 /I "..\..\..\include" /I "..\..\tools\ctestfw" /I "..\..\common" /I "..\..\i18n" /I "..\..\tools\toolutil" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 icuuc.lib icuin.lib ctestfw.lib icutu.lib kernel32.lib user32.lib advapi32.lib shell32.lib winmm.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\lib\\"
+# Begin Custom Build
+InputPath=.\Release\ubrkperfold.exe
+SOURCE="$(InputPath)"
+
+"c:\dev\0_icu\bin\ubrkperf20.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ copy $(InputPath) c:\dev\0_icu\bin\ubrkperf20.exe
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "ubrkperfold - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# ADD CPP /nologo /G6 /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\include" /I "..\..\..\tools\ctestfw" /I "..\..\..\common" /I "..\..\..\i18n" /I "..\..\..\tools\toolutil" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 icuucd.lib icuind.lib icutud.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\lib\\"
+
+!ELSEIF "$(CFG)" == "ubrkperfold - Win64 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /Op /I "..\..\..\include" /I "..\..\tools\ctestfw" /I "..\..\common" /I "..\..\i18n" /I "..\..\tools\toolutil" /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /Wp64 /Zm600 /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IX86 /machine:IA64
+# ADD LINK32 icuuc.lib icuin.lib ctestfw.lib icutu.lib kernel32.lib user32.lib advapi32.lib shell32.lib winmm.lib /nologo /subsystem:console /machine:IX86 /libpath:"..\..\..\lib\\" /machine:IA64
+
+!ELSEIF "$(CFG)" == "ubrkperfold - Win64 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /Op /I "..\..\..\include" /I "..\..\tools\ctestfw" /I "..\..\common" /I "..\..\i18n" /I "..\..\tools\toolutil" /D "WIN64" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_IA64_" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FR /FD /GZ /Wp64 /Zm600 /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:IX86 /pdbtype:sept /machine:IA64
+# ADD LINK32 icuucd.lib icuind.lib icutud.lib winmm.lib /nologo /subsystem:console /incremental:no /debug /machine:IX86 /pdbtype:sept /libpath:"..\..\..\lib\\" /machine:IA64
+
+!ENDIF
+
+# Begin Target
+
+# Name "ubrkperfold - Win32 Release"
+# Name "ubrkperfold - Win32 Debug"
+# Name "ubrkperfold - Win64 Release"
+# Name "ubrkperfold - Win64 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\ubrkperfold.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ucnvavailperf/ucnvavailperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/ucnvavailperf/ucnvavailperf.cpp
new file mode 100644
index 00000000000..c3d67ec45d0
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ucnvavailperf/ucnvavailperf.cpp
@@ -0,0 +1,129 @@
+/*
+*******************************************************************************
+*
+* Copyright (C) 2009, International Business Machines
+* Corporation and others. All Rights Reserved.
+*
+*******************************************************************************
+* file name: ucnvavailperf.cpp
+* encoding: US-ASCII
+* tab size: 8 (not used)
+* indentation:4
+*
+* created on: 2009apr06
+* created by: Markus W. Scherer
+*
+* Test performance (time & memory) of ucnv_countAvailable(),
+* for a before-and-after comparison of
+* ticket 6441: make ucnv_countAvailable() not fully load converters
+*
+* Run with one optional command-line argument:
+* You can specify the path to the ICU data directory.
+*
+* I built the common (icuuc) library with the following modification,
+* switching between old (pre-ticket-6441) behavior of actually
+* trying to load all converters and new behavior of just doing enough
+* to test availability.
+*
+* Code in the ucnv_bld.c haveAvailableConverterList() function:
+#if 0
+ // old pre-ticket-6441 behavior
+ ucnv_close(ucnv_createConverter(&tempConverter, converterName, &localStatus));
+ if (U_SUCCESS(localStatus)) {
+#else
+ // new behavior
+ if (ucnv_canCreateConverter(converterName, &localStatus)) {
+#endif
+*/
+
+#include <malloc.h>
+#include <stdio.h>
+#include "unicode/utypes.h"
+#include "unicode/putil.h"
+#include "unicode/uclean.h"
+#include "unicode/ucnv.h"
+#include "unicode/utimer.h"
+
+static size_t icuMemUsage = 0;
+
+U_CDECL_BEGIN
+
+void *U_CALLCONV
+my_alloc(const void *context, size_t size) {
+ size_t *p = (size_t *)malloc(size + sizeof(size_t));
+ if (p != NULL) {
+ icuMemUsage += size;
+ *p = size;
+ return p + 1;
+ } else {
+ return NULL;
+ }
+}
+
+void U_CALLCONV
+my_free(const void *context, void *mem) {
+ if (mem != NULL) {
+ const size_t *p = (const size_t *)mem - 1;
+ icuMemUsage -= *p;
+ free((void *)p);
+ }
+}
+
+// Not used in the common library.
+void *U_CALLCONV
+my_realloc(const void *context, void *mem, size_t size) {
+ my_free(context, mem);
+ return NULL;
+}
+
+U_CDECL_END
+
+int main(int argc, const char *argv[]) {
+ UErrorCode errorCode = U_ZERO_ERROR;
+
+ // Hook in our own memory allocation functions so that we can measure
+ // the memory usage.
+ u_setMemoryFunctions(NULL, my_alloc, my_realloc, my_free, &errorCode);
+ if(U_FAILURE(errorCode)) {
+ fprintf(stderr,
+ "u_setMemoryFunctions() failed - %s\n",
+ u_errorName(errorCode));
+ return errorCode;
+ }
+
+ if (argc > 1) {
+ printf("u_setDataDirectory(%s)\n", argv[1]);
+ u_setDataDirectory(argv[1]);
+ }
+
+ // Preload a purely algorithmic converter via an alias,
+ // to make sure that relevant data can be loaded and to set up
+ // caches and such that are needed even if none of the data-driven
+ // converters needs to be loaded.
+ ucnv_close(ucnv_open("ibm-1208", &errorCode));
+ if(U_FAILURE(errorCode)) {
+ fprintf(stderr,
+ "unable to open UTF-8 converter via an alias - %s\n",
+ u_errorName(errorCode));
+ return errorCode;
+ }
+
+ printf("memory usage after ucnv_open(ibm-1208): %lu\n", (long)icuMemUsage);
+
+ UTimer start_time;
+ utimer_getTime(&start_time);
+ // Measure the time to find out the list of actually available converters.
+ int32_t count = ucnv_countAvailable();
+ double elapsed = utimer_getElapsedSeconds(&start_time);
+ printf("ucnv_countAvailable() reports that %d converters are available.\n", count);
+ printf("ucnv_countAvailable() took %g seconds to figure this out.\n", elapsed);
+ printf("memory usage after ucnv_countAvailable(): %lu\n", (long)icuMemUsage);
+
+ ucnv_flushCache();
+ printf("memory usage after ucnv_flushCache(): %lu\n", (long)icuMemUsage);
+
+ u_cleanup();
+ printf("memory usage after u_cleanup(): %lu\n", (long)icuMemUsage);
+
+ return 0;
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ucnvavailperf/ucnvavailperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/ucnvavailperf/ucnvavailperf.vcxproj
new file mode 100644
index 00000000000..01376bada31
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ucnvavailperf/ucnvavailperf.vcxproj
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{EE2259BF-280D-4E0E-8A08-D77A26AE4191}</ProjectGuid>
+ <RootNamespace>ucnvavailperf</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\$(Configuration)\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\tools\ctestfw;..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>..\..\..\tools\ctestfw;..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="ucnvavailperf.cpp" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/Makefile.in
new file mode 100644
index 00000000000..07c62d657da
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/Makefile.in
@@ -0,0 +1,78 @@
+## Makefile.in for ICU - test/perf/unisetperf
+## Copyright (c) 2001-2007, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/unisetperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = unisetperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = unisetperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/bitset.cpp b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/bitset.cpp
new file mode 100644
index 00000000000..487d0c0985f
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/bitset.cpp
@@ -0,0 +1,197 @@
+/*
+**********************************************************************
+* Copyright (C) 2007, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+* file name: bitset.cpp
+* encoding: US-ASCII
+* tab size: 8 (not used)
+* indentation:4
+*
+* created on: 2007jan15
+* created by: Markus Scherer
+*
+* Idea for a "compiled", fast, read-only (immutable) version of a UnicodeSet
+* using a folded bit set consisting of a 1k-entry index table and a
+* compacted array of 64-bit words.
+* Uses a simple hash table for compaction.
+* Uses the original set for supplementary code points.
+*/
+
+#include "unicode/utypes.h"
+#include "unicont.h"
+
+/*
+ * Hash table for up to 1k 64-bit words, for 1 bit per BMP code point.
+ * Hashes 64-bit words and maps them to 16-bit integers which are
+ * assigned in order of new incoming words for subsequent storage
+ * in a contiguous array.
+ */
+struct BMPBitHash : public UObject {
+ int64_t keys[0x800]; // 2k
+ uint16_t values[0x800];
+ uint16_t reverse[0x400];
+ uint16_t count;
+ const int32_t prime=1301; // Less than 2k.
+
+ BMPBitHash() : count(0) {
+ // Fill values[] with 0xffff.
+ uprv_memset(values, 0xff, sizeof(values));
+ }
+
+ /*
+ * Map a key to an integer count.
+ * Map at most 1k=0x400 different keys with this data structure.
+ */
+ uint16_t map(int64_t key) {
+ int32_t hash=(int32_t)(key>>55)&0x1ff;
+ hash^=(int32_t)(key>>44)&0x7ff;
+ hash^=(int32_t)(key>>33)&0x7ff;
+ hash^=(int32_t)(key>>22)&0x7ff;
+ hash^=(int32_t)(key>>11)&0x7ff;
+ hash^=(int32_t)key&0x7ff;
+ for(;;) {
+ if(values[hash]==0xffff) {
+ // Unused slot.
+ keys[hash]=key;
+ reverse[count]=hash;
+ return values[hash]=count++;
+ } else if(keys[hash]==key) {
+ // Found a slot with this key.
+ return values[hash];
+ } else {
+ // Used slot with a different key, move to another slot.
+ hash=(hash+prime)&0x7ff;
+ }
+ }
+ }
+
+ uint16_t countKeys() const { return count; }
+
+ /*
+ * Invert the hash map: Fill an array of length countKeys() with the keys
+ * indexed by their mapped values.
+ */
+ void invert(int64_t *k) const {
+ uint16_t i;
+
+ for(i=0; i<count; ++i) {
+ k[i]=keys[reverse[i]];
+ }
+ }
+};
+
+class BitSet : public UObject, public UnicodeContainable {
+public:
+ BitSet(const UnicodeSet &set, UErrorCode &errorCode) : bits(shortBits), restSet(set.clone()) {
+ if(U_FAILURE(errorCode)) {
+ return;
+ }
+ BMPBitHash *bitHash=new BMPBitHash;
+ if(bitHash==NULL || restSet==NULL) {
+ errorCode=U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ UnicodeSetIterator iter(set);
+ int64_t b;
+ UChar32 start, end;
+ int32_t prevIndex, i, j;
+
+ b=0; // Not necessary but makes compilers happy.
+ prevIndex=-1;
+ for(;;) {
+ if(iter.nextRange() && !iter.isString()) {
+ start=iter.getCodepoint();
+ end=iter.getCodepointEnd();
+ } else {
+ start=0x10000;
+ }
+ i=start>>6;
+ if(prevIndex!=i) {
+ // Finish the end of the previous range.
+ if(prevIndex<0) {
+ prevIndex=0;
+ } else {
+ index[prevIndex++]=bitHash->map(b);
+ }
+ // Fill all-zero entries between ranges.
+ if(prevIndex<i) {
+ uint16_t zero=bitHash->map(0);
+ do {
+ index[prevIndex++]=zero;
+ } while(prevIndex<i);
+ }
+ b=0;
+ }
+ if(start>0xffff) {
+ break;
+ }
+ b|=~((INT64_C(1)<<(start&0x3f))-1);
+ j=end>>6;
+ if(i<j) {
+ // Set bits for the start of the range.
+ index[i++]=bitHash->map(b);
+ // Fill all-one entries inside the range.
+ if(i<j) {
+ uint16_t all=bitHash->map(INT64_C(0xffffffffffffffff));
+ do {
+ index[i++]=all;
+ } while(i<j);
+ }
+ b=INT64_C(0xffffffffffffffff);
+ }
+ /* i==j */
+ b&=(INT64_C(1)<<(end&0x3f))-1;
+ prevIndex=j;
+ }
+
+ if(bitHash->countKeys()>LENGTHOF(shortBits)) {
+ bits=(int64_t *)uprv_malloc(bitHash->countKeys()*8);
+ }
+ if(bits!=NULL) {
+ bitHash->invert(bits);
+ } else {
+ bits=shortBits;
+ errorCode=U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ latin1Set[0]=(uint32_t)bits[0];
+ latin1Set[1]=(uint32_t)(bits[0]>>32);
+ latin1Set[2]=(uint32_t)bits[1];
+ latin1Set[3]=(uint32_t)(bits[1]>>32);
+ latin1Set[4]=(uint32_t)bits[2];
+ latin1Set[5]=(uint32_t)(bits[2]>>32);
+ latin1Set[6]=(uint32_t)bits[3];
+ latin1Set[7]=(uint32_t)(bits[3]>>32);
+
+ restSet.remove(0, 0xffff);
+ }
+
+ ~BitSet() {
+ if(bits!=shortBits) {
+ uprv_free(bits);
+ }
+ delete restSet;
+ }
+
+ UBool contains(UChar32 c) const {
+ if((uint32_t)c<=0xff) {
+ return (UBool)((latin1Set[c>>5]&((uint32_t)1<<(c&0x1f)))!=0);
+ } else if((uint32_t)c<0xffff) {
+ return (UBool)((bits[c>>6]&(INT64_C(1)<<(c&0x3f)))!=0);
+ } else {
+ return restSet->contains(c);
+ }
+ }
+
+private:
+ uint16_t index[0x400];
+ int64_t shortBits[32];
+ int64_t *bits;
+
+ uint32_t latin1Bits[8];
+
+ UnicodeSet *restSet;
+};
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/contperf.bat b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/contperf.bat
new file mode 100755
index 00000000000..9ba8ea4ee14
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/contperf.bat
@@ -0,0 +1,19 @@
+rem Copyright (c) 2007, International Business Machines Corporation and
+rem others. All Rights Reserved.
+
+set PERF=c:\svn\icuproj\icu\ucnvutf8\source\test\perf\unisetperf\release\unisetperf
+rem types: slow Bv Bv0 B0
+rem --pattern [:White_Space:]
+
+for %%f in (udhr_eng.txt
+ udhr_deu.txt
+ udhr_fra.txt
+ udhr_rus.txt
+ udhr_tha.txt
+ udhr_jpn.txt
+ udhr_cmn.txt
+ udhr_jpn.html) do (
+ for %%t in (slow Bv Bv0 B0) do (
+ %PERF% Contains --type %%t -f \temp\udhr\%%f --pattern [:White_Space:] -v -e UTF-8 --passes 3 --iterations 10000
+ )
+)
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/contperf.sh b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/contperf.sh
new file mode 100755
index 00000000000..027897ef2e0
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/contperf.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Copyright (c) 2007, International Business Machines Corporation and
+# others. All Rights Reserved.
+
+# Echo shell script commands.
+set -ex
+
+PERF=test/perf/unisetperf/unisetperf
+# slow Bv Bv0 B0
+# --pattern [:White_Space:]
+
+for file in udhr_eng.txt \
+ udhr_deu.txt \
+ udhr_fra.txt \
+ udhr_rus.txt \
+ udhr_tha.txt \
+ udhr_jpn.txt \
+ udhr_cmn.txt \
+ udhr_jpn.html; do
+ for type in slow Bv Bv0; do
+ $PERF Contains --type $type -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 10000
+ done
+done
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span16perf.bat b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span16perf.bat
new file mode 100755
index 00000000000..f67cdb26e69
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span16perf.bat
@@ -0,0 +1,19 @@
+rem Copyright (c) 2007, International Business Machines Corporation and
+rem others. All Rights Reserved.
+
+set PERF=c:\svn\icuproj\icu\ucnvutf8\source\test\perf\unisetperf\release\unisetperf
+rem types: slow Bv Bv0 B0
+rem --pattern [:White_Space:]
+
+for %%f in (udhr_eng.txt
+ udhr_deu.txt
+ udhr_fra.txt
+ udhr_rus.txt
+ udhr_tha.txt
+ udhr_jpn.txt
+ udhr_cmn.txt
+ udhr_jpn.html) do (
+ for %%t in (slow Bv Bv0) do (
+ %PERF% SpanUTF16 --type %%t -f \temp\udhr\%%f --pattern [:White_Space:] -v -e UTF-8 --passes 3 --iterations 10000
+ )
+)
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span16perf.sh b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span16perf.sh
new file mode 100755
index 00000000000..8a647e31858
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span16perf.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Copyright (c) 2007, International Business Machines Corporation and
+# others. All Rights Reserved.
+
+# Echo shell script commands.
+set -ex
+
+PERF=test/perf/unisetperf/unisetperf
+# slow Bv Bv0 B0
+# --pattern [:White_Space:]
+
+for file in udhr_eng.txt \
+ udhr_deu.txt \
+ udhr_fra.txt \
+ udhr_rus.txt \
+ udhr_tha.txt \
+ udhr_jpn.txt \
+ udhr_cmn.txt \
+ udhr_jpn.html; do
+ for type in slow Bv Bv0; do
+ $PERF SpanUTF16 --type $type -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 10000
+ done
+done
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span8perf.bat b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span8perf.bat
new file mode 100755
index 00000000000..611eaf633b8
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span8perf.bat
@@ -0,0 +1,19 @@
+rem Copyright (c) 2007, International Business Machines Corporation and
+rem others. All Rights Reserved.
+
+set PERF=c:\svn\icuproj\icu\ucnvutf8\source\test\perf\unisetperf\release\unisetperf
+rem types: slow Bh bh Bv Bv0 B0 BvF Bvp BvpF L Bvl BvL
+rem --pattern [:White_Space:]
+
+for %%f in (udhr_eng.txt
+ udhr_deu.txt
+ udhr_fra.txt
+ udhr_rus.txt
+ udhr_tha.txt
+ udhr_jpn.txt
+ udhr_cmn.txt
+ udhr_jpn.html) do (
+ for %%t in (slow BvF BvpF Bvl BvL) do (
+ %PERF% SpanUTF8 --type %%t -f \temp\udhr\%%f --pattern [:White_Space:] -v -e UTF-8 --passes 3 --iterations 10000
+ )
+)
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span8perf.sh b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span8perf.sh
new file mode 100755
index 00000000000..b508320c3ef
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/span8perf.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Copyright (c) 2007, International Business Machines Corporation and
+# others. All Rights Reserved.
+
+# Echo shell script commands.
+set -ex
+
+PERF=test/perf/unisetperf/unisetperf
+# slow Bh bh Bv Bv0 B0 BvF Bvp BvpF L Bvl BvL
+# --pattern [:White_Space:]
+
+for file in udhr_eng.txt \
+ udhr_deu.txt \
+ udhr_fra.txt \
+ udhr_rus.txt \
+ udhr_tha.txt \
+ udhr_jpn.txt \
+ udhr_cmn.txt \
+ udhr_jpn.html; do
+ for type in slow BvF BvpF Bvl BvL; do
+ $PERF SpanUTF8 --type $type -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 10000
+ done
+done
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/trieset.cpp b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/trieset.cpp
new file mode 100644
index 00000000000..6c4720888c9
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/trieset.cpp
@@ -0,0 +1,111 @@
+/*
+**********************************************************************
+* Copyright (C) 2007, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+* file name: trieset.cpp
+* encoding: US-ASCII
+* tab size: 8 (not used)
+* indentation:4
+*
+* created on: 2007jan15
+* created by: Markus Scherer
+*
+* Idea for a "compiled", fast, read-only (immutable) version of a UnicodeSet
+* using a UTrie with 8-bit (byte) results per code point.
+* Modifies the trie index to make the BMP linear, and uses the original set
+* for supplementary code points.
+*/
+
+#include "unicode/utypes.h"
+#include "unicont.h"
+
+#define UTRIE_GET8_LATIN1(trie) ((const uint8_t *)(trie)->data32+UTRIE_DATA_BLOCK_LENGTH)
+
+#define UTRIE_GET8_FROM_LEAD(trie, c16) \
+ ((const uint8_t *)(trie)->data32)[ \
+ ((int32_t)((trie)->index[(c16)>>UTRIE_SHIFT])<<UTRIE_INDEX_SHIFT)+ \
+ ((c16)&UTRIE_MASK) \
+ ]
+
+class TrieSet : public UObject, public UnicodeContainable {
+public:
+ TrieSet(const UnicodeSet &set, UErrorCode &errorCode)
+ : trieData(NULL), latin1(NULL), restSet(set.clone()) {
+ if(U_FAILURE(errorCode)) {
+ return;
+ }
+ if(restSet==NULL) {
+ errorCode=U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ UNewTrie *newTrie=utrie_open(NULL, NULL, 0x11000, 0, 0, TRUE);
+ UChar32 start, end;
+
+ UnicodeSetIterator iter(set);
+
+ while(iter.nextRange() && !iter.isString()) {
+ start=iter.getCodepoint();
+ end=iter.getCodepointEnd();
+ if(start>0xffff) {
+ break;
+ }
+ if(end>0xffff) {
+ end=0xffff;
+ }
+ if(!utrie_setRange32(newTrie, start, end+1, TRUE, TRUE)) {
+ errorCode=U_INTERNAL_PROGRAM_ERROR;
+ return;
+ }
+ }
+
+ // Preflight the trie length.
+ int32_t length=utrie_serialize(newTrie, NULL, 0, NULL, 8, &errorCode);
+ if(errorCode!=U_BUFFER_OVERFLOW_ERROR) {
+ return;
+ }
+
+ trieData=(uint32_t *)uprv_malloc(length);
+ if(trieData==NULL) {
+ errorCode=U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ errorCode=U_ZERO_ERROR;
+ utrie_serialize(newTrie, trieData, length, NULL, 8, &errorCode);
+ utrie_unserialize(&trie, trieData, length, &errorCode); // TODO: Implement for 8-bit UTrie!
+
+ if(U_SUCCESS(errorCode)) {
+ // Copy the indexes for surrogate code points into the BMP range
+ // for simple access across the entire BMP.
+ uprv_memcpy((uint16_t *)trie.index+(0xd800>>UTRIE_SHIFT),
+ trie.index+UTRIE_BMP_INDEX_LENGTH,
+ (0x800>>UTRIE_SHIFT)*2);
+ latin1=UTRIE_GET8_LATIN1(&trie);
+ }
+
+ restSet.remove(0, 0xffff);
+ }
+
+ ~TrieSet() {
+ uprv_free(trieData);
+ delete restSet;
+ }
+
+ UBool contains(UChar32 c) const {
+ if((uint32_t)c<=0xff) {
+ return (UBool)latin1[c];
+ } else if((uint32_t)c<0xffff) {
+ return (UBool)UTRIE_GET8_FROM_LEAD(&trie, c);
+ } else {
+ return restSet->contains(c);
+ }
+ }
+
+private:
+ uint32_t *trieData;
+ const uint8_t *latin1;
+ UTrie trie;
+ UnicodeSet *restSet;
+};
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/unicont.h b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/unicont.h
new file mode 100644
index 00000000000..2e8a64e8cd9
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/draft/unicont.h
@@ -0,0 +1,34 @@
+/*
+**********************************************************************
+* Copyright (C) 2007, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+* file name: unicont.h
+* encoding: US-ASCII
+* tab size: 8 (not used)
+* indentation:4
+*
+* created on: 2007jan15
+* created by: Markus Scherer
+*
+* Idea for new common interface underneath the normal UnicodeSet
+* and other classes, such as "compiled", fast, read-only (immutable)
+* versions of UnicodeSet.
+*/
+
+class UnicodeContainable {
+public:
+ virtual ~UnicodeContainable() {}
+
+ virtual UBool contains(UChar32 c) const = 0;
+
+ virtual int32_t span(const UChar *s, int32_t length);
+
+ virtual int32_t spanNot(const UChar *s, int32_t length);
+
+ virtual int32_t spanUTF8(const UChar *s, int32_t length);
+
+ virtual int32_t spanNotUTF8(const UChar *s, int32_t length);
+
+ virtual UClassID getDynamicClassID(void) const;
+};
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.cpp
new file mode 100644
index 00000000000..36d61c1e193
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.cpp
@@ -0,0 +1,441 @@
+/*
+**********************************************************************
+* Copyright (C) 2007, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+* file name: unisetperf.cpp
+* encoding: US-ASCII
+* tab size: 8 (not used)
+* indentation:4
+*
+* created on: 2007jan31
+* created by: Markus Scherer
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "unicode/uperf.h"
+#include "unicode/uniset.h"
+#include "unicode/unistr.h"
+#include "uoptions.h"
+
+#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
+
+// Command-line options specific to unisetperf.
+// Options do not have abbreviations: Force readable command lines.
+// (Using U+0001 for abbreviation characters.)
+enum {
+ SET_PATTERN,
+ FAST_TYPE,
+ UNISETPERF_OPTIONS_COUNT
+};
+
+static UOption options[UNISETPERF_OPTIONS_COUNT]={
+ UOPTION_DEF("pattern", '\x01', UOPT_REQUIRES_ARG),
+ UOPTION_DEF("type", '\x01', UOPT_REQUIRES_ARG)
+};
+
+static const char *const unisetperf_usage =
+ "\t--pattern UnicodeSet pattern for instantiation.\n"
+ "\t Default: [:ID_Continue:]\n"
+ "\t--type Type of UnicodeSet: slow fast\n"
+ "\t Default: slow\n";
+
+// Test object with setup data.
+class UnicodeSetPerformanceTest : public UPerfTest {
+public:
+ UnicodeSetPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status)
+ : UPerfTest(argc, argv, options, LENGTHOF(options), unisetperf_usage, status),
+ utf8(NULL), utf8Length(0), countInputCodePoints(0), spanCount(0) {
+ if (U_SUCCESS(status)) {
+ UnicodeString pattern=UnicodeString(options[SET_PATTERN].value, -1, US_INV).unescape();
+ set.applyPattern(pattern, status);
+ prefrozen=set;
+ if(0==strcmp(options[FAST_TYPE].value, "fast")) {
+ set.freeze();
+ }
+
+ int32_t inputLength;
+ UPerfTest::getBuffer(inputLength, status);
+ if(U_SUCCESS(status) && inputLength>0) {
+ countInputCodePoints = u_countChar32(buffer, bufferLen);
+
+ countSpans();
+
+ // Preflight the UTF-8 length and allocate utf8.
+ u_strToUTF8(NULL, 0, &utf8Length, buffer, bufferLen, &status);
+ if(status==U_BUFFER_OVERFLOW_ERROR) {
+ utf8=(char *)malloc(utf8Length);
+ if(utf8!=NULL) {
+ status=U_ZERO_ERROR;
+ u_strToUTF8(utf8, utf8Length, NULL, buffer, bufferLen, &status);
+ } else {
+ status=U_MEMORY_ALLOCATION_ERROR;
+ }
+ }
+
+ if(verbose) {
+ printf("code points:%ld len16:%ld len8:%ld spans:%ld "
+ "cp/span:%.3g UChar/span:%.3g B/span:%.3g B/cp:%.3g\n",
+ (long)countInputCodePoints, (long)bufferLen, (long)utf8Length, (long)spanCount,
+ (double)countInputCodePoints/spanCount, (double)bufferLen/spanCount, (double)utf8Length/spanCount,
+ (double)utf8Length/countInputCodePoints);
+ }
+ }
+ }
+ }
+
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL);
+
+ // Count spans of characters that are in the set,
+ // and spans of characters that are not in the set.
+ // If the very first character is in the set, then one additional
+ // not-span is counted.
+ void countSpans() {
+ const UChar *s=getBuffer();
+ int32_t length=getBufferLen();
+ int32_t i=0;
+ UBool tf=FALSE;
+ while(i<length) {
+ i=span(s, length, i, tf);
+ tf=(UBool)(!tf);
+ ++spanCount;
+ }
+ }
+ int32_t span(const UChar *s, int32_t length, int32_t start, UBool tf) const {
+ UChar32 c;
+ int32_t prev;
+ while((prev=start)<length) {
+ U16_NEXT(s, start, length, c);
+ if(tf!=set.contains(c)) {
+ break;
+ }
+ }
+ return prev;
+ }
+
+ const UChar *getBuffer() const { return buffer; }
+ int32_t getBufferLen() const { return bufferLen; }
+
+ char *utf8;
+ int32_t utf8Length;
+
+ // Number of code points in the input text.
+ int32_t countInputCodePoints;
+ int32_t spanCount;
+
+ UnicodeSet set;
+ UnicodeSet prefrozen;
+};
+
+// Performance test function object.
+class Command : public UPerfFunction {
+protected:
+ Command(const UnicodeSetPerformanceTest &testcase) : testcase(testcase) {}
+
+public:
+ virtual ~Command() {}
+
+ // virtual void call(UErrorCode* pErrorCode) { ... }
+
+ virtual long getOperationsPerIteration() {
+ // Number of code points tested:
+ // Input code points, plus one for the end of each span except the last span.
+ return testcase.countInputCodePoints+testcase.spanCount-1;
+ }
+
+ virtual long getEventsPerIteration() {
+ return testcase.spanCount;
+ }
+
+ const UnicodeSetPerformanceTest &testcase;
+};
+
+class Contains : public Command {
+protected:
+ Contains(const UnicodeSetPerformanceTest &testcase) : Command(testcase) {
+ // Verify that the frozen set is equal to the unfrozen one.
+ UnicodeSet set;
+ UChar32 c;
+
+ for(c=0; c<=0x10ffff; ++c) {
+ if(testcase.set.contains(c)) {
+ set.add(c);
+ }
+ }
+ if(set!=testcase.set) {
+ fprintf(stderr, "error: frozen set != original!\n");
+ }
+ }
+public:
+ static UPerfFunction* get(const UnicodeSetPerformanceTest &testcase) {
+ return new Contains(testcase);
+ }
+ virtual void call(UErrorCode* pErrorCode) {
+ const UnicodeSet &set=testcase.set;
+ const UChar *s=testcase.getBuffer();
+ int32_t length=testcase.getBufferLen();
+ int32_t count=0;
+ int32_t i=0;
+ UBool tf=FALSE;
+ while(i<length) {
+ i+=span(set, s+i, length-i, tf);
+ tf=(UBool)(!tf);
+ ++count;
+ }
+ if(count!=testcase.spanCount) {
+ fprintf(stderr, "error: Contains() count=%ld != %ld=UnicodeSetPerformanceTest.spanCount\n",
+ (long)count, (long)testcase.spanCount);
+ }
+ }
+ static int32_t span(const UnicodeSet &set, const UChar *s, int32_t length, UBool tf) {
+ UChar32 c;
+ int32_t start=0, prev;
+ while((prev=start)<length) {
+ U16_NEXT(s, start, length, c);
+ if(tf!=set.contains(c)) {
+ break;
+ }
+ }
+ return prev;
+ }
+};
+
+class SpanUTF16 : public Command {
+protected:
+ SpanUTF16(const UnicodeSetPerformanceTest &testcase) : Command(testcase) {
+ // Verify that the frozen set is equal to the unfrozen one.
+ UnicodeSet set;
+ UChar utf16[2];
+ UChar32 c, c2;
+
+ for(c=0; c<=0xffff; ++c) {
+ utf16[0]=(UChar)c;
+ if(testcase.set.span(utf16, 1, USET_SPAN_CONTAINED)>0) {
+ set.add(c);
+ }
+ }
+ for(c=0xd800; c<=0xdbff; ++c) {
+ utf16[0]=(UChar)c;
+ for(c2=0xdc00; c2<=0xdfff; ++c2) {
+ utf16[1]=(UChar)c2;
+ if(testcase.set.span(utf16, 2, USET_SPAN_CONTAINED)>0) {
+ set.add(U16_GET_SUPPLEMENTARY(c, c2));
+ }
+ }
+ }
+
+ if(set!=testcase.set) {
+ fprintf(stderr, "error: frozen set != original!\n");
+ }
+ }
+public:
+ static UPerfFunction* get(const UnicodeSetPerformanceTest &testcase) {
+ return new SpanUTF16(testcase);
+ }
+ virtual void call(UErrorCode* pErrorCode) {
+ const UnicodeSet &set=testcase.set;
+ const UChar *s=testcase.getBuffer();
+ int32_t length=testcase.getBufferLen();
+ int32_t count=0;
+ int32_t i=0;
+ UBool tf=FALSE;
+ while(i<length) {
+ i+=set.span(s+i, length-i, (USetSpanCondition)tf);
+ tf=(UBool)(!tf);
+ ++count;
+ }
+ if(count!=testcase.spanCount) {
+ fprintf(stderr, "error: SpanUTF16() count=%ld != %ld=UnicodeSetPerformanceTest.spanCount\n",
+ (long)count, (long)testcase.spanCount);
+ }
+ }
+};
+
+class SpanBackUTF16 : public Command {
+protected:
+ SpanBackUTF16(const UnicodeSetPerformanceTest &testcase) : Command(testcase) {
+ // Verify that the frozen set is equal to the unfrozen one.
+ UnicodeSet set;
+ UChar utf16[2];
+ UChar32 c, c2;
+
+ for(c=0; c<=0xffff; ++c) {
+ utf16[0]=(UChar)c;
+ if(testcase.set.spanBack(utf16, 1, USET_SPAN_CONTAINED)==0) {
+ set.add(c);
+ }
+ }
+ for(c=0xd800; c<=0xdbff; ++c) {
+ utf16[0]=(UChar)c;
+ for(c2=0xdc00; c2<=0xdfff; ++c2) {
+ utf16[1]=(UChar)c2;
+ if(testcase.set.spanBack(utf16, 2, USET_SPAN_CONTAINED)==0) {
+ set.add(U16_GET_SUPPLEMENTARY(c, c2));
+ }
+ }
+ }
+
+ if(set!=testcase.set) {
+ fprintf(stderr, "error: frozen set != original!\n");
+ }
+ }
+public:
+ static UPerfFunction* get(const UnicodeSetPerformanceTest &testcase) {
+ return new SpanBackUTF16(testcase);
+ }
+ virtual void call(UErrorCode* pErrorCode) {
+ const UnicodeSet &set=testcase.set;
+ const UChar *s=testcase.getBuffer();
+ int32_t length=testcase.getBufferLen();
+ int32_t count=0;
+ /*
+ * Get the same spans as with span() where we always start with a not-contained span.
+ * If testcase.spanCount is an odd number, then the last span() was not-contained.
+ * The last spanBack() must be not-contained to match the first span().
+ */
+ UBool tf=(UBool)((testcase.spanCount&1)==0);
+ while(length>0 || !tf) {
+ length=set.spanBack(s, length, (USetSpanCondition)tf);
+ tf=(UBool)(!tf);
+ ++count;
+ }
+ if(count!=testcase.spanCount) {
+ fprintf(stderr, "error: SpanBackUTF16() count=%ld != %ld=UnicodeSetPerformanceTest.spanCount\n",
+ (long)count, (long)testcase.spanCount);
+ }
+ }
+};
+
+class SpanUTF8 : public Command {
+protected:
+ SpanUTF8(const UnicodeSetPerformanceTest &testcase) : Command(testcase) {
+ // Verify that the frozen set is equal to the unfrozen one.
+ UnicodeSet set;
+ char utf8[4];
+ UChar32 c;
+ int32_t length;
+
+ for(c=0; c<=0x10ffff; ++c) {
+ if(c==0xd800) {
+ c=0xe000;
+ }
+ length=0;
+ U8_APPEND_UNSAFE(utf8, length, c);
+ if(testcase.set.spanUTF8(utf8, length, USET_SPAN_CONTAINED)>0) {
+ set.add(c);
+ }
+ }
+ if(set!=testcase.set) {
+ fprintf(stderr, "error: frozen set != original!\n");
+ }
+ }
+public:
+ static UPerfFunction* get(const UnicodeSetPerformanceTest &testcase) {
+ return new SpanUTF8(testcase);
+ }
+ virtual void call(UErrorCode* pErrorCode) {
+ const UnicodeSet &set=testcase.set;
+ const char *s=testcase.utf8;
+ int32_t length=testcase.utf8Length;
+ int32_t count=0;
+ int32_t i=0;
+ UBool tf=FALSE;
+ while(i<length) {
+ i+=set.spanUTF8(s+i, length-i, (USetSpanCondition)tf);
+ tf=(UBool)(!tf);
+ ++count;
+ }
+ if(count!=testcase.spanCount) {
+ fprintf(stderr, "error: SpanUTF8() count=%ld != %ld=UnicodeSetPerformanceTest.spanCount\n",
+ (long)count, (long)testcase.spanCount);
+ }
+ }
+};
+
+class SpanBackUTF8 : public Command {
+protected:
+ SpanBackUTF8(const UnicodeSetPerformanceTest &testcase) : Command(testcase) {
+ // Verify that the frozen set is equal to the unfrozen one.
+ UnicodeSet set;
+ char utf8[4];
+ UChar32 c;
+ int32_t length;
+
+ for(c=0; c<=0x10ffff; ++c) {
+ if(c==0xd800) {
+ c=0xe000;
+ }
+ length=0;
+ U8_APPEND_UNSAFE(utf8, length, c);
+ if(testcase.set.spanBackUTF8(utf8, length, USET_SPAN_CONTAINED)==0) {
+ set.add(c);
+ }
+ }
+ if(set!=testcase.set) {
+ fprintf(stderr, "error: frozen set != original!\n");
+ }
+ }
+public:
+ static UPerfFunction* get(const UnicodeSetPerformanceTest &testcase) {
+ return new SpanBackUTF8(testcase);
+ }
+ virtual void call(UErrorCode* pErrorCode) {
+ const UnicodeSet &set=testcase.set;
+ const char *s=testcase.utf8;
+ int32_t length=testcase.utf8Length;
+ int32_t count=0;
+ /*
+ * Get the same spans as with span() where we always start with a not-contained span.
+ * If testcase.spanCount is an odd number, then the last span() was not-contained.
+ * The last spanBack() must be not-contained to match the first span().
+ */
+ UBool tf=(UBool)((testcase.spanCount&1)==0);
+ while(length>0 || !tf) {
+ length=set.spanBackUTF8(s, length, (USetSpanCondition)tf);
+ tf=(UBool)(!tf);
+ ++count;
+ }
+ if(count!=testcase.spanCount) {
+ fprintf(stderr, "error: SpanBackUTF8() count=%ld != %ld=UnicodeSetPerformanceTest.spanCount\n",
+ (long)count, (long)testcase.spanCount);
+ }
+ }
+};
+
+UPerfFunction* UnicodeSetPerformanceTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* par) {
+ switch (index) {
+ case 0: name = "Contains"; if (exec) return Contains::get(*this); break;
+ case 1: name = "SpanUTF16"; if (exec) return SpanUTF16::get(*this); break;
+ case 2: name = "SpanBackUTF16";if (exec) return SpanBackUTF16::get(*this); break;
+ case 3: name = "SpanUTF8"; if (exec) return SpanUTF8::get(*this); break;
+ case 4: name = "SpanBackUTF8"; if (exec) return SpanBackUTF8::get(*this); break;
+ default: name = ""; break;
+ }
+ return NULL;
+}
+
+int main(int argc, const char *argv[])
+{
+ // Default values for command-line options.
+ options[SET_PATTERN].value = "[:ID_Continue:]";
+ options[FAST_TYPE].value = "slow";
+
+ UErrorCode status = U_ZERO_ERROR;
+ UnicodeSetPerformanceTest test(argc, argv, status);
+
+ if (U_FAILURE(status)){
+ printf("The error is %s\n", u_errorName(status));
+ test.usage();
+ return status;
+ }
+
+ if (test.run() == FALSE){
+ fprintf(stderr, "FAILED: Tests could not be run, please check the "
+ "arguments.\n");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.pl b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.pl
new file mode 100755
index 00000000000..5e984c6fad6
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.pl
@@ -0,0 +1,86 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2005-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"UnicodeSet span()/contains() performance",
+ "headers"=>"Bv Bv0",
+ "operationIs"=>"tested Unicode code point",
+ "passes"=>"3",
+ "time"=>"2",
+ #"outputType"=>"HTML",
+ "dataDir"=>$UDHRDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p;
+if ($OnWindows) {
+ $p = $ICUPathLatest."/unisetperf/$WindowsPlatform/Release/unisetperf.exe";
+} else {
+ $p = $ICUPathLatest."/unisetperf/unisetperf";
+}
+my $pc = "$p Contains";
+my $p16 = "$p SpanUTF16";
+my $p8 = "$p SpanUTF8";
+
+my $tests = {
+ "Contains", ["$pc --type Bv",
+ "$pc --type Bv0"
+ ],
+ "SpanUTF16", ["$p16 --type Bv",
+ "$p16 --type Bv0"
+ ]
+ };
+
+my $dataFiles = {
+ "",
+ [
+ "udhr_eng.txt",
+ "udhr_deu_1996.txt",
+ "udhr_fra.txt",
+ "udhr_rus.txt",
+ "udhr_tha.txt",
+ "udhr_jpn.txt",
+ "udhr_cmn_hans.txt",
+ "udhr_cmn_hant.txt",
+ "udhr_jpn.html"
+ ]
+ };
+
+runTests($options, $tests, $dataFiles);
+
+$options = {
+ "title"=>"UnicodeSet span()/contains() performance",
+ "headers"=>"Bv BvF Bvp BvpF L Bvl",
+ "operationIs"=>"tested Unicode code point",
+ "passes"=>"3",
+ "time"=>"2",
+ #"outputType"=>"HTML",
+ "dataDir"=>$UDHRDataPath,
+ "outputDir"=>"../results"
+ };
+
+$tests = {
+ "SpanUTF8", ["$p8 --type Bv",
+ "$p8 --type BvF",
+ "$p8 --type Bvp",
+ "$p8 --type BvpF",
+ "$p8 --type L",
+ "$p8 --type Bvl"
+ ]
+ };
+
+runTests($options, $tests, $dataFiles);
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.vcxproj
new file mode 100644
index 00000000000..7f594912f61
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/unisetperf/unisetperf.vcxproj
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{E7728E98-0469-AF37-43F4-4529A3D52C6B}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/unisetperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/unisetperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/unisetperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/unisetperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/unisetperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/unisetperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/unisetperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/unisetperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/unisetperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x86\Release/unisetperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/unisetperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/unisetperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/unisetperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x64\Release/unisetperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/unisetperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/unisetperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="unisetperf.cpp" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/usetperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/Makefile.in
new file mode 100644
index 00000000000..3e737304748
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/usetperf
+## Copyright (c) 2001-2006, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/usetperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = usetperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = usetperf.o bitset.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/usetperf/UsetPerf.pl b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/UsetPerf.pl
new file mode 100755
index 00000000000..a60a526b20e
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/UsetPerf.pl
@@ -0,0 +1,56 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2005-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+
+
+my $options = {
+ "title"=>"Uset performance: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"unicode string",
+ "passes"=>"1",
+ "time"=>"2",
+ #"outputType"=>"HTML",
+ "dataDir"=>"Not Using Data Files",
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p1, $p2;
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious."/usetperf/$WindowsPlatform/Release/usetperf.exe";
+ $p2 = $ICUPathLatest."/usetperf/$WindowsPlatform/Release/usetperf.exe";
+} else {
+ $p1 = $ICUPathPrevious."/usetperf/usetperf";
+ $p2 = $ICUPathLatest."/usetperf/usetperf";
+
+}
+
+my $tests = {
+ "titlecase_letter/add", ["$p1 titlecase_letter_add", "$p2 titlecase_letter_add"],
+ "titlecase_letter/contains", ["$p1 titlecase_letter_contains", "$p2 titlecase_letter_contains"],
+ "titlecase_letter/iterator", ["$p1 titlecase_letter_iterator", "$p2 titlecase_letter_iterator"],
+ "unassigned/add", ["$p1 unassigned_add", "$p2 unassigned_add"],
+ "unassigned/contains", ["$p1 unassigned_contains", "$p2 unassigned_contains"],
+ "unassigned/iterator", ["$p1 unassigned_iterator", "$p2 unassigned_iterator"],
+ "pattern1", ["$p1 pattern1", "$p2 pattern1"],
+ "pattern2", ["$p1 pattern2", "$p2 pattern2"],
+ "pattern3", ["$p1 pattern3", "$p2 pattern3"],
+ };
+
+my $dataFiles = {
+ };
+
+runTests($options, $tests, $dataFiles);
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/usetperf/bitset.cpp b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/bitset.cpp
new file mode 100644
index 00000000000..ea5f11b8b2f
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/bitset.cpp
@@ -0,0 +1,63 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2005, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+* 2002-09-20 aliu Created.
+*/
+
+#include "unicode/utypes.h"
+#include "cmemory.h"
+#include "bitset.h"
+
+// TODO: have a separate capacity, so the len can just be set to
+// zero in the clearAll() method, and growth can be smarter.
+
+const int32_t SLOP = 8;
+
+const int32_t BYTES_PER_WORD = sizeof(int32_t);
+
+BitSet::BitSet() {
+ len = SLOP;
+ data = (int32_t*) uprv_malloc(len * BYTES_PER_WORD);
+ clearAll();
+}
+
+BitSet::~BitSet() {
+ uprv_free(data);
+}
+
+UBool BitSet::get(int32_t bitIndex) const {
+ uint32_t longIndex = bitIndex >> 5;
+ int32_t bitInLong = bitIndex & 0x1F;
+ return (longIndex < len) ? (((data[longIndex] >> bitInLong) & 1) != 0)
+ : FALSE;
+}
+
+void BitSet::set(int32_t bitIndex) {
+ uint32_t longIndex = bitIndex >> 5;
+ int32_t bitInLong = bitIndex & 0x1F;
+ if (longIndex >= len) {
+ ensureCapacity(longIndex+1);
+ }
+ data[longIndex] |= (1 << bitInLong);
+}
+
+void BitSet::clearAll() {
+ for (uint32_t i=0; i<len; ++i) data[i] = 0;
+}
+
+void BitSet::ensureCapacity(uint32_t minLen) {
+ uint32_t newLen = len;
+ while (newLen < minLen) newLen <<= 1; // grow exponentially
+ int32_t* newData = (int32_t*) uprv_malloc(newLen * BYTES_PER_WORD);
+ uprv_memcpy(newData, data, len * BYTES_PER_WORD);
+ uprv_free(data);
+ data = newData;
+ int32_t* p = data + len;
+ int32_t* limit = data + newLen;
+ while (p < limit) *p++ = 0;
+ len = newLen;
+}
+
+//eof
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/usetperf/bitset.h b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/bitset.h
new file mode 100644
index 00000000000..3148b1d7070
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/bitset.h
@@ -0,0 +1,38 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2005, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+* 2002-09-20 aliu Created.
+*/
+#ifndef __BITSET_H__
+#define __BITSET_H__
+
+#include "unicode/utypes.h"
+
+/**
+ * A simple, limited clone of the java.util.BitSet.
+ */
+class BitSet {
+
+ uint32_t len;
+ int32_t* data;
+
+ void ensureCapacity(uint32_t minLen);
+
+public:
+
+ BitSet();
+ ~BitSet();
+
+ UBool get(int32_t bitIndex) const;
+
+ void set(int32_t bitIndex);
+
+ // Non-java
+ void clearAll();
+
+ // TODO add other methods as needed.
+};
+
+#endif
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.cpp
new file mode 100644
index 00000000000..c75406a1ec4
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.cpp
@@ -0,0 +1,143 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2005, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+* 2005Nov22 Raymond Yang
+*
+* migrate old test created by aliu to perf test framework.
+*/
+
+#include <stdio.h>
+
+#include "unicode/utypes.h"
+#include "unicode/uniset.h"
+#include "unicode/uchar.h"
+#include "unicode/usetiter.h"
+#include "bitset.h"
+#include "unicode/uperf.h"
+
+static const char* PAT[] = {
+ "['A-Za-z\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6\\u00D9-\\u00DD\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6\\u00F9-\\u00FD\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130\\u0134-\\u0137\\u0139-\\u013E\\u0143-\\u0148\\u014C-\\u0151\\u0154-\\u0165\\u0168-\\u017E\\u01A0-\\u01A1\\u01AF-\\u01B0\\u01CD-\\u01DC\\u01DE-\\u01E1\\u01E6-\\u01ED\\u01F0\\u01F4-\\u01F5\\u01F8-\\u01FB\\u0200-\\u021B\\u021E-\\u021F\\u0226-\\u0233\\u1E00-\\u1E99\\u1EA0-\\u1EF9\\u212A-\\u212B]",
+
+ "['.0-9A-Za-z~\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6\\u00D9-\\u00DD\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6\\u00F9-\\u00FD\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130\\u0134-\\u0137\\u0139-\\u013E\\u0143-\\u0148\\u014C-\\u0151\\u0154-\\u0165\\u0168-\\u017E\\u01A0-\\u01A1\\u01AF-\\u01B0\\u01CD-\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01ED\\u01F0\\u01F4-\\u01F5\\u01F8-\\u021B\\u021E-\\u021F\\u0226-\\u0233\\u0301\\u0303-\\u0304\\u0306-\\u0307\\u0310\\u0314-\\u0315\\u0323\\u0325\\u0331\\u0341\\u0344\\u0385-\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u0390\\u03AC-\\u03B0\\u03CC-\\u03CE\\u03D3\\u0403\\u040C\\u040E\\u0419\\u0439\\u0453\\u045C\\u045E\\u04C1-\\u04C2\\u04D0-\\u04D1\\u04D6-\\u04D7\\u04E2-\\u04E3\\u04EE-\\u04EF\\u1E00-\\u1E99\\u1EA0-\\u1EF9\\u1F01\\u1F03-\\u1F05\\u1F07\\u1F09\\u1F0B-\\u1F0D\\u1F0F\\u1F11\\u1F13-\\u1F15\\u1F19\\u1F1B-\\u1F1D\\u1F21\\u1F23-\\u1F25\\u1F27\\u1F29\\u1F2B-\\u1F2D\\u1F2F\\u1F31\\u1F33-\\u1F35\\u1F37\\u1F39\\u1F3B-\\u1F3D\\u1F3F\\u1F41\\u1F43-\\u1F45\\u1F49\\u1F4B-\\u1F4D\\u1F51\\u1F53-\\u1F55\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F61\\u1F63-\\u1F65\\u1F67\\u1F69\\u1F6B-\\u1F6D\\u1F6F\\u1F71\\u1F73\\u1F75\\u1F77\\u1F79\\u1F7B\\u1F7D\\u1F81\\u1F83-\\u1F85\\u1F87\\u1F89\\u1F8B-\\u1F8D\\u1F8F\\u1F91\\u1F93-\\u1F95\\u1F97\\u1F99\\u1F9B-\\u1F9D\\u1F9F\\u1FA1\\u1FA3-\\u1FA5\\u1FA7\\u1FA9\\u1FAB-\\u1FAD\\u1FAF-\\u1FB1\\u1FB4\\u1FB8-\\u1FB9\\u1FBB\\u1FC4\\u1FC9\\u1FCB\\u1FCE\\u1FD0-\\u1FD1\\u1FD3\\u1FD8-\\u1FD9\\u1FDB\\u1FDE\\u1FE0-\\u1FE1\\u1FE3\\u1FE5\\u1FE8-\\u1FE9\\u1FEB-\\u1FEC\\u1FEE\\u1FF4\\u1FF9\\u1FFB\\u212A-\\u212B\\uE04D\\uE064]",
+
+ "[\\u0901-\\u0903\\u0905-\\u0939\\u093C-\\u094D\\u0950-\\u0954\\u0958-\\u096F]",
+};
+
+class CmdPattern : public UPerfFunction {
+private:
+ UnicodeString pat;
+ UnicodeSet set;
+public:
+ CmdPattern(const char * pattern):pat(pattern,""){
+ }
+ virtual long getOperationsPerIteration(){
+ return 1;
+ }
+ virtual void call(UErrorCode* pErrorCode){
+ set.applyPattern(pat, *pErrorCode);
+ }
+};
+
+class CmdOp : public UPerfFunction {
+private:
+ UnicodeSet us;
+ BitSet bs;
+ int32_t total;
+ void (CmdOp::*op) ();
+public:
+ CmdOp(UCharCategory prop, void (CmdOp::*op)()):op(op){
+ total = 0;
+ bs.clearAll();
+ for (UChar32 cp=0; cp<0x110000; ++cp) {
+ if (u_charType(cp) == prop) {
+ bs.set((int32_t) cp);
+ ++total;
+ }
+ }
+ }
+ virtual long getOperationsPerIteration(){
+ return total;
+ }
+
+ virtual void call(UErrorCode* pErrorCode){
+ (this->*op)();
+ }
+ void add (void){
+ us.clear();
+ for (UChar32 cp=0; cp<0x110000; ++cp) {
+ if (bs.get((int32_t) cp)) {
+ us.add(cp);
+ }
+ }
+ }
+
+ void contains(void){
+ int32_t temp = 0;
+ us.clear();
+ for (UChar32 cp=0; cp<0x110000; ++cp) {
+ if (us.contains(cp)) {
+ temp += cp;
+ }
+ }
+ }
+
+ void iterator(void){
+ int32_t temp = 0;
+ UnicodeSetIterator uit(us);
+ while (uit.next()) {
+ temp += uit.getCodepoint();
+ }
+ }
+};
+
+class UsetPerformanceTest : public UPerfTest{
+public:
+ UsetPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status) :UPerfTest(argc,argv,status){
+ }
+
+ virtual UPerfFunction* runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ){
+ switch (index) {
+ case 0: name = "titlecase_letter_add";
+ if (exec) return new CmdOp(U_TITLECASE_LETTER, &CmdOp::add) ; break;
+ case 1: name = "titlecase_letter_contains";
+ if (exec) return new CmdOp(U_TITLECASE_LETTER, &CmdOp::contains) ; break;
+ case 2: name = "titlecase_letter_iterator";
+ if (exec) return new CmdOp(U_TITLECASE_LETTER, &CmdOp::iterator) ; break;
+ case 3: name = "unassigned_add";
+ if (exec) return new CmdOp(U_UNASSIGNED, &CmdOp::add) ; break;
+ case 4: name = "unassigned_contains";
+ if (exec) return new CmdOp(U_UNASSIGNED, &CmdOp::contains) ; break;
+ case 5: name = "unassigned_iterator";
+ if (exec) return new CmdOp(U_UNASSIGNED, &CmdOp::iterator) ; break;
+ case 6: name = "pattern1";
+ if (exec) return new CmdPattern(PAT[0]) ; break;
+ case 7: name = "pattern2";
+ if (exec) return new CmdPattern(PAT[1]) ; break;
+ case 8: name = "pattern3";
+ if (exec) return new CmdPattern(PAT[2]) ; break;
+ default: name = ""; break;
+ }
+ return NULL;
+ }
+};
+
+
+int main(int argc, const char *argv[])
+{
+ UErrorCode status = U_ZERO_ERROR;
+ UsetPerformanceTest test(argc, argv, status);
+
+ if (U_FAILURE(status)){
+ printf("The error is %s\n", u_errorName(status));
+ return status;
+ }
+
+ if (test.run() == FALSE){
+ fprintf(stderr, "FAILED: Tests could not be run please check the "
+ "arguments.\n");
+ return -1;
+ }
+ return 0;
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.vcxproj
new file mode 100644
index 00000000000..9b29383c9d4
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.vcxproj
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{EC5DF28A-D789-4C46-A55D-0AD55B50ECE8}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/usetperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x86\Release/usetperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;winmm.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/usetperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/usetperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/usetperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x64\Release/usetperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;winmm.lib;icutest.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/usetperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/usetperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/usetperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/usetperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/usetperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/usetperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/usetperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/usetperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/usetperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/usetperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="bitset.cpp">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <ClCompile Include="usetperf.cpp">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="bitset.h" />
+ <ClInclude Include="timer.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.vcxproj.filters
new file mode 100644
index 00000000000..1c68e99de67
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/usetperf/usetperf.vcxproj.filters
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{2303401f-473e-400a-9477-6a3d6b035e45}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{036195f0-99c1-4d32-a10e-b69dc964938d}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{30727046-2b19-40ed-b408-0c40a845e7b4}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="bitset.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="usetperf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="bitset.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="timer.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/Makefile.in
new file mode 100644
index 00000000000..654d4a2f6ea
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/ustrperf
+## Copyright (c) 2001-2008, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/ustrperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = stringperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = stringperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf.pl b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf.pl
new file mode 100755
index 00000000000..0bcdaa0b4f8
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf.pl
@@ -0,0 +1,75 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2003-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"Unicode String performance: ICU ".$ICULatestVersion." vs. STDLib",
+ "headers"=>"StdLib ICU".$ICULatestVersion,
+ "operationIs"=>"Unicode String",
+ "timePerOperationIs"=>"Time per Unicode String",
+ "passes"=>"5",
+ "time"=>"2",
+ #"outputType"=>"HTML",
+ "dataDir"=>$CollationDataPath,
+ "outputDir"=>"../results"
+ };
+
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p;
+if ($OnWindows) {
+ $p = $ICUPathLatest."/ustrperf/$WindowsPlatform/Release/stringperf.exe -l -u";
+} else {
+ $p = $ICUPathLatest."/ustrperf/stringperf -l -u";
+}
+
+my $tests = {
+"Object Construction(empty string)", ["$p TestStdLibCtor" , "$p TestCtor" ],
+"Object Construction(single char)", ["$p TestStdLibCtor1" , "$p TestCtor1" ],
+"Object Construction(another string)", ["$p TestStdLibCtor2" , "$p TestCtor2" ],
+"Object Construction(string literal)", ["$p TestStdLibCtor3" , "$p TestCtor3" ],
+"String Assignment(helper)", ["$p TestStdLibAssign" , "$p TestAssign" ],
+"String Assignment(string literal)", ["$p TestStdLibAssign1" , "$p TestAssign1" ],
+"String Assignment(another string)", ["$p TestStdLibAssign2" , "$p TestAssign2" ],
+"Get String or Character", ["$p TestStdLibGetch" , "$p TestGetch" ],
+"Concatenation", ["$p TestStdLibCatenate" , "$p TestCatenate" ],
+"String Scanning(char)", ["$p TestStdLibScan" , "$p TestScan" ],
+"String Scanning(string)", ["$p TestStdLibScan1" , "$p TestScan1" ],
+"String Scanning(char set)", ["$p TestStdLibScan2" , "$p TestScan2" ],
+};
+
+my $dataFiles = {
+ "",
+ [
+ "TestNames_Asian.txt",
+ "TestNames_Chinese.txt",
+ "TestNames_Simplified_Chinese.txt",
+ "TestNames_Japanese_h.txt",
+ "TestNames_Japanese_k.txt",
+ "TestNames_Korean.txt",
+ "TestNames_Latin.txt",
+ "TestNames_SerbianSH.txt",
+ "TestNames_SerbianSR.txt",
+ "TestNames_Thai.txt",
+ "Testnames_Russian.txt",
+ "th18057.txt",
+ ]
+ };
+
+runTests($options, $tests, $dataFiles);
+
+# The whole command line would be something like:
+# stringperf.exe -p 5 -t 2 -f c:/src/data/perf/TestNames_Asian.txt -l -u TestStdLibCatenate \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf_r.pl b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf_r.pl
new file mode 100644
index 00000000000..f21c366266e
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/StringPerf_r.pl
@@ -0,0 +1,79 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2002-2008, International Business Machines
+# * Corporation and others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+use lib '../perldriver';
+
+require "../perldriver/Common.pl";
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"Unicode String performance regression: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"Unicode String",
+ "passes"=>"10",
+ "time"=>"5",
+ #"outputType"=>"HTML",
+ "dataDir"=>$CollationDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+
+my $p1; # Previous
+my $p2; # Latest
+
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious."/ustrperf/$WindowsPlatform/Release/stringperf.exe -b -u"; # Previous
+ $p2 = $ICUPathLatest."/ustrperf/$WindowsPlatform/Release/stringperf.exe -b -u"; # Latest
+} else {
+ $p1 = $ICUPathPrevious."/ustrperf/stringperf -b -u"; # Previous
+ $p2 = $ICUPathLatest."/ustrperf/stringperf -b -u"; # Latest
+}
+
+my $dataFiles = {
+ "",
+ [
+ "TestNames_Asian.txt",
+ "TestNames_Chinese.txt",
+ "TestNames_Japanese.txt",
+ "TestNames_Japanese_h.txt",
+ "TestNames_Japanese_k.txt",
+ "TestNames_Korean.txt",
+ "TestNames_Latin.txt",
+ "TestNames_SerbianSH.txt",
+ "TestNames_SerbianSR.txt",
+ "TestNames_Thai.txt",
+ "Testnames_Russian.txt",
+ "th18057.txt",
+ "thesis.txt",
+ "vfear11a.txt",
+ ]
+ };
+
+
+my $tests = {
+"Object Construction(empty string)", ["$p1 TestCtor" , "$p2 TestCtor" ],
+"Object Construction(single char)", ["$p1 TestCtor1" , "$p2 TestCtor1" ],
+"Object Construction(another string)", ["$p1 TestCtor2" , "$p2 TestCtor2" ],
+"Object Construction(string literal)", ["$p1 TestCtor3" , "$p2 TestCtor3" ],
+"String Assignment(helper)", ["$p1 TestAssign" , "$p2 TestAssign" ],
+"String Assignment(string literal)", ["$p1 TestAssign1" , "$p2 TestAssign1" ],
+"String Assignment(another string)", ["$p1 TestAssign2" , "$p2 TestAssign2" ],
+"Get String or Character", ["$p1 TestGetch" , "$p2 TestGetch" ],
+"Concatenation", ["$p1 TestCatenate" , "$p2 TestCatenate" ],
+"String Scanning(char)", ["$p1 TestScan" , "$p2 TestScan" ],
+"String Scanning(string)", ["$p1 TestScan1" , "$p2 TestScan1" ],
+"String Scanning(char set)", ["$p1 TestScan2" , "$p2 TestScan2" ],
+};
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.cpp
new file mode 100644
index 00000000000..342e060aa8c
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.cpp
@@ -0,0 +1,377 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (C) 2002-2006 International Business Machines Corporation
+ * and others. All Rights Reserved.
+ *
+ ********************************************************************/
+/*****************************************************************************
+* File stringperf.cpp
+*
+* Modification History:
+* Name Description
+* Doug Wang Second version
+* Doug Wang First Version
+******************************************************************************
+*/
+
+/**
+ * This program tests UnicodeString performance.
+ * APIs tested: UnicodeString
+ * ICU4C
+ * Windows 2000/XP, Linux
+ */
+
+#include "stringperf.h"
+
+
+int main(int argc, const char *argv[])
+{
+ UErrorCode status = U_ZERO_ERROR;
+
+ bCatenatePrealloc=TRUE;
+
+ StringPerformanceTest test(argc, argv, status);
+ if (U_FAILURE(status)){
+ return status;
+ }
+
+ int loops = LOOPS;
+ if (bCatenatePrealloc) {
+ int to_alloc = loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN);
+ catICU = new UnicodeString(to_alloc,'a',0);
+ //catICU = new UnicodeString();
+
+ catStd = new stlstring();
+ catStd -> reserve(loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN));
+ //catStd -> reserve(110000000);
+ } else {
+ catICU = new UnicodeString();
+ catStd = new stlstring();
+ }
+
+ if (test.run() == FALSE){
+ fprintf(stderr, "FAILED: Tests could not be run please check the "
+ "arguments.\n");
+ return -1;
+ }
+
+ delete catICU;
+ delete catStd;
+ return 0;
+}
+
+StringPerformanceTest::StringPerformanceTest(int32_t argc, const char *argv[],
+ UErrorCode &status)
+ : UPerfTest(argc, argv, status)
+{
+ filelines_=NULL;
+ StrBuffer=NULL;
+ StrBufferLen=0;
+
+ int32_t len =0;
+
+ if (status== U_ILLEGAL_ARGUMENT_ERROR){
+ //fprintf(stderr,gUsageString, "stringperf");
+ return;
+ }
+ if (U_FAILURE(status)){
+ fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n",
+ u_errorName(status));
+ return;
+ }
+
+
+ if(line_mode){
+ ULine* filelines = getLines(status);
+ if(U_FAILURE(status)){
+ fprintf(stderr, "FAILED to read lines from file and create UPerfTest object. Error: %s\n", u_errorName(status));
+ return;
+ }
+
+ filelines_ = new ULine[numLines];
+ for (int i =0; i < numLines; i++) {
+ len = filelines[i].len;
+ filelines_[i].name = new UChar[len];
+ filelines_[i].len = len;
+ memcpy(filelines_[i].name, filelines[i].name, len * U_SIZEOF_UCHAR);
+ }
+
+ }else if(bulk_mode){
+ int32_t srcLen = 0;
+ const UChar* src = getBuffer(srcLen,status);
+ if(U_FAILURE(status)){
+ fprintf(stderr, "FAILED to read buffer from file and create UPerfTest object. Error: %s\n", u_errorName(status));
+ return;
+ }
+
+ StrBuffer = new UChar[srcLen];
+ StrBufferLen = srcLen;
+ memcpy(StrBuffer, src, srcLen * U_SIZEOF_UCHAR);
+
+ }
+}
+
+StringPerformanceTest::~StringPerformanceTest()
+{
+ delete[] filelines_;
+ delete[] StrBuffer;
+}
+
+UPerfFunction* StringPerformanceTest::runIndexedTest(int32_t index, UBool exec,
+ const char *&name,
+ char* par)
+{
+ switch (index) {
+ TESTCASE(0, TestCtor);
+ TESTCASE(1, TestCtor1);
+ TESTCASE(2, TestCtor2);
+ TESTCASE(3, TestCtor3);
+ TESTCASE(4, TestAssign);
+ TESTCASE(5, TestAssign1);
+ TESTCASE(6, TestAssign2);
+ TESTCASE(7, TestGetch);
+ TESTCASE(8, TestCatenate);
+ TESTCASE(9, TestScan);
+ TESTCASE(10, TestScan1);
+ TESTCASE(11, TestScan2);
+
+ TESTCASE(12, TestStdLibCtor);
+ TESTCASE(13, TestStdLibCtor1);
+ TESTCASE(14, TestStdLibCtor2);
+ TESTCASE(15, TestStdLibCtor3);
+ TESTCASE(16, TestStdLibAssign);
+ TESTCASE(17, TestStdLibAssign1);
+ TESTCASE(18, TestStdLibAssign2);
+ TESTCASE(19, TestStdLibGetch);
+ TESTCASE(20, TestStdLibCatenate);
+ TESTCASE(21, TestStdLibScan);
+ TESTCASE(22, TestStdLibScan1);
+ TESTCASE(23, TestStdLibScan2);
+
+ default:
+ name = "";
+ return NULL;
+ }
+ return NULL;
+}
+
+UPerfFunction* StringPerformanceTest::TestCtor()
+{
+ if (line_mode) {
+ return new StringPerfFunction(ctor, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(ctor, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestCtor1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(ctor1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(ctor1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestCtor2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(ctor2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(ctor2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestCtor3()
+{
+ if (line_mode) {
+ return new StringPerfFunction(ctor3, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(ctor3, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestAssign()
+{
+ if (line_mode) {
+ return new StringPerfFunction(assign, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(assign, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestAssign1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(assign1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(assign1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestAssign2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(assign2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(assign2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+
+UPerfFunction* StringPerformanceTest::TestGetch()
+{
+ if (line_mode) {
+ return new StringPerfFunction(getch, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(getch, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestCatenate()
+{
+ if (line_mode) {
+ return new StringPerfFunction(catenate, filelines_, numLines, uselen);
+ } else {
+ //return new StringPerfFunction(catenate, buffer, bufferLen, uselen);
+ return new StringPerfFunction(catenate, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestScan()
+{
+ if (line_mode) {
+ return new StringPerfFunction(scan, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(scan, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestScan1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(scan1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(scan1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestScan2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(scan2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(scan2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibCtor()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibCtor, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibCtor, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibCtor1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibCtor1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibCtor1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibCtor2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibCtor2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibCtor2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibCtor3()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibCtor3, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibCtor3, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibAssign()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibAssign, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibAssign, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibAssign1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibAssign1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibAssign1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibAssign2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibAssign2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibAssign2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibGetch()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibGetch, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibGetch, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibCatenate()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibCatenate, filelines_, numLines, uselen);
+ } else {
+ //return new StringPerfFunction(StdLibCatenate, buffer, bufferLen, uselen);
+ return new StringPerfFunction(StdLibCatenate, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibScan()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibScan, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibScan, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibScan1()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibScan1, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibScan1, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+UPerfFunction* StringPerformanceTest::TestStdLibScan2()
+{
+ if (line_mode) {
+ return new StringPerfFunction(StdLibScan2, filelines_, numLines, uselen);
+ } else {
+ return new StringPerfFunction(StdLibScan2, StrBuffer, StrBufferLen, uselen);
+ }
+}
+
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.h b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.h
new file mode 100644
index 00000000000..84d6493a405
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.h
@@ -0,0 +1,549 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2006, International Business Machines
+* Corporation and others. All Rights Reserved.
+**********************************************************************
+*/
+#ifndef _STRINGPERF_H
+#define _STRINGPERF_H
+
+#include <string>
+
+#include "unicode/utypes.h"
+#include "unicode/unistr.h"
+
+#include "unicode/uperf.h"
+
+typedef std::wstring stlstring;
+
+/* Define all constants for test case operations */
+#define MAXNUMLINES 40000 //Max number of lines in a test data file
+#define MAXSRCLEN 20 //Max length of one line. maybe a larger number, but it need more mem
+#define LOOPS 100 //Iterations
+//#define LOOPS 10
+#define catenate_STRLEN 2
+
+const UChar uTESTCHAR1 = 'a';
+const wchar_t wTESTCHAR1 = 'a';
+const UnicodeString uEMPTY;
+const stlstring sEMPTY;
+UnicodeString unistr;
+stlstring stlstr;
+// Simulate construction with a single-char string for basic_string
+wchar_t simulate[2]={wTESTCHAR1, 0};
+
+/* Constants for scan operation */
+U_STRING_DECL(scan_STRING, "Dot. 123. Some more data.", 25);
+const UnicodeString uScan_STRING=UnicodeString(scan_STRING);
+const stlstring sScan_STRING=stlstring(L"Dot. 123. Some more data.");
+
+/* global variables or constants for concatenation operation */
+U_STRING_DECL(uCatenate_STR, "!!", 2);
+const stlstring sCatenate_STR=stlstring(L"!!");
+static UnicodeString* catICU;
+static stlstring* catStd;
+UBool bCatenatePrealloc;
+
+/* type defines */
+typedef struct WLine WLine;
+struct WLine {
+ wchar_t name[100];
+ int32_t len;
+}; //struct to store one line of wchar_t string
+
+enum FnType { Fn_ICU, Fn_STD };
+typedef FnType FnType;
+typedef void (*ICUStringPerfFn)(const UChar* src,int32_t srcLen, UnicodeString s0);
+typedef void (*StdStringPerfFn)(const wchar_t* src,int32_t srcLen, stlstring s0);
+
+
+class StringPerfFunction : public UPerfFunction
+{
+public:
+
+ virtual long getEventsPerIteration(){
+ int loops = LOOPS;
+ if (catICU) { delete catICU;}
+ if (catStd) { delete catStd;}
+
+ if (bCatenatePrealloc) {
+
+ int to_alloc = loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN);
+ catICU = new UnicodeString(to_alloc,'a',0);
+ //catICU = new UnicodeString();
+
+ catStd = new stlstring();
+ //catStd -> reserve(loops * MAXNUMLINES * (MAXSRCLEN + catenate_STRLEN));
+ catStd -> reserve(110000000);
+ } else {
+ catICU = new UnicodeString();
+ catStd = new stlstring();
+ }
+
+ return -1;
+ }
+
+ virtual void call(UErrorCode* status)
+ {
+ if(line_mode_==TRUE){
+ if(uselen_){
+ for(int32_t i = 0; i< numLines_; i++){
+ if (fnType_==Fn_ICU) {
+ (*fn1_)(lines_[i].name,lines_[i].len,uS0_[i]);
+ } else {
+ (*fn2_)(wlines_[i].name,wlines_[i].len,sS0_[i]);
+ }
+ }
+ }else{
+ for(int32_t i = 0; i< numLines_; i++){
+ if (fnType_==Fn_ICU) {
+ (*fn1_)(lines_[i].name,-1,uS0_[i]);
+ } else {
+ (*fn2_)(wlines_[i].name,-1,sS0_[i]);
+ }
+ }
+ }
+ }else{
+ if(uselen_){
+ if (fnType_==Fn_ICU) {
+ (*fn1_)(src_,srcLen_,*ubulk_);
+ } else {
+ (*fn2_)(wsrc_,wsrcLen_,*sbulk_);
+ }
+ }else{
+ if (fnType_==Fn_ICU) {
+ (*fn1_)(src_,-1,*ubulk_);
+ } else {
+ (*fn2_)(wsrc_,-1,*sbulk_);
+ }
+ }
+ }
+ }
+
+ virtual long getOperationsPerIteration()
+ {
+ if(line_mode_==TRUE){
+ return numLines_;
+ }else{
+ return 1;
+ }
+ }
+
+ StringPerfFunction(ICUStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
+ {
+
+ fn1_ = func;
+ lines_=srcLines;
+ wlines_=NULL;
+ numLines_=srcNumLines;
+ uselen_=uselen;
+ line_mode_=TRUE;
+ src_ = NULL;
+ srcLen_ = 0;
+ wsrc_ = NULL;
+ wsrcLen_ = 0;
+ fnType_ = Fn_ICU;
+
+ uS0_=new UnicodeString[numLines_];
+ for(int32_t i=0; i<numLines_; i++) {
+ uS0_[i]=UnicodeString(lines_[i].name, lines_[i].len);
+ }
+ sS0_=NULL;
+ ubulk_=NULL;
+ sbulk_=NULL;
+ }
+
+ StringPerfFunction(StdStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
+ {
+
+ fn2_ = func;
+ lines_=srcLines;
+ wlines_=NULL;
+ numLines_=srcNumLines;
+ uselen_=uselen;
+ line_mode_=TRUE;
+ src_ = NULL;
+ srcLen_ = 0;
+ wsrc_ = NULL;
+ wsrcLen_ = 0;
+ fnType_ = Fn_STD;
+
+ uS0_=NULL;
+ ubulk_=NULL;
+ sbulk_=NULL;
+
+ //fillin wlines_[], sS0_[]
+ prepareLinesForStd();
+ }
+
+ StringPerfFunction(ICUStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
+ {
+
+ fn1_ = func;
+ lines_=NULL;
+ wlines_=NULL;
+ numLines_=0;
+ uselen_=uselen;
+ line_mode_=FALSE;
+ src_ = new UChar[sourceLen];
+ memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
+ srcLen_ = sourceLen;
+ wsrc_ = NULL;
+ wsrcLen_ = 0;
+ fnType_ = Fn_ICU;
+
+ uS0_=NULL;
+ sS0_=NULL;
+ ubulk_=new UnicodeString(src_,srcLen_);
+ sbulk_=NULL;
+ }
+
+ StringPerfFunction(StdStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
+ {
+
+ fn2_ = func;
+ lines_=NULL;
+ wlines_=NULL;
+ numLines_=0;
+ uselen_=uselen;
+ line_mode_=FALSE;
+ src_ = new UChar[sourceLen];
+ memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
+ srcLen_ = sourceLen;
+ fnType_ = Fn_STD;
+
+ uS0_=NULL;
+ sS0_=NULL;
+ ubulk_=NULL;
+
+ //fillin wsrc_, sbulk_
+ prepareBulkForStd();
+
+ }
+
+ ~StringPerfFunction()
+ {
+ //free(src_);
+ free(wsrc_);
+ delete[] src_;
+ delete ubulk_;
+ delete sbulk_;
+ delete[] uS0_;
+ delete[] sS0_;
+ delete[] wlines_;
+ }
+
+private:
+ void prepareLinesForStd(void)
+ {
+ UErrorCode err=U_ZERO_ERROR;
+
+ wlines_=new WLine[numLines_];
+ wchar_t ws[100];
+ int32_t wcap = sizeof(ws) / sizeof(*ws);
+ int32_t wl;
+ wchar_t* wcs;
+
+ sS0_=new stlstring[numLines_];
+ for(int32_t i=0; i<numLines_; i++) {
+ if(uselen_) {
+ wcs = u_strToWCS(ws, wcap, &wl, lines_[i].name, lines_[i].len, &err);
+ memcpy(wlines_[i].name, wcs, wl * sizeof(wchar_t));
+ wlines_[i].len = wl;
+ sS0_[i]=stlstring(wlines_[i].name, wlines_[i].len);
+ } else {
+ wcs = u_strToWCS(ws, wcap, &wl, lines_[i].name, lines_[i].len-1, &err);
+ memcpy(wlines_[i].name, wcs, wl*sizeof(wchar_t));
+ wlines_[i].len = wl;
+ sS0_[i]=stlstring(wlines_[i].name, wlines_[i].len+1);
+ }
+
+ if (U_FAILURE(err)) {
+ return;
+ }
+ }
+
+ }
+
+ void prepareBulkForStd(void)
+ {
+ UErrorCode err=U_ZERO_ERROR;
+
+ const UChar* uSrc = src_;
+ int32_t uSrcLen = srcLen_;
+ wchar_t* wDest = NULL;
+ int32_t wDestLen = 0;
+ int32_t reqLen= 0 ;
+
+ if(uselen_) {
+ /* pre-flight*/
+ u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen,&err);
+
+ if(err == U_BUFFER_OVERFLOW_ERROR){
+ err=U_ZERO_ERROR;
+ wDest =(wchar_t*) malloc(sizeof(wchar_t) * (reqLen));
+ wDestLen = reqLen;
+ u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen,&err);
+ }
+
+ if (U_SUCCESS(err)) {
+ wsrc_ = wDest;
+ wsrcLen_ = wDestLen;
+ sbulk_=new stlstring(wsrc_,wsrcLen_);
+ }
+
+ } else {
+ /* pre-flight*/
+ u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen-1,&err);
+
+ if(err == U_BUFFER_OVERFLOW_ERROR){
+ err=U_ZERO_ERROR;
+ wDest =(wchar_t*) malloc(sizeof(wchar_t) * (reqLen+1));
+ wDestLen = reqLen+1;
+ u_strToWCS(wDest,wDestLen,&reqLen,uSrc,uSrcLen-1,&err);
+ }
+
+ if (U_SUCCESS(err)) {
+ wsrc_ = wDest;
+ wsrcLen_ = wDestLen;
+ sbulk_=new stlstring(wsrc_);
+ }
+ }
+
+ //free(wDest);
+ }
+
+
+private:
+ ICUStringPerfFn fn1_;
+ StdStringPerfFn fn2_;
+
+ ULine* lines_;
+ WLine* wlines_;
+ int32_t numLines_;
+
+ UBool uselen_;
+ UChar* src_;
+ int32_t srcLen_;
+ wchar_t* wsrc_;
+ int32_t wsrcLen_;
+ UBool line_mode_;
+
+ //added for preparing testing data
+ UnicodeString* uS0_;
+ stlstring* sS0_;
+ UnicodeString* ubulk_;
+ stlstring* sbulk_;
+ FnType fnType_;
+};
+
+
+class StringPerformanceTest : public UPerfTest
+{
+public:
+ StringPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
+ ~StringPerformanceTest();
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
+ const char *&name,
+ char *par = NULL);
+ UPerfFunction* TestCtor();
+ UPerfFunction* TestCtor1();
+ UPerfFunction* TestCtor2();
+ UPerfFunction* TestCtor3();
+ UPerfFunction* TestAssign();
+ UPerfFunction* TestAssign1();
+ UPerfFunction* TestAssign2();
+ UPerfFunction* TestGetch();
+ UPerfFunction* TestCatenate();
+ UPerfFunction* TestScan();
+ UPerfFunction* TestScan1();
+ UPerfFunction* TestScan2();
+
+ UPerfFunction* TestStdLibCtor();
+ UPerfFunction* TestStdLibCtor1();
+ UPerfFunction* TestStdLibCtor2();
+ UPerfFunction* TestStdLibCtor3();
+ UPerfFunction* TestStdLibAssign();
+ UPerfFunction* TestStdLibAssign1();
+ UPerfFunction* TestStdLibAssign2();
+ UPerfFunction* TestStdLibGetch();
+ UPerfFunction* TestStdLibCatenate();
+ UPerfFunction* TestStdLibScan();
+ UPerfFunction* TestStdLibScan1();
+ UPerfFunction* TestStdLibScan2();
+
+private:
+ long COUNT_;
+ ULine* filelines_;
+ UChar* StrBuffer;
+ int32_t StrBufferLen;
+
+};
+
+
+inline void ctor(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UnicodeString a;
+}
+
+inline void ctor1(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UnicodeString b(uTESTCHAR1);
+}
+
+inline void ctor2(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UnicodeString c(uEMPTY);
+}
+
+inline void ctor3(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UnicodeString d(src,srcLen);
+}
+
+inline UnicodeString icu_assign_helper(const UChar* src,int32_t srcLen)
+{
+ if (srcLen==-1) { return src;}
+ else { return UnicodeString(src, srcLen);}
+}
+
+inline void assign(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ unistr = icu_assign_helper(src,srcLen);
+}
+
+inline void assign1(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ unistr.setTo(src, srcLen);
+}
+
+inline void assign2(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ unistr = s0;
+}
+
+inline void getch(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ s0.charAt(0);
+}
+
+
+inline void catenate(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UTimer mystart, mystop;
+ utimer_getTime(&mystart);
+
+ *catICU += s0;
+
+ utimer_getTime(&mystop);
+ double mytime = utimer_getDeltaSeconds(&mystart,&mystop);
+ printf("\nmytime=%f \n", mytime);
+
+ *catICU += uCatenate_STR;
+}
+
+volatile int scan_idx;
+U_STRING_DECL(SCAN1, "123", 3);
+
+inline void scan(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UChar c='.';
+ scan_idx = uScan_STRING.indexOf(c);
+}
+
+inline void scan1(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ scan_idx = uScan_STRING.indexOf(SCAN1,3);
+}
+
+inline void scan2(const UChar* src,int32_t srcLen, UnicodeString s0)
+{
+ UChar c1='s';
+ UChar c2='m';
+ scan_idx = uScan_STRING.indexOf(c1);
+ scan_idx = uScan_STRING.indexOf(c2);
+}
+
+
+inline void StdLibCtor(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ stlstring a;
+}
+
+inline void StdLibCtor1(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ stlstring b(simulate);
+}
+
+inline void StdLibCtor2(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ stlstring c(sEMPTY);
+}
+
+inline void StdLibCtor3(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ if (srcLen==-1) {
+ stlstring d(src);
+ }else {
+ stlstring d(src, srcLen);
+ }
+}
+
+inline stlstring stl_assign_helper(const wchar_t* src,int32_t srcLen)
+{
+ if (srcLen==-1) { return src;}
+ else { return stlstring(src, srcLen);}
+}
+
+inline void StdLibAssign(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ stlstr = stl_assign_helper(src,srcLen);
+}
+
+inline void StdLibAssign1(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ if (srcLen==-1) { stlstr=src;}
+ else { stlstr.assign(src, srcLen);}
+}
+
+inline void StdLibAssign2(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ stlstr=s0;
+}
+
+inline void StdLibGetch(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ s0.at(0);
+}
+
+inline void StdLibCatenate(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ UTimer mystart, mystop;
+ utimer_getTime(&mystart);
+
+ *catStd += s0;
+ *catStd += sCatenate_STR;
+
+ utimer_getTime(&mystop);
+ double mytime = utimer_getDeltaSeconds(&mystart,&mystop);
+ printf("\nmytime=%f \n", mytime);
+
+}
+
+inline void StdLibScan(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ scan_idx = (int) sScan_STRING.find('.');
+}
+
+inline void StdLibScan1(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ scan_idx = (int) sScan_STRING.find(L"123");
+}
+
+inline void StdLibScan2(const wchar_t* src,int32_t srcLen, stlstring s0)
+{
+ scan_idx = (int) sScan_STRING.find_first_of(L"sm");
+}
+
+#endif // STRINGPERF_H
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj
new file mode 100644
index 00000000000..96757f4c674
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{523710EA-349D-45BF-8B39-289CC86E7D91}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/stringperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Release/stringperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/stringperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/stringperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/stringperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Release/stringperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/stringperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/stringperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/stringperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/stringperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/stringperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/stringperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/stringperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/stringperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;icutestd.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/stringperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/stringperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="stringperf.cpp">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="stringperf.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj.filters
new file mode 100644
index 00000000000..07a54a59a2c
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/ustrperf/stringperf.vcxproj.filters
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{6863b0b4-8093-41e6-be7d-d901824e9418}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{065cc8c8-6c01-42a5-be22-af15d0a8540a}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{ab45cfe4-f0aa-4529-8a51-054efcf33edf}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="stringperf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="stringperf.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utfperf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/utfperf/Makefile.in
new file mode 100644
index 00000000000..dbaf1ab4316
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utfperf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/utfperf
+## Copyright (c) 2001-2006, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/utfperf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = utfperf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = utfperf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utfperf/UtfPerf.pl b/Build/source/libs/icu/icu-4.6/test/perf/utfperf/UtfPerf.pl
new file mode 100755
index 00000000000..5c707423848
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utfperf/UtfPerf.pl
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2005-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"UTF performance: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"gb18030 encoding string",
+ "passes"=>"1",
+ "time"=>"2",
+ #"outputType"=>"HTML",
+ "dataDir"=>$ConversionDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p1;
+my $p2;
+
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious."/utfperf/$WindowsPlatform/Release/utfperf.exe -e gb18030"; # Previous
+ $p2 = $ICUPathLatest."/utfperf/$WindowsPlatform/Release/utfperf.exe -e gb18030"; # Latest
+} else {
+ $p1 = $ICUPathPrevious."/utfperf/utfperf -e gb18030"; # Previous
+ $p2 = $ICUPathLatest."/utfperf/utfperf -e gb18030"; # Latest
+}
+
+my $tests = {
+ "Roundtrip", ["$p1 Roundtrip", "$p2 Roundtrip"],
+ "FromUnicode", ["$p1 FromUnicode", "$p2 FromUnicode"],
+ "FromUTF8", ["$p1 FromUTF8", "$p2 FromUTF8"],
+ #"UTF-8", ["$p UTF_8"],
+ #"UTF-8 small buffer", ["$p UTF_8_SB"],
+ #"SCSU", ["$p SCSU"],
+ #"SCSU small buffer", ["$p SCSU_SB"],
+ #"BOCU_1", ["$p BOCU_1"],
+ #"BOCU_1 small buffer", ["$p BOCU_1_SB"],
+ };
+
+my $dataFiles = {
+ "",
+ [
+ "xuzhimo.txt"
+ ]
+ };
+
+runTests($options, $tests, $dataFiles);
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.cpp
new file mode 100644
index 00000000000..e5e26ca49ea
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.cpp
@@ -0,0 +1,365 @@
+/*
+ **********************************************************************
+ * Copyright (C) 2002-2007, International Business Machines
+ * Corporation and others. All Rights Reserved.
+ **********************************************************************
+ * file name: utfperf.cpp
+ * encoding: US-ASCII
+ * tab size: 8 (not used)
+ * indentation:4
+ *
+ * created on: 2005Nov17
+ * created by: Raymond Yang
+ *
+ * Ported from utfper.c created by Markus W. Scherer
+ * Performance test program for Unicode converters
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "unicode/uperf.h"
+#include "uoptions.h"
+
+#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
+
+/* definitions and text buffers */
+
+#define INPUT_CAPACITY (1024*1024)
+#define INTERMEDIATE_CAPACITY 4096
+#define INTERMEDIATE_SMALL_CAPACITY 20
+#define PIVOT_CAPACITY 1024
+#define OUTPUT_CAPACITY INPUT_CAPACITY
+
+static char utf8[INPUT_CAPACITY];
+static UChar pivot[INTERMEDIATE_CAPACITY];
+
+static UChar output[OUTPUT_CAPACITY];
+static char intermediate[OUTPUT_CAPACITY];
+
+static int32_t utf8Length, encodedLength, outputLength, countInputCodePoints;
+
+static int32_t fromUCallbackCount;
+
+// Command-line options specific to utfperf.
+// Options do not have abbreviations: Force readable command lines.
+// (Using U+0001 for abbreviation characters.)
+enum {
+ CHARSET,
+ CHUNK_LENGTH,
+ PIVOT_LENGTH,
+ UTFPERF_OPTIONS_COUNT
+};
+
+static UOption options[UTFPERF_OPTIONS_COUNT]={
+ UOPTION_DEF("charset", '\x01', UOPT_REQUIRES_ARG),
+ UOPTION_DEF("chunk", '\x01', UOPT_REQUIRES_ARG),
+ UOPTION_DEF("pivot", '\x01', UOPT_REQUIRES_ARG)
+};
+
+static const char *const utfperf_usage =
+ "\t--charset Charset for which to test performance, e.g. windows-1251.\n"
+ "\t Default: UTF-8\n"
+ "\t--chunk Length (in bytes) of charset output chunks. [4096]\n"
+ "\t--pivot Length (in UChars) of the UTF-16 pivot buffer, if applicable.\n"
+ "\t [1024]\n";
+
+// Test object.
+class UtfPerformanceTest : public UPerfTest{
+public:
+ UtfPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status)
+ : UPerfTest(argc, argv, options, LENGTHOF(options), utfperf_usage, status) {
+ if (U_SUCCESS(status)) {
+ charset = options[CHARSET].value;
+
+ chunkLength = atoi(options[CHUNK_LENGTH].value);
+ if (chunkLength < 1 || OUTPUT_CAPACITY < chunkLength) {
+ fprintf(stderr, "error: chunk length must be 1..%ld\n", (long)OUTPUT_CAPACITY);
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+
+ pivotLength = atoi(options[PIVOT_LENGTH].value);
+ if (pivotLength < 1 || PIVOT_CAPACITY < pivotLength) {
+ fprintf(stderr, "error: pivot length must be 1..%ld\n", (long)PIVOT_CAPACITY);
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ }
+
+ int32_t inputLength;
+ UPerfTest::getBuffer(inputLength, status);
+ countInputCodePoints = u_countChar32(buffer, bufferLen);
+ u_strToUTF8(utf8, (int32_t)sizeof(utf8), &utf8Length, buffer, bufferLen, &status);
+ }
+ }
+
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL);
+
+ const UChar *getBuffer() const { return buffer; }
+ int32_t getBufferLen() const { return bufferLen; }
+
+ const char *charset;
+ int32_t chunkLength, pivotLength;
+};
+
+U_CDECL_BEGIN
+// Custom callback for counting callback calls.
+static void U_CALLCONV
+fromUCallback(const void *context,
+ UConverterFromUnicodeArgs *fromUArgs,
+ const UChar *codeUnits,
+ int32_t length,
+ UChar32 codePoint,
+ UConverterCallbackReason reason,
+ UErrorCode *pErrorCode) {
+ if (reason <= UCNV_IRREGULAR) {
+ ++fromUCallbackCount;
+ }
+ UCNV_FROM_U_CALLBACK_SUBSTITUTE(context, fromUArgs, codeUnits, length, codePoint, reason, pErrorCode);
+}
+U_CDECL_END
+
+// Base class for Roundtrip, FromUnicode and FromUTF8 with common setup.
+class Command : public UPerfFunction {
+protected:
+ Command(const UtfPerformanceTest &testcase)
+ : testcase(testcase),
+ input(testcase.getBuffer()), inputLength(testcase.getBufferLen()),
+ errorCode(U_ZERO_ERROR) {
+ cnv=ucnv_open(testcase.charset, &errorCode);
+ if (U_FAILURE(errorCode)) {
+ fprintf(stderr, "error opening converter for \"%s\" - %s\n", testcase.charset, u_errorName(errorCode));
+ }
+ ucnv_setFromUCallBack(cnv, fromUCallback, NULL, NULL, NULL, &errorCode);
+ }
+public:
+ virtual ~Command(){
+ if(U_SUCCESS(errorCode)) {
+ ucnv_close(cnv);
+ }
+ }
+ // virtual void call(UErrorCode* pErrorCode) { ... }
+ virtual long getOperationsPerIteration(){
+ return countInputCodePoints;
+ }
+
+ const UtfPerformanceTest &testcase;
+ const UChar *input;
+ int32_t inputLength;
+ UErrorCode errorCode;
+ UConverter *cnv;
+};
+
+// Test roundtrip UTF-16->encoding->UTF-16.
+class Roundtrip : public Command {
+protected:
+ Roundtrip(const UtfPerformanceTest &testcase) : Command(testcase) {}
+public:
+ static UPerfFunction* get(const UtfPerformanceTest &testcase) {
+ Roundtrip * t = new Roundtrip(testcase);
+ if (U_SUCCESS(t->errorCode)){
+ return t;
+ } else {
+ delete t;
+ return NULL;
+ }
+ }
+ virtual void call(UErrorCode* pErrorCode){
+ const UChar *pIn, *pInLimit;
+ UChar *pOut, *pOutLimit;
+ char *pInter, *pInterLimit;
+ const char *p;
+ UBool flush;
+
+ ucnv_reset(cnv);
+ fromUCallbackCount=0;
+
+ pIn=input;
+ pInLimit=input+inputLength;
+
+ pOut=output;
+ pOutLimit=output+OUTPUT_CAPACITY;
+
+ pInterLimit=intermediate+testcase.chunkLength;
+
+ encodedLength=outputLength=0;
+ flush=FALSE;
+
+ do {
+ /* convert a block of [pIn..pInLimit[ to the encoding in intermediate[] */
+ pInter=intermediate;
+ ucnv_fromUnicode(cnv, &pInter, pInterLimit, &pIn, pInLimit, NULL, TRUE, pErrorCode);
+ encodedLength+=(int32_t)(pInter-intermediate);
+
+ if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
+ /* make sure that we convert once more to really flush */
+ *pErrorCode=U_ZERO_ERROR;
+ } else if(U_FAILURE(*pErrorCode)) {
+ return;
+ } else if(pIn==pInLimit) {
+ flush=TRUE;
+ }
+
+ /* convert the block [intermediate..pInter[ back to UTF-16 */
+ p=intermediate;
+ ucnv_toUnicode(cnv, &pOut, pOutLimit,&p, pInter,NULL, flush,pErrorCode);
+ if(U_FAILURE(*pErrorCode)) {
+ return;
+ }
+ /* intermediate must have been consumed (p==pInter) because of the converter semantics */
+ } while(!flush);
+
+ outputLength=pOut-output;
+ if(inputLength!=outputLength) {
+ fprintf(stderr, "error: roundtrip failed, inputLength %d!=outputLength %d\n", inputLength, outputLength);
+ *pErrorCode=U_INTERNAL_PROGRAM_ERROR;
+ }
+ }
+};
+
+// Test one-way conversion UTF-16->encoding.
+class FromUnicode : public Command {
+protected:
+ FromUnicode(const UtfPerformanceTest &testcase) : Command(testcase) {}
+public:
+ static UPerfFunction* get(const UtfPerformanceTest &testcase) {
+ FromUnicode * t = new FromUnicode(testcase);
+ if (U_SUCCESS(t->errorCode)){
+ return t;
+ } else {
+ delete t;
+ return NULL;
+ }
+ }
+ virtual void call(UErrorCode* pErrorCode){
+ const UChar *pIn, *pInLimit;
+ char *pInter, *pInterLimit;
+
+ ucnv_resetFromUnicode(cnv);
+ fromUCallbackCount=0;
+
+ pIn=input;
+ pInLimit=input+inputLength;
+
+ pInterLimit=intermediate+testcase.chunkLength;
+
+ encodedLength=0;
+
+ for(;;) {
+ pInter=intermediate;
+ ucnv_fromUnicode(cnv, &pInter, pInterLimit, &pIn, pInLimit, NULL, TRUE, pErrorCode);
+ encodedLength+=(int32_t)(pInter-intermediate);
+
+ if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
+ /* make sure that we convert once more to really flush */
+ *pErrorCode=U_ZERO_ERROR;
+ } else if(U_FAILURE(*pErrorCode)) {
+ return;
+ } else {
+ break; // all done
+ }
+ }
+ }
+};
+
+// Test one-way conversion UTF-8->encoding.
+class FromUTF8 : public Command {
+protected:
+ FromUTF8(const UtfPerformanceTest &testcase)
+ : Command(testcase),
+ utf8Cnv(NULL),
+ input8(utf8), input8Length(utf8Length) {
+ utf8Cnv=ucnv_open("UTF-8", &errorCode);
+ }
+public:
+ static UPerfFunction* get(const UtfPerformanceTest &testcase) {
+ FromUTF8 * t = new FromUTF8(testcase);
+ if (U_SUCCESS(t->errorCode)){
+ return t;
+ } else {
+ delete t;
+ return NULL;
+ }
+ }
+ ~FromUTF8() {
+ ucnv_close(utf8Cnv);
+ }
+ virtual void call(UErrorCode* pErrorCode){
+ const char *pIn, *pInLimit;
+ char *pInter, *pInterLimit;
+ UChar *pivotSource, *pivotTarget, *pivotLimit;
+
+ ucnv_resetToUnicode(utf8Cnv);
+ ucnv_resetFromUnicode(cnv);
+ fromUCallbackCount=0;
+
+ pIn=input8;
+ pInLimit=input8+input8Length;
+
+ pInterLimit=intermediate+testcase.chunkLength;
+
+ pivotSource=pivotTarget=pivot;
+ pivotLimit=pivot+testcase.pivotLength;
+
+ encodedLength=0;
+
+ for(;;) {
+ pInter=intermediate;
+ ucnv_convertEx(cnv, utf8Cnv,
+ &pInter, pInterLimit,
+ &pIn, pInLimit,
+ pivot, &pivotSource, &pivotTarget, pivotLimit,
+ FALSE, TRUE, pErrorCode);
+ encodedLength+=(int32_t)(pInter-intermediate);
+
+ if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
+ /* make sure that we convert once more to really flush */
+ *pErrorCode=U_ZERO_ERROR;
+ } else if(U_FAILURE(*pErrorCode)) {
+ return;
+ } else {
+ break; // all done
+ }
+ }
+ }
+protected:
+ UConverter *utf8Cnv;
+ const char *input8;
+ int32_t input8Length;
+};
+
+UPerfFunction* UtfPerformanceTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* par) {
+ switch (index) {
+ case 0: name = "Roundtrip"; if (exec) return Roundtrip::get(*this); break;
+ case 1: name = "FromUnicode"; if (exec) return FromUnicode::get(*this); break;
+ case 2: name = "FromUTF8"; if (exec) return FromUTF8::get(*this); break;
+ default: name = ""; break;
+ }
+ return NULL;
+}
+
+int main(int argc, const char *argv[])
+{
+ // Default values for command-line options.
+ options[CHARSET].value = "UTF-8";
+ options[CHUNK_LENGTH].value = "4096";
+ options[PIVOT_LENGTH].value = "1024";
+
+ UErrorCode status = U_ZERO_ERROR;
+ UtfPerformanceTest test(argc, argv, status);
+
+ if (U_FAILURE(status)){
+ printf("The error is %s\n", u_errorName(status));
+ test.usage();
+ return status;
+ }
+
+ if (test.run() == FALSE){
+ fprintf(stderr, "FAILED: Tests could not be run please check the "
+ "arguments.\n");
+ return -1;
+ }
+
+ if (fromUCallbackCount > 0) {
+ printf("Number of fromUnicode callback calls in the last iteration: %ld\n", (long)fromUCallbackCount);
+ }
+
+ return 0;
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.vcxproj
new file mode 100644
index 00000000000..287df016f4e
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.vcxproj
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{E7728E98-0469-43F4-AF37-4529A3D52C6B}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/utfperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/utfperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/utfperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/utfperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/utfperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/utfperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/utfperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/utfperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/utfperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x86\Release/utfperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/utfperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/utfperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/utfperf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x64\Release/utfperf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/utfperf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/utfperf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="utfperf.cpp" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.vcxproj.filters b/Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.vcxproj.filters
new file mode 100644
index 00000000000..ffe6d7a431a
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utfperf/utfperf.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{2468ec6b-e999-4d9d-81c9-f511c4467c3d}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{f09507fd-f3fd-4606-aaeb-98906af51905}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{9787b0cc-5838-4432-8454-ec04b9f51921}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="utfperf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/Makefile.in b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/Makefile.in
new file mode 100644
index 00000000000..e9098ebe563
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/Makefile.in
@@ -0,0 +1,79 @@
+## Makefile.in for ICU - test/perf/utrie2perf
+## Copyright (c) 2001-2008, International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ../../..
+
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = test/perf/utrie2perf
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS)
+
+## Target information
+TARGET = utrie2perf
+
+CPPFLAGS += -I$(top_builddir)/common -I$(top_srcdir)/common -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
+LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M)
+
+OBJECTS = utrie2perf.o
+
+DEPS = $(OBJECTS:.o=.d)
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local \
+distclean distclean-local dist dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(TARGET)
+
+install-local:
+
+dist-local:
+
+clean-local:
+ test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+ $(RMV) $(OBJECTS) $(TARGET)
+
+distclean-local: clean-local
+ $(RMV) Makefile
+
+check-local: all-local
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(TARGET) : $(OBJECTS)
+ $(LINK.cc) -o $@ $^ $(LIBS)
+ $(POST_BUILD_STEP)
+
+invoke:
+ ICU_DATA=$${ICU_DATA:-$(top_builddir)/data/} TZ=PST8PDT $(INVOKE) $(INVOCATION)
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+ifneq ($(patsubst %install,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+endif
+
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.bat b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.bat
new file mode 100755
index 00000000000..fa3883c7694
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.bat
@@ -0,0 +1,19 @@
+rem Copyright (C) 2008, International Business Machines Corporation and others.
+rem All Rights Reserved.
+
+set PERF=c:\svn\icuproj\icu\utf8\source\test\perf\utrie2perf\x86\Release\utrie2perf
+
+for %%f in (udhr_eng.txt
+ udhr_deu.txt
+ udhr_fra.txt
+ udhr_rus.txt
+ udhr_tha.txt
+ udhr_jpn.txt
+ udhr_cmn.txt
+ udhr_jpn.html) do (
+ %PERF% CheckFCD -f \temp\udhr\%%f -v -e UTF-8 --passes 3 --iterations 30000
+rem %PERF% CheckFCDAlwaysGet -f \temp\udhr\%%f -v -e UTF-8 --passes 3 --iterations 30000
+rem %PERF% CheckFCDUTF8 -f \temp\udhr\%%f -v -e UTF-8 --passes 3 --iterations 30000
+ %PERF% ToNFC -f \temp\udhr\%%f -v -e UTF-8 --passes 3 --iterations 30000
+ %PERF% GetBiDiClass -f \temp\udhr\%%f -v -e UTF-8 --passes 3 --iterations 30000
+)
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.cpp b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.cpp
new file mode 100644
index 00000000000..18c386c7566
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.cpp
@@ -0,0 +1,261 @@
+/*
+ **********************************************************************
+ * Copyright (C) 2002-2008, International Business Machines
+ * Corporation and others. All Rights Reserved.
+ **********************************************************************
+ * file name: utrie2perf.cpp
+ * encoding: US-ASCII
+ * tab size: 8 (not used)
+ * indentation:4
+ *
+ * created on: 2008sep07
+ * created by: Markus W. Scherer
+ *
+ * Performance test program for UTrie2.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "unicode/uchar.h"
+#include "unicode/unorm.h"
+#include "unicode/uperf.h"
+#include "uoptions.h"
+
+#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
+
+#if 0
+// Left over from when icu/branches/markus/utf8 could use both old UTrie
+// and new UTrie2, switched with #if in unorm.cpp and ubidi_props.c.
+// Comparative benchmarks were done in that branch on revision r24630
+// and earlier.
+U_CAPI void U_EXPORT2
+unorm_initUTrie2(UErrorCode *pErrorCode);
+
+U_CAPI void U_EXPORT2
+ubidi_initUTrie2(UErrorCode *pErrorCode);
+#endif
+
+U_NAMESPACE_BEGIN
+
+class UnicodeSet;
+
+U_NAMESPACE_END
+
+// Test object.
+class UTrie2PerfTest : public UPerfTest {
+public:
+ UTrie2PerfTest(int32_t argc, const char *argv[], UErrorCode &status)
+ : UPerfTest(argc, argv, NULL, 0, "", status),
+ utf8(NULL), utf8Length(0), countInputCodePoints(0) {
+ if (U_SUCCESS(status)) {
+#if 0 // See comment at unorm_initUTrie2() forward declaration.
+ unorm_initUTrie2(&status);
+ ubidi_initUTrie2(&status);
+#endif
+ int32_t inputLength;
+ UPerfTest::getBuffer(inputLength, status);
+ if(U_SUCCESS(status) && inputLength>0) {
+ countInputCodePoints = u_countChar32(buffer, bufferLen);
+
+ // Preflight the UTF-8 length and allocate utf8.
+ u_strToUTF8(NULL, 0, &utf8Length, buffer, bufferLen, &status);
+ if(status==U_BUFFER_OVERFLOW_ERROR) {
+ utf8=(char *)malloc(utf8Length);
+ if(utf8!=NULL) {
+ status=U_ZERO_ERROR;
+ u_strToUTF8(utf8, utf8Length, NULL, buffer, bufferLen, &status);
+ } else {
+ status=U_MEMORY_ALLOCATION_ERROR;
+ }
+ }
+
+ if(verbose) {
+ printf("code points:%ld len16:%ld len8:%ld "
+ "B/cp:%.3g\n",
+ (long)countInputCodePoints, (long)bufferLen, (long)utf8Length,
+ (double)utf8Length/countInputCodePoints);
+ }
+ }
+ }
+ }
+
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL);
+
+ const UChar *getBuffer() const { return buffer; }
+ int32_t getBufferLen() const { return bufferLen; }
+
+ char *utf8;
+ int32_t utf8Length;
+
+ // Number of code points in the input text.
+ int32_t countInputCodePoints;
+};
+
+// Performance test function object.
+class Command : public UPerfFunction {
+protected:
+ Command(const UTrie2PerfTest &testcase) : testcase(testcase) {}
+
+public:
+ virtual ~Command() {}
+
+ // virtual void call(UErrorCode* pErrorCode) { ... }
+
+ virtual long getOperationsPerIteration() {
+ // Number of code points tested.
+ return testcase.countInputCodePoints;
+ }
+
+ // virtual long getEventsPerIteration();
+
+ const UTrie2PerfTest &testcase;
+ UNormalizationCheckResult qcResult;
+};
+
+class CheckFCD : public Command {
+protected:
+ CheckFCD(const UTrie2PerfTest &testcase) : Command(testcase) {}
+public:
+ static UPerfFunction* get(const UTrie2PerfTest &testcase) {
+ return new CheckFCD(testcase);
+ }
+ virtual void call(UErrorCode* pErrorCode) {
+ UErrorCode errorCode=U_ZERO_ERROR;
+ qcResult=unorm_quickCheck(testcase.getBuffer(), testcase.getBufferLen(),
+ UNORM_FCD, &errorCode);
+ if(U_FAILURE(errorCode)) {
+ fprintf(stderr, "error: unorm_quickCheck(UNORM_FCD) failed: %s\n",
+ u_errorName(errorCode));
+ }
+ }
+};
+
+#if 0 // See comment at unorm_initUTrie2() forward declaration.
+
+class CheckFCDAlwaysGet : public Command {
+protected:
+ CheckFCDAlwaysGet(const UTrie2PerfTest &testcase) : Command(testcase) {}
+public:
+ static UPerfFunction* get(const UTrie2PerfTest &testcase) {
+ return new CheckFCDAlwaysGet(testcase);
+ }
+ virtual void call(UErrorCode* pErrorCode) {
+ UErrorCode errorCode=U_ZERO_ERROR;
+ qcResult=unorm_quickCheck(testcase.getBuffer(), testcase.getBufferLen(),
+ UNORM_FCD_ALWAYS_GET, &errorCode);
+ if(U_FAILURE(errorCode)) {
+ fprintf(stderr, "error: unorm_quickCheck(UNORM_FCD) failed: %s\n",
+ u_errorName(errorCode));
+ }
+ }
+};
+
+U_CAPI UBool U_EXPORT2
+unorm_checkFCDUTF8(const uint8_t *src, int32_t srcLength, const UnicodeSet *nx);
+
+class CheckFCDUTF8 : public Command {
+protected:
+ CheckFCDUTF8(const UTrie2PerfTest &testcase) : Command(testcase) {}
+public:
+ static UPerfFunction* get(const UTrie2PerfTest &testcase) {
+ return new CheckFCDUTF8(testcase);
+ }
+ virtual void call(UErrorCode* pErrorCode) {
+ UBool isFCD=unorm_checkFCDUTF8((const uint8_t *)testcase.utf8, testcase.utf8Length, NULL);
+ if(isFCD>1) {
+ fprintf(stderr, "error: bogus result from unorm_checkFCDUTF8()\n");
+ }
+ }
+};
+
+#endif
+
+class ToNFC : public Command {
+protected:
+ ToNFC(const UTrie2PerfTest &testcase) : Command(testcase) {
+ UErrorCode errorCode=U_ZERO_ERROR;
+ destCapacity=unorm_normalize(testcase.getBuffer(), testcase.getBufferLen(),
+ UNORM_NFC, 0,
+ NULL, 0,
+ &errorCode);
+ dest=new UChar[destCapacity];
+ }
+ ~ToNFC() {
+ delete [] dest;
+ }
+public:
+ static UPerfFunction* get(const UTrie2PerfTest &testcase) {
+ return new ToNFC(testcase);
+ }
+ virtual void call(UErrorCode* pErrorCode) {
+ UErrorCode errorCode=U_ZERO_ERROR;
+ int32_t destLength=unorm_normalize(testcase.getBuffer(), testcase.getBufferLen(),
+ UNORM_NFC, 0,
+ dest, destCapacity,
+ &errorCode);
+ if(U_FAILURE(errorCode) || destLength!=destCapacity) {
+ fprintf(stderr, "error: unorm_normalize(UNORM_NFC) failed: %s\n",
+ u_errorName(errorCode));
+ }
+ }
+
+private:
+ UChar *dest;
+ int32_t destCapacity;
+};
+
+class GetBiDiClass : public Command {
+protected:
+ GetBiDiClass(const UTrie2PerfTest &testcase) : Command(testcase) {}
+public:
+ static UPerfFunction* get(const UTrie2PerfTest &testcase) {
+ return new GetBiDiClass(testcase);
+ }
+ virtual void call(UErrorCode* pErrorCode) {
+ const UChar *buffer=testcase.getBuffer();
+ int32_t length=testcase.getBufferLen();
+ UChar32 c;
+ int32_t i;
+ uint32_t bitSet=0;
+ for(i=0; i<length;) {
+ U16_NEXT(buffer, i, length, c);
+ bitSet|=(uint32_t)1<<u_charDirection(c);
+ }
+ if(length>0 && bitSet==0) {
+ fprintf(stderr, "error: GetBiDiClass() did not collect bits\n");
+ }
+ }
+};
+
+UPerfFunction* UTrie2PerfTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* par) {
+ switch (index) {
+ case 0: name = "CheckFCD"; if (exec) return CheckFCD::get(*this); break;
+ case 1: name = "ToNFC"; if (exec) return ToNFC::get(*this); break;
+ case 2: name = "GetBiDiClass"; if (exec) return GetBiDiClass::get(*this); break;
+#if 0 // See comment at unorm_initUTrie2() forward declaration.
+ case 3: name = "CheckFCDAlwaysGet"; if (exec) return CheckFCDAlwaysGet::get(*this); break;
+ case 4: name = "CheckFCDUTF8"; if (exec) return CheckFCDUTF8::get(*this); break;
+#endif
+ default: name = ""; break;
+ }
+ return NULL;
+}
+
+int main(int argc, const char *argv[]) {
+ UErrorCode status = U_ZERO_ERROR;
+ UTrie2PerfTest test(argc, argv, status);
+
+ if (U_FAILURE(status)){
+ printf("The error is %s\n", u_errorName(status));
+ test.usage();
+ return status;
+ }
+
+ if (test.run() == FALSE){
+ fprintf(stderr, "FAILED: Tests could not be run please check the "
+ "arguments.\n");
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.pl b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.pl
new file mode 100644
index 00000000000..5c707423848
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.pl
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+# ********************************************************************
+# * COPYRIGHT:
+# * Copyright (c) 2005-2008, International Business Machines Corporation and
+# * others. All Rights Reserved.
+# ********************************************************************
+
+#use strict;
+
+require "../perldriver/Common.pl";
+
+use lib '../perldriver';
+
+use PerfFramework;
+
+my $options = {
+ "title"=>"UTF performance: ICU (".$ICUPreviousVersion." and ".$ICULatestVersion.")",
+ "headers"=>"ICU".$ICUPreviousVersion." ICU".$ICULatestVersion,
+ "operationIs"=>"gb18030 encoding string",
+ "passes"=>"1",
+ "time"=>"2",
+ #"outputType"=>"HTML",
+ "dataDir"=>$ConversionDataPath,
+ "outputDir"=>"../results"
+ };
+
+# programs
+# tests will be done for all the programs. Results will be stored and connected
+my $p1;
+my $p2;
+
+if ($OnWindows) {
+ $p1 = $ICUPathPrevious."/utfperf/$WindowsPlatform/Release/utfperf.exe -e gb18030"; # Previous
+ $p2 = $ICUPathLatest."/utfperf/$WindowsPlatform/Release/utfperf.exe -e gb18030"; # Latest
+} else {
+ $p1 = $ICUPathPrevious."/utfperf/utfperf -e gb18030"; # Previous
+ $p2 = $ICUPathLatest."/utfperf/utfperf -e gb18030"; # Latest
+}
+
+my $tests = {
+ "Roundtrip", ["$p1 Roundtrip", "$p2 Roundtrip"],
+ "FromUnicode", ["$p1 FromUnicode", "$p2 FromUnicode"],
+ "FromUTF8", ["$p1 FromUTF8", "$p2 FromUTF8"],
+ #"UTF-8", ["$p UTF_8"],
+ #"UTF-8 small buffer", ["$p UTF_8_SB"],
+ #"SCSU", ["$p SCSU"],
+ #"SCSU small buffer", ["$p SCSU_SB"],
+ #"BOCU_1", ["$p BOCU_1"],
+ #"BOCU_1 small buffer", ["$p BOCU_1_SB"],
+ };
+
+my $dataFiles = {
+ "",
+ [
+ "xuzhimo.txt"
+ ]
+ };
+
+runTests($options, $tests, $dataFiles);
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.sh b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.sh
new file mode 100644
index 00000000000..92691a036aa
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+# Copyright (C) 2008, International Business Machines Corporation and others.
+# All Rights Reserved.
+
+# export LD_LIBRARY_PATH=/home/mscherer/svn.icu/utf8-dev/lib:/home/mscherer/svn.icu/utf8-dev/tools/ctestfw
+
+# Echo shell script commands.
+set -ex
+
+PERF=~/svn.icu/utf8-dev/test/perf/utrie2perf/utrie2perf
+
+for file in udhr_eng.txt \
+ udhr_deu.txt \
+ udhr_fra.txt \
+ udhr_rus.txt \
+ udhr_tha.txt \
+ udhr_jpn.txt \
+ udhr_cmn.txt \
+ udhr_jpn.html; do
+ $PERF CheckFCD -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 30000
+# $PERF CheckFCDAlwaysGet -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 30000
+# $PERF CheckFCDUTF8 -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 30000
+ $PERF ToNFC -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 30000
+ $PERF GetBiDiClass -f ~/udhr/$file -v -e UTF-8 --passes 3 --iterations 30000
+done
diff --git a/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.vcxproj b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.vcxproj
new file mode 100644
index 00000000000..d6834a2610c
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/perf/utrie2perf/utrie2perf.vcxproj
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B9458CB3-9B09-402A-8C4C-43B6D0EA9691}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Debug/utrie2perf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x86\Debug/utrie2perf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Debug/utrie2perf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x86\Debug/utrie2perf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Debug/utrie2perf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeaderOutputFile>.\x64\Debug/utrie2perf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Debug/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuucd.lib;icutud.lib;winmm.lib;icutestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Debug/utrie2perf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>.\x64\Debug/utrie2perf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\x86\Release/utrie2perf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x86\Release/utrie2perf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x86\Release/utrie2perf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x86\Release/utrie2perf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\x64\Release/utrie2perf.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeaderOutputFile>.\x64\Release/utrie2perf.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\Release/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>icuuc.lib;icutu.lib;icutest.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>.\x64\Release/utrie2perf.exe</OutputFile>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalLibraryDirectories>..\..\..\..\lib64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ProgramDatabaseFile>.\x64\Release/utrie2perf.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="utrie2perf.cpp" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>