mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-02-02 10:00:38 +01:00
Improvement CORE-2224 - Upgrade ICU to version 52.1
This commit is contained in:
parent
320a09d070
commit
e6ba3d47f2
@ -69,9 +69,8 @@ if "%ERRLEV%"=="1" goto :END
|
||||
|
||||
@findstr /V "@UDF_COMMENT@" %FB_ROOT_PATH%\builds\install\misc\firebird.conf.in > %FB_BIN_DIR%\firebird.conf
|
||||
|
||||
for %%v in ( icuuc30 icudt30 icuin30 ) do (
|
||||
@copy %FB_ICU_SOURCE_BIN%\%%v.dll %FB_BIN_DIR% >nul 2>&1
|
||||
)
|
||||
@copy %FB_ROOT_PATH%\extern\icu\icudt???.dat %FB_BIN_DIR% >nul 2>&1
|
||||
@copy %FB_ICU_SOURCE_BIN%\*.dll %FB_BIN_DIR% >nul 2>&1
|
||||
|
||||
::=======
|
||||
@call :databases
|
||||
|
@ -9,13 +9,9 @@
|
||||
::==========
|
||||
:: MAIN
|
||||
|
||||
@echo Building ICU %FB_OBJ_DIR% for %FB_TARGET_PLATFORM%
|
||||
@echo Extracting pre-built ICU
|
||||
|
||||
if %MSVC_VERSION% GEQ 8 (
|
||||
@call compile.bat %FB_ROOT_PATH%\extern\icu\source\allinone\allinone_%MSVC_VERSION% make_icu_%FB_TARGET_PLATFORM%.log
|
||||
) else (
|
||||
@call compile.bat %FB_ROOT_PATH%\extern\icu\source\allinone\allinone make_icu_%FB_TARGET_PLATFORM%.log
|
||||
)
|
||||
%FB_ROOT_PATH%\extern\icu\icu.exe -y > make_icu_%FB_TARGET_PLATFORM%.log
|
||||
|
||||
if errorlevel 1 call :ERROR build failed - see make_icu_%FB_TARGET_PLATFORM%.log for details
|
||||
@goto :EOF
|
||||
@ -33,7 +29,3 @@ cancel_script > nul 2>&1
|
||||
::End of ERROR
|
||||
::------------
|
||||
@goto :EOF
|
||||
|
||||
|
||||
|
||||
|
||||
|
14
extern/icu/Readme.txt
vendored
Normal file
14
extern/icu/Readme.txt
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
icu.exe is a self-extract pre-built (by us) IBM ICU 52.1 library.
|
||||
|
||||
The sources was downloaded from http://site.icu-project.org/download.
|
||||
|
||||
Two customized data files was created using the tool at http://apps.icu-project.org/datacustom.
|
||||
|
||||
One was created empty and saved to icudt52l_empty.dat. This file is used when building ICU, to
|
||||
make icudt a little stub. The file was saved in ICU sources directory at <icu>\source\data\in
|
||||
with name icudt52l.dat, before start ICU building process.
|
||||
|
||||
The other is the data file we use in runtime. It was created selecting the options:
|
||||
- Charset Mapping Tables: ibm-943_P15A-2003
|
||||
- Collators
|
||||
- Base data
|
127
extern/icu/as_is/os390/unpax-icu.sh
vendored
127
extern/icu/as_is/os390/unpax-icu.sh
vendored
@ -1,127 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2001 - 2003, International Business Machines Corporation.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Authors:
|
||||
# Ami Fixler
|
||||
# Steven R. Loomis <srl@jtcsv.com>
|
||||
# George Rhoten
|
||||
#
|
||||
# Shell script to unpax ICU and convert the files to an EBCDIC codepage.
|
||||
# After extracting to EBCDIC, binary files are re-extracted without the
|
||||
# EBCDIC conversion, thus restoring them to original codepage.
|
||||
#
|
||||
# Set the following variable to the list of binary file suffixes (extensions)
|
||||
|
||||
#binary_suffixes='ico ICO bmp BMP jpg JPG gif GIF brk BRK'
|
||||
#ICU specific binary files
|
||||
binary_suffixes='brk BRK bin BIN res RES cnv CNV dat DAT icu ICU spp SPP'
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Enter archive filename as a parameter: $0 icu-archive.tar [strip]"
|
||||
echo "(strip is an option to remove hex '0D' carraige returns)"
|
||||
}
|
||||
# first make sure we at least one arg and it's a file we can read
|
||||
if [ $# -eq 0 ]; then
|
||||
usage
|
||||
exit
|
||||
fi
|
||||
if [ ! -r $1 ]; then
|
||||
echo "$1 does not exist or cannot be read."
|
||||
usage
|
||||
exit
|
||||
fi
|
||||
# set up a few variables
|
||||
|
||||
echo ""
|
||||
echo "Extracting from $1 ..."
|
||||
echo ""
|
||||
# extract files while converting them to EBCDIC
|
||||
pax -rvf $1 -o to=IBM-1047,from=ISO8859-1
|
||||
|
||||
if [ $# -gt 1 ]; then
|
||||
if [ $2 -eq strip ]; then
|
||||
echo ""
|
||||
echo "Stripping hex 0d characters ..."
|
||||
for i in $(pax -f $1 2>/dev/null)
|
||||
do
|
||||
case $i in
|
||||
*/)
|
||||
# then this entry is a directory
|
||||
;;
|
||||
*)
|
||||
# then this entry is NOT a directory
|
||||
tr -d
|
||||
<$i >@@@icu@tmp
|
||||
chmod +w $i
|
||||
rm $i
|
||||
mv @@@icu@tmp $i
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Determining binary files ..."
|
||||
echo ""
|
||||
|
||||
#for dir in `find ./icu -type d \( -name CVS -o -print \)`; do
|
||||
# if [ -f $dir/CVS/Entries ]; then
|
||||
# binary_files="$binary_files`cat $dir/CVS/Entries | fgrep -- -kb \
|
||||
# | cut -d / -f2 | sed -e "s%^%$dir/%" \
|
||||
# | sed -e "s%^\./%%" | tr '\n' ' '`"
|
||||
# fi
|
||||
#done
|
||||
#echo "Detecting Unicode files"
|
||||
for file in `find icu \( -name \*.txt -print \)`; do
|
||||
bom8=`head -c 3 $file|\
|
||||
od -t x1|\
|
||||
head -n 1|\
|
||||
sed 's/ */ /g'|\
|
||||
cut -f2-4 -d ' '|\
|
||||
tr 'A-Z' 'a-z'`;
|
||||
#Find a converted UTF-8 BOM
|
||||
if test "$bom8" = "57 8b ab"
|
||||
then
|
||||
binary_files="$binary_files $file";
|
||||
fi
|
||||
done
|
||||
|
||||
for i in $(pax -f $1 2>/dev/null)
|
||||
do
|
||||
case $i in
|
||||
*/)
|
||||
# then this entry is a directory
|
||||
;;
|
||||
*.*)
|
||||
# then this entry has a dot in the filename
|
||||
for j in $binary_suffixes
|
||||
do
|
||||
suf=${i#*.*}
|
||||
if [ "$suf" = "$j" ]
|
||||
then
|
||||
binary_files="$binary_files $i"
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
*)
|
||||
# then this entry does not have a dot in it
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# now see if a re-extract of binary files is necessary
|
||||
if [ ${#binary_files} -eq 0 ]; then
|
||||
echo ""
|
||||
echo "There are no binary files to restore."
|
||||
else
|
||||
echo "Restoring binary files ..."
|
||||
echo ""
|
||||
rm $binary_files
|
||||
pax -rvf $1 $binary_files
|
||||
fi
|
||||
echo ""
|
||||
echo "$0 has completed extracting ICU from $1."
|
4590
extern/icu/as_is/os400/configure
vendored
4590
extern/icu/as_is/os400/configure
vendored
File diff suppressed because it is too large
Load Diff
139
extern/icu/as_is/os400/unpax-icu.sh
vendored
139
extern/icu/as_is/os400/unpax-icu.sh
vendored
@ -1,139 +0,0 @@
|
||||
#!/usr/bin/qsh
|
||||
# Copyright (C) 2000-2003, International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
#
|
||||
# Authors:
|
||||
# Ami Fixler
|
||||
# Barry Novinger
|
||||
# Steven R. Loomis <srl@jtcsv.com>
|
||||
# George Rhoten
|
||||
#
|
||||
# Shell script to unpax ICU and convert the files to an EBCDIC codepage.
|
||||
# After extracting to EBCDIC, binary files are re-extracted without the
|
||||
# EBCDIC conversion, thus restoring them to original codepage.
|
||||
#
|
||||
# Set the following variable to the list of binary file suffixes (extensions)
|
||||
|
||||
#binary_suffixes='ico ICO bmp BMP jpg JPG gif GIF brk BRK'
|
||||
#ICU specific binary files
|
||||
binary_suffixes='brk BRK bin BIN res RES cnv CNV dat DAT icu ICU spp SPP'
|
||||
data_files='icu/source/data/brkitr/* icu/source/data/locales/* icu/source/data/coll/* icu/source/data/mappings/* icu/source/data/misc/* icu/source/data/translit/* icu/source/data/unidata/* icu/source/test/testdata/*'
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Enter archive filename as a parameter: $0 icu-archive.tar [strip]"
|
||||
echo "(strip is an option to remove hex '0D' carraige returns)"
|
||||
}
|
||||
# first make sure we at least one arg and it's a file we can read
|
||||
if [ $# -eq 0 ]; then
|
||||
usage
|
||||
exit
|
||||
fi
|
||||
if [ ! -r $1 ]; then
|
||||
echo "$1 does not exist or cannot be read."
|
||||
usage
|
||||
exit
|
||||
fi
|
||||
# set up a few variables
|
||||
|
||||
echo ""
|
||||
echo "Extracting from $1 ..."
|
||||
echo ""
|
||||
# extract everything as iso-8859-1 except these directories
|
||||
pax -C 819 -rcvf $1 $data_files
|
||||
|
||||
# extract files while converting them to EBCDIC
|
||||
echo ""
|
||||
echo "Extracting files which must be in ibm-37 ..."
|
||||
echo ""
|
||||
pax -C 37 -rvf $1 $data_files
|
||||
|
||||
if [ $# -gt 1 ]; then
|
||||
if [ $2 -eq strip ]; then
|
||||
echo ""
|
||||
echo "Stripping hex 0d characters ..."
|
||||
for i in $(pax -f $1 2>/dev/null)
|
||||
do
|
||||
case $i in
|
||||
*/)
|
||||
# then this entry is a directory
|
||||
;;
|
||||
*)
|
||||
# then this entry is NOT a directory
|
||||
tr -d
|
||||
<$i >@@@icu@tmp
|
||||
chmod +w $i
|
||||
rm $i
|
||||
mv @@@icu@tmp $i
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Determining binary files ..."
|
||||
echo ""
|
||||
|
||||
#for dir in `find ./icu -type d \( -name CVS -o -print \)`; do
|
||||
# if [ -f $dir/CVS/Entries ]; then
|
||||
# binary_files="$binary_files`cat $dir/CVS/Entries | fgrep -- -kb \
|
||||
# | cut -d / -f2 | sed -e "s%^%$dir/%" \
|
||||
# | sed -e "s%^\./%%" | tr '\n' ' '`"
|
||||
# fi
|
||||
#done
|
||||
#echo "Detecting Unicode files"
|
||||
for file in `find ./icu \( -name \*.txt -print \)`; do
|
||||
bom8=`head -n 1 $file|\
|
||||
od -t x1|\
|
||||
head -n 1|\
|
||||
sed 's/ */ /g'|\
|
||||
cut -f2-4 -d ' '|\
|
||||
tr 'A-Z' 'a-z'`;
|
||||
# echo "bom8 is" $bom8 "for" $file
|
||||
# bom8=`head -c 3 $file|od -t x1|head -n 1|cut -d ' ' -f2-4`;
|
||||
#Find a converted UTF-8 BOM
|
||||
if [ "$bom8" = "057 08b 0ab" -o "$bom8" = "57 8b ab" ]
|
||||
then
|
||||
binary_files="$binary_files `echo $file | cut -d / -f2-`";
|
||||
fi
|
||||
done
|
||||
|
||||
#echo $binary_files
|
||||
|
||||
for i in $(pax -f $1 2>/dev/null)
|
||||
do
|
||||
case $i in
|
||||
*/)
|
||||
# then this entry is a directory
|
||||
;;
|
||||
*.*)
|
||||
# then this entry has a dot in the filename
|
||||
for j in $binary_suffixes
|
||||
do
|
||||
suf=${i#*.*}
|
||||
if [ "$suf" = "$j" ]
|
||||
then
|
||||
binary_files="$binary_files $i"
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
*)
|
||||
# then this entry does not have a dot in it
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# now see if a re-extract of binary files is necessary
|
||||
if [ ${#binary_files} -eq 0 ]; then
|
||||
echo ""
|
||||
echo "There are no binary files to restore."
|
||||
else
|
||||
echo "Restoring binary files ..."
|
||||
echo ""
|
||||
rm $binary_files
|
||||
pax -C 819 -rvf $1 $binary_files
|
||||
fi
|
||||
echo ""
|
||||
echo "$0 has completed extracting ICU from $1."
|
11
extern/icu/debian/README.Debian.libicu-dev
vendored
11
extern/icu/debian/README.Debian.libicu-dev
vendored
@ -1,11 +0,0 @@
|
||||
Copyright (C) 2000-2003, International Business Machines
|
||||
Corporation and others. All Rights Reserved.
|
||||
|
||||
libicu-dev for Debian
|
||||
---------------------
|
||||
|
||||
The documentation in /usr/share/doc/libicu-dev/docs/ provides a high-level
|
||||
overview of ICU. Detailed API documentation is provided by the icu-docs
|
||||
package.
|
||||
|
||||
-- Yves Arrouye <yves@debian.org>, Wed, 11 Oct 2000 19:37:57 -0700
|
155
extern/icu/debian/changelog
vendored
155
extern/icu/debian/changelog
vendored
@ -1,155 +0,0 @@
|
||||
icu (2.6.1-1) experimental; urgency=low
|
||||
|
||||
* New upstream version.
|
||||
* Ivo Timmermans:
|
||||
* debian/rules Don't create arch-all packages in the binary-arch
|
||||
target. Closes: #184403
|
||||
|
||||
-- Ivo Timmermans <ivo@debian.org> Thu, 6 Nov 2003 09:03:44 +0100
|
||||
|
||||
icu (2.6-1) experimental; urgency=low
|
||||
|
||||
* New upstream version. Closes: #162975
|
||||
* debian/control: New maintainers
|
||||
* Daniel Glassey:
|
||||
* debian/rules Change the optimisations to -O3 and -O to get it to build
|
||||
* debian/rules get the latest config.{sub,guess} from /usr/share/misc
|
||||
so add build-dep on autotools-dev
|
||||
* debian/postinst gencnval is now in {prefix}/bin
|
||||
* Ivo Timmermans:
|
||||
* debian/control Tightened debhelper build dependency
|
||||
* debian/control Update Standards-Version
|
||||
|
||||
-- Daniel Glassey <wdg@debian.org> Wed, 3 Sep 2003 12:39:35 +0200
|
||||
|
||||
icu (2.1-1.2) unstable; urgency=low
|
||||
|
||||
* NMU.
|
||||
* Updated source/config.{sub,guess}. Closes: #182697
|
||||
|
||||
-- Ivo Timmermans <ivo@debian.org> Fri, 7 Mar 2003 20:58:23 +0100
|
||||
|
||||
icu (2.1-1.1) unstable; urgency=low
|
||||
|
||||
* NMU.
|
||||
* debian/control: Go through G++ ABI transition. Closes: #180124
|
||||
* source/common/unicode/docmain.h: Fix \mainpage and \section tags,
|
||||
so doxygen doesn't get confused any more. Closes: #178344
|
||||
* debian/copyright: Added upstream URL. Closes: #165780
|
||||
*
|
||||
|
||||
-- Ivo Timmermans <ivo@debian.org> Fri, 14 Feb 2003 15:21:56 +0100
|
||||
|
||||
icu (2.1-1) unstable; urgency=low
|
||||
|
||||
* ICU 2.1 release.
|
||||
* Changed the icu package description. Closes: 142886
|
||||
* Use -O1 for CXXFLAGS for OS/390. Closes: 143021
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Mon, 15 Apr 2002 14:03:12 -0700
|
||||
|
||||
icu (2.0.2-1) unstable; urgency=low
|
||||
|
||||
* Minor release of ICU with fixes for threading and strTo/FromWCS
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Tue, 2 Apr 2002 09:06:00 -0800
|
||||
|
||||
icu (2.0-2.1pre20020318-1) unstable; urgency=low
|
||||
|
||||
* Use the library number in the development package too.
|
||||
* ICU changed to version 2.1.
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Tue, 19 Mar 2002 18:38:37 -0800
|
||||
|
||||
icu (2.0-2.1pre20020303-1) unstable; urgency=low
|
||||
|
||||
* Fixed a crash in uconv when no argument is passed to -f or -t.
|
||||
* Other upstream changes.
|
||||
* Fresh upload with an up to date orig tar file so that future
|
||||
diffs won't be 6 megabytes long!
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Sun, 3 Mar 2002 15:31:13 -0800
|
||||
|
||||
icu (2.0-2.1pre-1) unstable; urgency=low
|
||||
|
||||
* Prerelease of 2.1 with a working upgraded uconv(1).
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Fri, 1 Mar 2002 21:51:47 -0800
|
||||
|
||||
icu (2.0-3) unstable; urgency=low
|
||||
|
||||
* Renamed doc-base to icu-doc.doc-base. Closes: 127487
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Fri, 18 Jan 2002 22:33:53 -0800
|
||||
|
||||
icu (2.0-2) unstable; urgency=low
|
||||
|
||||
* Fixed a bug in uprv_uca_cloneTempTable(). Closes: 128484
|
||||
* Update Debian bugs status. Closes: 104642
|
||||
* Use the official 2.0 tarball as the original tar.
|
||||
* Added manual pages for every tool.
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Wed, 16 Jan 2002 20:45:42 -0800
|
||||
|
||||
icu (2.0-1) unstable; urgency=low
|
||||
|
||||
* Update to ICU version 2.0.
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Sat, 10 Nov 2001 21:58:19 -0800
|
||||
|
||||
icu (1.8.1-2) unstable; urgency=low
|
||||
|
||||
* Updated copyright file. Closes: 112488
|
||||
* Updated icu-locales description. Closes: 75499
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Sat, 10 Nov 2001 21:24:58 -0800
|
||||
|
||||
icu (1.8.1-1.1) unstable; urgency=low
|
||||
|
||||
* NMU to resolve build failures on ia64 and (hopefully) hppa.
|
||||
* config.{sub|guess} update
|
||||
* source/tools/ctestfw/ctest.c: Add static declaration to global
|
||||
variables local to that module to avoid @gprel relocation errors.
|
||||
Closes: 104642
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Sat, 10 Nov 2001 21:24:44 -0800
|
||||
|
||||
icu (1.8.1-1) unstable; urgency=low
|
||||
|
||||
* Update to ICU version 1.8.1.
|
||||
|
||||
-- root <yves@debian.org> Mon, 21 May 2001 15:27:36 -0700
|
||||
|
||||
icu (1.7-1) unstable; urgency=low
|
||||
|
||||
* Update to ICU version 1.7.
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Tue, 21 Nov 2000 22:54:52 -0800
|
||||
|
||||
icu (1.6.0.1-20001113-2) unstable; urgency=low
|
||||
|
||||
* New snapshot with better ISO-2022.
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Mon, 13 Nov 2000 21:05:00 -0800
|
||||
|
||||
icu (1.6.0.1-20001027-1) unstable; urgency=low
|
||||
|
||||
* Move architecture-dependent files into /usr/lib, instead of
|
||||
/usr/share.
|
||||
* Move convrtrs.txt into /etc/icu, make it a conffile, and generate
|
||||
/usr/lib/icu/1.6.0.1/cnvalias.dat from it at postinst time.
|
||||
* Manage a /usr/lib/icu/current symbolic link across installations
|
||||
of the libicuXX packages. The symlink will always point to the
|
||||
highest numbered version of ICU.
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Fri, 27 Oct 2000 15:40:12 -0700
|
||||
|
||||
icu (1.6.0.1-20001017-1) unstable; urgency=low
|
||||
|
||||
* Initial Release.
|
||||
|
||||
-- Yves Arrouye <yves@debian.org> Tue, 24 Oct 2000 16:14:12 -0700
|
||||
|
||||
Local variables:
|
||||
mode: debian-changelog
|
||||
End:
|
90
extern/icu/debian/control
vendored
90
extern/icu/debian/control
vendored
@ -1,90 +0,0 @@
|
||||
Source: icu
|
||||
Section: libs
|
||||
Priority: optional
|
||||
Maintainer: Daniel Glassey <wdg@debian.org>
|
||||
Uploaders: Ivo Timmermans <ivo@debian.org>
|
||||
Standards-Version: 3.6.0
|
||||
Build-Depends: debhelper (>> 3.0), doxygen, autotools-dev
|
||||
|
||||
Package: libicu30-dev
|
||||
Section: devel
|
||||
Architecture: any
|
||||
Depends: libicu${major} (= ${Source-Version}), libc6-dev
|
||||
Provides: libicu-dev
|
||||
Conflicts: libicu-dev
|
||||
Suggests: icu-doc
|
||||
Description: International Components for Unicode (development files)
|
||||
ICU is a C++ and C library that provides robust and full-featured Unicode
|
||||
and locale support. This package contains the development files for ICU.
|
||||
|
||||
Package: icu-doc
|
||||
Section: doc
|
||||
Architecture: all
|
||||
Description: API documentation for ICU classes and functions
|
||||
ICU is a C++ and C library that provides robust and full-featured Unicode
|
||||
and locale support. This package contains HTML files documenting the ICU
|
||||
APIs.
|
||||
|
||||
Package: libicu30
|
||||
Section: libs
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}
|
||||
Recommends: icu
|
||||
Description: International Components for Unicode (libraries)
|
||||
ICU is a C++ and C library that provides robust and full-featured Unicode
|
||||
and locale support. This package contains the runtime libraries for
|
||||
ICU. It does not contain any of the data files needed at runtime and
|
||||
present in the `icu' and `icu-locales` packages.
|
||||
|
||||
Package: icu
|
||||
Section: libs
|
||||
Architecture: any
|
||||
Depends: libicu${major} (>= ${Source-Version}), make
|
||||
Recommends: icu-locales
|
||||
Description: International Components for Unicode (non locale data)
|
||||
ICU is a C++ and C library that provides robust and full-featured Unicode
|
||||
and locale support. The library provides calendar support, conversions
|
||||
for more than 230 character sets, language-sensitive collation, date
|
||||
and time formatting, support for more than 140 locales, message catalogs
|
||||
and resources, message formatting, normalization, number and currency
|
||||
formatting, time zones support, transliteration, word, line and
|
||||
sentence breaking, etc.
|
||||
.
|
||||
This package contains the Unicode character database and derived
|
||||
properties, along with converters and time zones data.
|
||||
It also contains the tools needed to manipulate these data.
|
||||
|
||||
Package: icu-locales
|
||||
Section: libs
|
||||
Architecture: any
|
||||
Depends: libicu${major} (>= ${Source-Version})
|
||||
Description: Locale data for ICU
|
||||
The locale data are used by ICU to provide localization (l10n) and
|
||||
internationalization (i18n) support to applications using the ICU library.
|
||||
This package also contains break data for various languages, and
|
||||
transliteration data.
|
||||
|
||||
Package: icu-data
|
||||
Priority: extra
|
||||
Section: libs
|
||||
Architecture: all
|
||||
Depends: icu
|
||||
Description: Data for ICU (source files)
|
||||
These data describe the Unicode data (normative and informative), and
|
||||
also all the table-based converters provided in the ICU distribution.
|
||||
.
|
||||
This package contains uncompiled source data. Precompiled data are in the
|
||||
`libicu${major}' package.
|
||||
|
||||
Package: icu-i18ndata
|
||||
Priority: extra
|
||||
Section: libs
|
||||
Architecture: all
|
||||
Depends: icu
|
||||
Description: Locale data for ICU (source files)
|
||||
The locale data are used by ICU to provide localization (l10n) and
|
||||
internationalization (i18n) support to ICU applications. This package
|
||||
also contains break data for various languages, and transliteration data.
|
||||
.
|
||||
This package contains uncompiled source data. Precompiled data are in the
|
||||
`icu-locales' package.
|
35
extern/icu/debian/copyright
vendored
35
extern/icu/debian/copyright
vendored
@ -1,35 +0,0 @@
|
||||
ICU License - ICU 1.8.1 and later
|
||||
|
||||
COPYRIGHT AND PERMISSION NOTICE
|
||||
|
||||
Copyright (c) 1995-2001 International Business Machines Corporation and others
|
||||
All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, and/or sell copies of the Software, and to permit persons
|
||||
to whom the Software is furnished to do so, provided that the above
|
||||
copyright notice(s) and this permission notice appear in all copies of
|
||||
the Software and that both the above copyright notice(s) and this
|
||||
permission notice appear in supporting documentation.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||
HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of a copyright holder
|
||||
shall not be used in advertising or otherwise to promote the sale, use
|
||||
or other dealings in this Software without prior written authorization
|
||||
of the copyright holder.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
All trademarks and registered trademarks mentioned herein are the property of their respective owners.
|
||||
|
13
extern/icu/debian/icu-doc.doc-base
vendored
13
extern/icu/debian/icu-doc.doc-base
vendored
@ -1,13 +0,0 @@
|
||||
Document: icu-doc
|
||||
Title: ICU API Documentation
|
||||
Author: IBM Corporation and Others
|
||||
Abstract: This manual describes the APIs of the
|
||||
International Components for Unicode C/C++
|
||||
library. It is a useful reference for the
|
||||
ICU programmer.
|
||||
Section: Libs
|
||||
|
||||
Format: HTML
|
||||
Index: /usr/share/doc/icu-doc/html/index.html
|
||||
Files: /usr/share/doc/icu-doc/html/*.html
|
||||
|
0
extern/icu/debian/icu.conffiles.in
vendored
0
extern/icu/debian/icu.conffiles.in
vendored
71
extern/icu/debian/icu.postinst.in
vendored
71
extern/icu/debian/icu.postinst.in
vendored
@ -1,71 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Copyright (c) 2000-2003 International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
# postinst script for foo
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postinst> `configure' <most-recently-configured-version>
|
||||
# * <old-postinst> `abort-upgrade' <new version>
|
||||
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
||||
# <new-version>
|
||||
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
||||
# <failed-install-package> <version> `removing'
|
||||
# <conflicting-package> <version>
|
||||
# for details, see /usr/share/doc/packaging-manual/
|
||||
#
|
||||
# quoting from the policy:
|
||||
# Any necessary prompting should almost always be confined to the
|
||||
# post-installation script, and should be protected with a conditional
|
||||
# so that unnecessary prompting doesn't happen if a package's
|
||||
# installation fails and the `postinst' is called with `abort-upgrade',
|
||||
# `abort-remove' or `abort-deconfigure'.
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
# Adjust the current ICU link in @libdir@/@PACKAGE@
|
||||
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
|
||||
if [ -d @libdir@/@PACKAGE@ ]
|
||||
then
|
||||
icucurrent=`2>/dev/null ls -dp @libdir@/@PACKAGE@/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
|
||||
cd @libdir@/@PACKAGE@
|
||||
rm -f current
|
||||
if test x"$icucurrent" != x
|
||||
then
|
||||
ln -s "$icucurrent" current
|
||||
fi
|
||||
|
||||
# Set ICU_DATA for ease of testing files. It is not necessary to
|
||||
# export it as we are guaranteed that the binaries we invoke will
|
||||
# use the right directory. But we're not taking chances with the
|
||||
# future :)
|
||||
|
||||
ICU_DATA=@libdir@/@PACKAGE@/@VERSION@
|
||||
export ICU_DATA
|
||||
|
||||
fi
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postinst called with unknown argument \`$1'" >&2
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
56
extern/icu/debian/icu.prerm.in
vendored
56
extern/icu/debian/icu.prerm.in
vendored
@ -1,56 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Copyright (c) 2000-2003 International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
# prerm script for foo
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <prerm> `remove'
|
||||
# * <old-prerm> `upgrade' <new-version>
|
||||
# * <new-prerm> `failed-upgrade' <old-version>
|
||||
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
|
||||
# * <deconfigured's-prerm> `deconfigure' `in-favour'
|
||||
# <package-being-installed> <version> `removing'
|
||||
# <conflicting-package> <version>
|
||||
# for details, see /usr/share/doc/packaging-manual/
|
||||
|
||||
case "$1" in
|
||||
remove|upgrade|deconfigure)
|
||||
# Adjust the current ICU link in @libdir@/@PACKAGE@
|
||||
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
|
||||
if [ -d @libdir@/@PACKAGE@ ]
|
||||
then
|
||||
icucurrent=`2>/dev/null ls -dp @libdir@/@PACKAGE@/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
|
||||
cd @libdir@/@PACKAGE@
|
||||
rm -f current
|
||||
if test x"$icucurrent" != x
|
||||
then
|
||||
ln -s "$icucurrent" current
|
||||
fi
|
||||
fi
|
||||
|
||||
# install-info --quiet --remove /usr/info/foo.info.gz
|
||||
;;
|
||||
|
||||
failed-upgrade)
|
||||
;;
|
||||
*)
|
||||
echo "prerm called with unknown argument \`$1'" >&2
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
||||
|
70
extern/icu/debian/libicu.postinst
vendored
70
extern/icu/debian/libicu.postinst
vendored
@ -1,70 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Copyright (c) 2000-2003 International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
# postinst script for foo
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postinst> `configure' <most-recently-configured-version>
|
||||
# * <old-postinst> `abort-upgrade' <new version>
|
||||
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
||||
# <new-version>
|
||||
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
||||
# <failed-install-package> <version> `removing'
|
||||
# <conflicting-package> <version>
|
||||
# for details, see /usr/share/doc/packaging-manual/
|
||||
#
|
||||
# quoting from the policy:
|
||||
# Any necessary prompting should almost always be confined to the
|
||||
# post-installation script, and should be protected with a conditional
|
||||
# so that unnecessary prompting doesn't happen if a package's
|
||||
# installation fails and the `postinst' is called with `abort-upgrade',
|
||||
# `abort-remove' or `abort-deconfigure'.
|
||||
|
||||
# Call ldconfig in a way that makes lintian happy.
|
||||
|
||||
if [ "$1" = "configure" ]; then ldconfig; fi
|
||||
|
||||
# And now do the rest of the configuration
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
|
||||
# Adjust the current ICU link in /usr/lib/icu
|
||||
|
||||
if [ -d /usr/lib/icu ]
|
||||
then
|
||||
|
||||
icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
|
||||
cd /usr/lib/icu
|
||||
rm -f current
|
||||
if test x"$icucurrent" != x
|
||||
then
|
||||
ln -s "$icucurrent" current
|
||||
ln -sf current/Makefile.inc .
|
||||
fi
|
||||
|
||||
fi
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postinst called with unknown argument \`$1'" >&2
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
||||
|
55
extern/icu/debian/libicu.prerm.in
vendored
55
extern/icu/debian/libicu.prerm.in
vendored
@ -1,55 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Copyright (c) 2000-2003 International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
# prerm script for foo
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <prerm> `remove'
|
||||
# * <old-prerm> `upgrade' <new-version>
|
||||
# * <new-prerm> `failed-upgrade' <old-version>
|
||||
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
|
||||
# * <deconfigured's-prerm> `deconfigure' `in-favour'
|
||||
# <package-being-installed> <version> `removing'
|
||||
# <conflicting-package> <version>
|
||||
# for details, see /usr/share/doc/packaging-manual/
|
||||
|
||||
case "$1" in
|
||||
remove|upgrade|deconfigure)
|
||||
# Adjust the current ICU link in @libdir@/@PACKAGE@
|
||||
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
|
||||
if [ -d @libdir@/@PACKAGE@ ]
|
||||
then
|
||||
icucurrent=`2>/dev/null ls -dp @libdir@/@PACKAGE@/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
|
||||
cd @libdir@/@PACKAGE@
|
||||
rm -f current
|
||||
if test x"$icucurrent" != x
|
||||
then
|
||||
ln -s "$icucurrent" current
|
||||
fi
|
||||
fi
|
||||
|
||||
# install-info --quiet --remove /usr/info/foo.info.gz
|
||||
;;
|
||||
failed-upgrade)
|
||||
;;
|
||||
*)
|
||||
echo "prerm called with unknown argument \`$1'" >&2
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
||||
|
63
extern/icu/debian/postinst.in
vendored
63
extern/icu/debian/postinst.in
vendored
@ -1,63 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Copyright (c) 2000-2003 International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
# postinst script for foo
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postinst> `configure' <most-recently-configured-version>
|
||||
# * <old-postinst> `abort-upgrade' <new version>
|
||||
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
||||
# <new-version>
|
||||
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
||||
# <failed-install-package> <version> `removing'
|
||||
# <conflicting-package> <version>
|
||||
# for details, see /usr/share/doc/packaging-manual/
|
||||
#
|
||||
# quoting from the policy:
|
||||
# Any necessary prompting should almost always be confined to the
|
||||
# post-installation script, and should be protected with a conditional
|
||||
# so that unnecessary prompting doesn't happen if a package's
|
||||
# installation fails and the `postinst' is called with `abort-upgrade',
|
||||
# `abort-remove' or `abort-deconfigure'.
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
# Adjust the current ICU link in @libdir@/@PACKAGE@
|
||||
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
|
||||
if [ -d @libdir@/@PACKAGE@ ]
|
||||
then
|
||||
icucurrent=`2>/dev/null ls -dp @libdir@/@PACKAGE@/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
|
||||
cd @libdir@/@PACKAGE@
|
||||
rm -f current
|
||||
if test x"$icucurrent" != x
|
||||
then
|
||||
ln -s "$icucurrent" current
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postinst called with unknown argument \`$1'" >&2
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
||||
|
55
extern/icu/debian/prerm.in
vendored
55
extern/icu/debian/prerm.in
vendored
@ -1,55 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Copyright (c) 2000-2003 International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
# prerm script for foo
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <prerm> `remove'
|
||||
# * <old-prerm> `upgrade' <new-version>
|
||||
# * <new-prerm> `failed-upgrade' <old-version>
|
||||
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
|
||||
# * <deconfigured's-prerm> `deconfigure' `in-favour'
|
||||
# <package-being-installed> <version> `removing'
|
||||
# <conflicting-package> <version>
|
||||
# for details, see /usr/share/doc/packaging-manual/
|
||||
|
||||
case "$1" in
|
||||
remove|upgrade|deconfigure)
|
||||
# Adjust the current ICU link in @libdir@/@PACKAGE@
|
||||
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
|
||||
if [ -d @libdir@/@PACKAGE@ ]
|
||||
then
|
||||
icucurrent=`2>/dev/null ls -dp @libdir@/@PACKAGE@/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
|
||||
cd @libdir@/@PACKAGE@
|
||||
rm -f current
|
||||
if test x"$icucurrent" != x
|
||||
then
|
||||
ln -s "$icucurrent" current
|
||||
fi
|
||||
fi
|
||||
|
||||
# install-info --quiet --remove /usr/info/foo.info.gz
|
||||
;;
|
||||
failed-upgrade)
|
||||
;;
|
||||
*)
|
||||
echo "prerm called with unknown argument \`$1'" >&2
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
|
||||
|
256
extern/icu/debian/rules
vendored
256
extern/icu/debian/rules
vendored
@ -1,256 +0,0 @@
|
||||
#!/usr/bin/make -f
|
||||
# Copyright (c) 2000-2003 International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
# ICU debian/rules that uses debhelper.
|
||||
|
||||
# The Debian packages for ICU are created and maintained by
|
||||
# Yves Arrouye <yves@debian.org>. They are part of Debian GNU/Linux
|
||||
# since the Debian woody release.
|
||||
|
||||
# Decide whether we want to automatically manage the repackaging of
|
||||
# the common data from individual files or not.
|
||||
ICU_AUTO_COMMON=NO
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
# This is the debhelper compatability version to use.
|
||||
export DH_COMPAT=2
|
||||
#firstdir := $(shell sed -n 's/Package: \(.*\)/\1/p' debian/control | head -1)else
|
||||
|
||||
# Where the source for ICU is, where to build
|
||||
srcdir = source
|
||||
builddir = build
|
||||
# How to get to $(srcdir) from $(builddir)
|
||||
builddir_relative_topdir = ..
|
||||
builddir_relative_srcdir = $(builddir_relative_topdir)/$(srcdir)
|
||||
|
||||
# Getting the ICU version numbers, stolen from configure.in (that's okay, I
|
||||
# wrote the configure.in part anyway)
|
||||
|
||||
version := $(shell sed -n -e 's/^[ ]*\#[ ]*define[ ]*U_ICU_VERSION[ ]*"\([^"]*\)".*/\1/p' $(srcdir)/common/unicode/uversion.h)
|
||||
libversion := $(shell echo $(version) | sed -e 's/\.//' -e 's/^\([^.]*\)$$/\1.0/')
|
||||
major := $(shell echo $(libversion) | sed 's/\..*//')
|
||||
|
||||
# ICU installation directories, w/o the initial slash
|
||||
pkgdatadir = usr/share/icu
|
||||
icudatadir = $(pkgdatadir)/$(version)
|
||||
pkglibdir = usr/lib/icu
|
||||
iculibdir = $(pkglibdir)/$(version)
|
||||
datasrcdir = usr/share/icu/$(version)/data
|
||||
# This is where data needs to be moved
|
||||
ifeq ($(ICU_AUTO_COMMON),YES)
|
||||
icufildir = $(iculibdir)/files
|
||||
else
|
||||
icufildir = $(iculibdir)
|
||||
endif
|
||||
|
||||
# Build flags
|
||||
|
||||
CFLAGS = -O3 # -Wall
|
||||
ifeq ($(shell uname -m),s390)
|
||||
CXXFLAGS = -O1 # -Wall
|
||||
else
|
||||
CXXFLAGS = -O # -Wall
|
||||
endif
|
||||
|
||||
INSTALL_PROGRAM = /usr/bin/install
|
||||
|
||||
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
|
||||
CFLAGS += -g
|
||||
CXXFLAGS += -g
|
||||
endif
|
||||
ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
|
||||
INSTALL_PROGRAM += -s
|
||||
endif
|
||||
|
||||
all: build
|
||||
|
||||
configure: $(builddir)/configure-stamp
|
||||
$(builddir)/configure-stamp:
|
||||
# Add here commands to configure the package.
|
||||
test -d $(builddir) || mkdir $(builddir)
|
||||
cd $(builddir); CFLAGS='$(CFLAGS)' CXXFLAGS='$(CXXFLAGS)' INSTALL_PROGRAM='$(INSTALL_PROGRAM)' $(SHELL) $(builddir_relative_srcdir)/configure --srcdir=$(builddir_relative_srcdir) --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --with-data-packaging=files --enable-shared --enable-static --disable-samples
|
||||
touch $@
|
||||
|
||||
build: $(builddir)/configure-stamp debian-files $(builddir)/build-stamp
|
||||
|
||||
# Build some Debian files
|
||||
DEBIAN_FILES=icu.conffiles postinst prerm icu.postinst icu.prerm libicu$(major).postinst README.Debian.libicu$(major)-dev
|
||||
|
||||
debian/%: debian/%.in
|
||||
cd $(builddir) \
|
||||
&& CONFIG_FILES=$(builddir_relative_topdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
debian/libicu$(major)%: debian/libicu%
|
||||
cp $< $@
|
||||
debian/README.Debian.libicu$(major)%: debian/README.Debian.libicu%
|
||||
cp $< $@
|
||||
|
||||
debian-files: $(addprefix debian/,$(DEBIAN_FILES))
|
||||
|
||||
$(builddir)/build-stamp:
|
||||
dh_testdir
|
||||
|
||||
# Add here commands to compile the package.
|
||||
$(MAKE) -C $(builddir)
|
||||
$(MAKE) -C $(builddir) doc
|
||||
|
||||
touch $@
|
||||
|
||||
clean: update-debian-files
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
-test -r /usr/share/misc/config.sub && \
|
||||
cp -f /usr/share/misc/config.sub $(srcdir)/config.sub
|
||||
-test -r /usr/share/misc/config.guess && \
|
||||
cp -f /usr/share/misc/config.guess $(srcdir)/config.guess
|
||||
|
||||
$(RM) $(builddir)/build-stamp $(builddir)/configure-stamp
|
||||
|
||||
# Add here commands to clean up after the build process.
|
||||
-$(MAKE) -C $(builddir) distclean
|
||||
#-$(RM) `find $(builddir)/samples $(builddir)/test -name Makefile -print`
|
||||
-$(RM) `find $(builddir) -name Makefile -print`
|
||||
dh_clean
|
||||
$(RM) $(addprefix debian/,$(DEBIAN_FILES)) debian/control.new
|
||||
|
||||
#if test -d $(builddir) -a $(builddir) != $(srcdir); then rmdir `find $(builddir) -type d -print | sort -r`; fi
|
||||
if test -d $(builddir) -a $(builddir) != $(srcdir); then $(RM) -r $(builddir); fi
|
||||
|
||||
install: build
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_clean -k
|
||||
dh_installdirs
|
||||
|
||||
# Add here commands to install the package into debian/tmp
|
||||
$(MAKE) -C $(builddir) install DESTDIR=`pwd`/debian/tmp
|
||||
$(MAKE) -C $(builddir) install-doc DESTDIR=`pwd`/debian/tmp
|
||||
|
||||
# Build architecture-independent files here.
|
||||
binary-indep: build install
|
||||
#
|
||||
# build icu-doc package by moving files
|
||||
#
|
||||
mv debian/tmp/usr/share/doc/icu debian/tmp/usr/share/doc/icu-doc
|
||||
dh_movefiles -picu-doc \
|
||||
usr/share/doc/icu-doc
|
||||
#
|
||||
# build icu-i18ndata from the source data
|
||||
#
|
||||
for d in locales translit brkitr; do \
|
||||
test -d debian/icu-i18ndata/$(datasrcdir)/$$d || \
|
||||
mkdir -p debian/icu-i18ndata/$(datasrcdir)/$$d; \
|
||||
install -m 644 $(srcdir)/data/$$d/*.* \
|
||||
debian/icu-i18ndata/$(datasrcdir)/$$d; \
|
||||
done
|
||||
#
|
||||
# build icu-data from the source data
|
||||
#
|
||||
for d in mappings unidata misc; do \
|
||||
test -d debian/icu-data/$(datasrcdir)/$$d || \
|
||||
mkdir -p debian/icu-data/$(datasrcdir)/$$d; \
|
||||
install -m 644 $(srcdir)/data/$$d/*.* \
|
||||
debian/icu-data/$(datasrcdir)/$$d; \
|
||||
done
|
||||
|
||||
# Build architecture-dependent files here.
|
||||
binary-arch: build install
|
||||
# dh_testversion
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
#
|
||||
# build libicu${major} package by moving files from icu-dev
|
||||
#
|
||||
$(RM) debian/tmp/usr/lib/libicuctestfw.*
|
||||
dh_movefiles -plibicu$(major) \
|
||||
usr/lib/*.so.*
|
||||
mkdir debian/libicu$(major)/usr/lib/icu
|
||||
#
|
||||
# massage data files
|
||||
#
|
||||
# $(RM) debian/tmp/$(iculibdir)/cnvalias.dat
|
||||
ifneq ($(iculibdir),$(icufildir))
|
||||
test -d debian/tmp/$(icufildir) || mkdir debian/tmp/$(icufildir)
|
||||
mv debian/tmp/$(iculibdir)/*.* debian/tmp/$(icufildir)
|
||||
mv debian/tmp/$(icufildir)/*msg.dat debian/tmp/$(iculibdir)
|
||||
mv debian/tmp/$(icufildir)/*.inc debian/tmp/$(iculibdir)
|
||||
endif
|
||||
#
|
||||
# build icu package by moving files from icu-dev
|
||||
#
|
||||
$(RM) debian/tmp/$(iculibdir)/../Makefile.inc debian/tmp/$(iculibdir)/../current
|
||||
ifneq ($(iculibdir),$(icufildir))
|
||||
dh_movefiles -picu \
|
||||
$(iculibdir)/*msg.dat
|
||||
endif
|
||||
# The license.html must be installed with ICU's source code.
|
||||
# This includes the headers.
|
||||
dh_movefiles -picu \
|
||||
etc \
|
||||
usr/bin \
|
||||
usr/sbin \
|
||||
$(icudatadir)/license.html \
|
||||
$(iculibdir)/*.inc \
|
||||
$(icufildir)/*.cnv \
|
||||
$(icufildir)/*.dat \
|
||||
usr/share/man
|
||||
#
|
||||
# build icu-locales package by moving files from icu-dev
|
||||
#
|
||||
dh_movefiles -picu-locales \
|
||||
$(icufildir)/*.res \
|
||||
$(icufildir)/*.brk
|
||||
#
|
||||
# move the rest of the development files
|
||||
# in their package
|
||||
#
|
||||
dh_movefiles -a usr
|
||||
#
|
||||
# do a bit of cleanup
|
||||
#
|
||||
$(RM) -r debian/tmp/etc debian/tmp/usr/sbin \
|
||||
debian/tmp/usr/share/man
|
||||
#
|
||||
# continue to prepare packages
|
||||
#
|
||||
# dh_installdebconf
|
||||
dh_installdocs -a
|
||||
dh_installexamples -a $(srcdir)/samples/*
|
||||
find debian/libicu$(major)-dev -name CVS -o -name .cvsignore | xargs $(RM) -r
|
||||
dh_installmenu -a
|
||||
# dh_installemacsen
|
||||
# dh_installpam
|
||||
# dh_installinit
|
||||
dh_installcron -a
|
||||
dh_installmanpages -picu
|
||||
dh_installinfo -a
|
||||
# dh_undocumented -picu
|
||||
dh_installchangelogs -a
|
||||
dh_link -a
|
||||
dh_strip -a
|
||||
dh_compress -a
|
||||
dh_fixperms -a
|
||||
# You may want to make some executables suid here.
|
||||
dh_makeshlibs -a
|
||||
dh_installdeb -a
|
||||
# dh_perl
|
||||
dh_shlibdeps -a -ldebian/libicu$(major)/usr/lib
|
||||
dh_gencontrol -a -- -Vversion=$(version) -Vmajor=$(major)
|
||||
dh_md5sums -a
|
||||
dh_builddeb -a
|
||||
|
||||
# Automatically update changelog and control
|
||||
update-debian-files:
|
||||
if [ x"$$NO_AUTO_DCH" = x ]; \
|
||||
then \
|
||||
cvers=`sed -n 's/^icu (\([^)]*\)).*/\1/p' debian/changelog | head -1`; if dpkg --compare-versions $$cvers lt $(version)-1; then \
|
||||
dch -v $(version)-1 "Update to ICU version $(version). (This comment is generated.)"; \
|
||||
sed 's/libicu[0-9][0-9]*/libicu$(major)/g' debian/control >debian/control.new && mv debian/control.new debian/control; \
|
||||
fi; \
|
||||
fi
|
||||
|
||||
binary: update-debian-files binary-indep binary-arch
|
||||
.PHONY: build clean binary-indep binary-arch binary install debian-files update-changelog
|
||||
|
BIN
extern/icu/icu.exe
vendored
Normal file
BIN
extern/icu/icu.exe
vendored
Normal file
Binary file not shown.
45
extern/icu/license.html
vendored
45
extern/icu/license.html
vendored
@ -1,45 +0,0 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></meta>
|
||||
<title>ICU License - ICU 1.8.1 and later</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>ICU License - ICU 1.8.1 and later</h1>
|
||||
<pre>
|
||||
COPYRIGHT AND PERMISSION NOTICE
|
||||
|
||||
Copyright (c) 1995-2003 International Business Machines Corporation and others
|
||||
All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, and/or sell copies of the Software, and to permit persons
|
||||
to whom the Software is furnished to do so, provided that the above
|
||||
copyright notice(s) and this permission notice appear in all copies of
|
||||
the Software and that both the above copyright notice(s) and this
|
||||
permission notice appear in supporting documentation.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||
HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
|
||||
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of a copyright holder
|
||||
shall not be used in advertising or otherwise to promote the sale, use
|
||||
or other dealings in this Software without prior written authorization
|
||||
of the copyright holder.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
All trademarks and registered trademarks mentioned herein are the property of their respective owners.
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
159
extern/icu/packaging/PACKAGES
vendored
159
extern/icu/packaging/PACKAGES
vendored
@ -1,159 +0,0 @@
|
||||
Copyright (C) 2000-2003, International Business Machines
|
||||
Corporation and others. All Rights Reserved.
|
||||
ICU is packaged into a number of small, interdependent packages. This
|
||||
file describes what these packages are, what their name should be
|
||||
like, and what their contents are. It is useful as a reference and a
|
||||
guide when packaging ICU on a new system.
|
||||
|
||||
+ List of ICU packages.
|
||||
|
||||
ICU is distributed as the following packages:
|
||||
|
||||
- ICU libraries. This package contains the runtime libraries needed by
|
||||
applications that use ICU. All the other packages require this package
|
||||
to be installed.
|
||||
- ICU. This package contains the converters data, the timezones data,
|
||||
and all the ICU tools.
|
||||
- ICU locales. This package adds locales and break data.
|
||||
- ICU development. This package contains the files necessary to build
|
||||
applications that use ICU, i.e. header files, links to shared
|
||||
libraries used by the linker, static libraries, etc... It also
|
||||
contains sample applications and documentation.
|
||||
- ICU docs. This package contains further documentation for ICU,
|
||||
including a complete API reference.
|
||||
- ICU data. This package contains the source for the compiled data
|
||||
contained by the ICU package.
|
||||
- ICU international data. This package contains the source for the
|
||||
compiled data contained by the ICU locales package.
|
||||
|
||||
In this file, we will refer to Autoconf variables as in $(bindir). In
|
||||
addition to these, we will use the following variables to denote
|
||||
ICU-specific directories or information:
|
||||
|
||||
VERSION ICU's dotted version number, e.g. 1.6.0.1 as of this
|
||||
writing.
|
||||
|
||||
ICUDATADIR The directory where portable ICU data are. This is
|
||||
defined as $(datadir)/icu/$(VERSION).
|
||||
ICULIBDIR The directory where platform-specific ICU data
|
||||
are. This is defined as $(libdir)/icu/$(VERSION).
|
||||
ICUSYSCONFDIR The directory where ICU configuration files are. This
|
||||
is defined as $(sysconfdir)/icu.
|
||||
|
||||
When referring to libraries, .so will be used to denote the extension
|
||||
of a shared library, and .a to denote the extension of a static
|
||||
library. These extensions will actually be different on some platforms.
|
||||
|
||||
+ Configuration and compilation of ICU
|
||||
|
||||
ICU should be configured with the following options:
|
||||
|
||||
--with-data-packaging=files
|
||||
--disable-rpath
|
||||
--enable-shared
|
||||
--enable-static
|
||||
--without-samples
|
||||
|
||||
in addition to platform-specific settings (like a specific mandir or
|
||||
sysconfdir). Note that the use of --disable-rpath assumes that the
|
||||
packaging is made for a standard location, or that the package
|
||||
installation/deinstallation will correctly manage the configuration
|
||||
of the system's dyanmic loader. This is the right way of doing things.
|
||||
|
||||
The configure script invokation should also be done with
|
||||
|
||||
CFLAGS="-O2"
|
||||
|
||||
set, as in:
|
||||
|
||||
$ CFLAGS="-O2" ./configure ...
|
||||
|
||||
The files packaging mode is chosen because it offers the maximum
|
||||
flexibility. Packages can be split easily, and system administrators
|
||||
can add converters, aliases, and other resources with little
|
||||
effort. Ideally, the ICU build will be modified to allow for distributing a
|
||||
libicudata.so with all the converters and locales, but indexes and aliases
|
||||
as separate files. But for now, this is the easiest way to get started.
|
||||
|
||||
+ The ICU libraries package
|
||||
|
||||
The ICU libraries package is typically named `libicuXX' where XX is
|
||||
the major number of ICU's libraries. This number is ICU's version
|
||||
number multiplied by 10 and rounded down to the nearest integer (it is
|
||||
also the value of the LIB_VERSION_MAJOR configure substitution
|
||||
variable). For example, for ICU 1.6.0.1, it is 16, so the package name
|
||||
is `libicu16'. The major version is part of the package name to allow
|
||||
for the simultaneous installation of different ICU releases.
|
||||
|
||||
This package contains:
|
||||
|
||||
- All the shared libraries, and their major number symbolic link, but
|
||||
not the .so symbolic link that is only used at link time (this one is
|
||||
part of the development package). These are $(libdir)/libicu*.so.* and
|
||||
$(libdir)/libustdio.so.* at the time of this writing.
|
||||
|
||||
+ The ICU package
|
||||
|
||||
The ICU package is simply named `icu'. It provides data used by the ICU
|
||||
libraries package and commands to create and manipulate that data.
|
||||
|
||||
This package contains:
|
||||
|
||||
- The Unicode data files (uprops.dat and unames.dat as of this writing).
|
||||
- The time zones data files (tz.dat).
|
||||
- All the binary data files for converters (.cnv files).
|
||||
- All the ICU commands.
|
||||
- The manual pages for ICU commands and file formats.
|
||||
|
||||
+ The ICU locales package
|
||||
|
||||
The ICU locales package is named `icu-locales'. It provides data used by
|
||||
internationalization support in ICU.
|
||||
|
||||
This package contains:
|
||||
|
||||
- All the data for locales in ICU (.dat files).
|
||||
- All the break data for specific locales (.brk files).
|
||||
|
||||
+ The ICU development package
|
||||
|
||||
The ICU developpment package is named `libicu-dev'. It provides all
|
||||
the files necessary to write applications that use ICU, along with
|
||||
examples and some documentation.
|
||||
|
||||
This package contains:
|
||||
|
||||
- The /usr/include/unicode directory which contains all the ICU
|
||||
headers.
|
||||
- The .so symbolic links used by the linker to link against the
|
||||
latest version of the libraries.
|
||||
- A sample Makefile fragment that can be included by applications
|
||||
using ICU, to faciliate their building, along with a platform-specific
|
||||
configuration file included by this fragment.
|
||||
- The sample applications from the ICU source tree, in an appropriate
|
||||
location for the system that the package is installed on (for example,
|
||||
on Debian, in /usr/share/doc/libicu-dev/examples).
|
||||
|
||||
This package depends on the ICU libraries package with the exact same
|
||||
version, since it provides .so symbolic links to the latest libraries.
|
||||
|
||||
+ The ICU docs package
|
||||
|
||||
The ICU docs package is named `libicu-doc'. It contains the files
|
||||
generated by doxygen when the `make doc' command is executed, in a
|
||||
location appropriate for the system that the package is installed on.
|
||||
|
||||
+ The ICU data package
|
||||
|
||||
The ICU data package is named `icu-data'. It contains source files for
|
||||
the data found in the ICU package. These files are installed in
|
||||
$(ICUDATADIR).
|
||||
|
||||
+ The ICU international data package
|
||||
|
||||
The ICU data package is named `icu-i18ndata'. It contains source files for
|
||||
the dat founf in the ICU locales package. These files are installed in
|
||||
$(ICUDATADIR).
|
||||
|
||||
----
|
||||
Yves Arrouye <yves@realnames.com>
|
13
extern/icu/packaging/README
vendored
13
extern/icu/packaging/README
vendored
@ -1,13 +0,0 @@
|
||||
Copyright (C) 2000-2003, International Business Machines
|
||||
Corporation and others. All Rights Reserved.
|
||||
|
||||
This directory contains information, input files and scripts for
|
||||
packaging ICU using specific packaging tools. We assume that the
|
||||
packager is familiar with the tools and procedures needed to build a
|
||||
package for a given packaging method (for example, how to use
|
||||
dpkg-buildpackage(1) on Debian GNU/Linux, or rpm(8) on distributions that
|
||||
use RPM packages).
|
||||
|
||||
Please read the file PACKAGES if you are interested in packaging ICU
|
||||
yourself. It describes what the different packages should be, and what
|
||||
their contents are.
|
5
extern/icu/packaging/debian/README
vendored
5
extern/icu/packaging/debian/README
vendored
@ -1,5 +0,0 @@
|
||||
// Copyright (c) 2000-2003 International Business Machines
|
||||
// Corporation and others. All Rights Reserved.
|
||||
The Debian packaging is in the debian directory at the toplevel of ICU's
|
||||
distribution.
|
||||
|
233
extern/icu/packaging/rpm/icu.spec
vendored
233
extern/icu/packaging/rpm/icu.spec
vendored
@ -1,233 +0,0 @@
|
||||
# Copyright (C) 2000-2004, International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
#
|
||||
# RPM specification file for ICU.
|
||||
#
|
||||
# Neal Probert <nprobert@walid.com> is the current maintainer.
|
||||
# Yves Arrouye <yves@realnames.com> is the original author.
|
||||
|
||||
# This file can be freely redistributed under the same license as ICU.
|
||||
|
||||
Name: icu
|
||||
Version: 3.0
|
||||
Release: 1
|
||||
Requires: libicu30 >= %{version}
|
||||
Summary: International Components for Unicode
|
||||
Packager: Ian Holsman (CNET Networks) <ianh@cnet.com>
|
||||
Copyright: X License
|
||||
Group: System Environment/Libraries
|
||||
Source: icu-%{version}.tgz
|
||||
BuildRoot: /var/tmp/%{name}-%{version}
|
||||
%description
|
||||
ICU is a set of C and C++ libraries that provides robust and full-featured
|
||||
Unicode and locale support. The library provides calendar support, conversions
|
||||
for many character sets, language sensitive collation, date
|
||||
and time formatting, support for many locales, message catalogs
|
||||
and resources, message formatting, normalization, number and currency
|
||||
formatting, time zones support, transliteration, word, line and
|
||||
sentence breaking, etc.
|
||||
|
||||
This package contains the Unicode character database and derived
|
||||
properties, along with converters and time zones data.
|
||||
|
||||
This package contains the runtime libraries for ICU. It does
|
||||
not contain any of the data files needed at runtime and present in the
|
||||
`icu' and `icu-locales` packages.
|
||||
|
||||
%package -n libicu30
|
||||
Summary: International Components for Unicode (libraries)
|
||||
Group: Development/Libraries
|
||||
%description -n libicu30
|
||||
ICU is a set of C and C++ libraries that provides robust and full-featured
|
||||
Unicode support. This package contains the runtime libraries for ICU. It does
|
||||
not contain any of the data files needed at runtime and present in the
|
||||
`icu' and `icu-locales` packages.
|
||||
|
||||
%package -n libicu-devel
|
||||
Summary: International Components for Unicode (development files)
|
||||
Group: Development/Libraries
|
||||
Requires: libicu30 = %{version}
|
||||
%description -n libicu-devel
|
||||
ICU is a set of C and C++ libraries that provides robust and full-featured
|
||||
Unicode support. This package contains the development files for ICU.
|
||||
|
||||
%package locales
|
||||
Summary: Locale data for ICU
|
||||
Group: System Environment/Libraries
|
||||
Requires: libicu30 >= %{version}
|
||||
%description locales
|
||||
The locale data are used by ICU to provide localization (l10n),
|
||||
internationalization (i18n) and timezone support to ICU applications.
|
||||
This package also contains break data for various languages,
|
||||
and transliteration data.
|
||||
|
||||
%post
|
||||
# Adjust the current ICU link in /usr/lib/icu
|
||||
|
||||
icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
|
||||
cd /usr/lib/icu
|
||||
rm -f /usr/lib/icu/current
|
||||
if test x"$icucurrent" != x
|
||||
then
|
||||
ln -s "$icucurrent" current
|
||||
fi
|
||||
|
||||
#ICU_DATA=/usr/share/icu/%{version}
|
||||
#export ICU_DATA
|
||||
|
||||
%preun
|
||||
# Adjust the current ICU link in /usr/lib/icu
|
||||
|
||||
icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n -e '/\/%{version}\//d' -e 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
|
||||
cd /usr/lib/icu
|
||||
rm -f /usr/lib/icu/current
|
||||
if test x"$icucurrent" != x
|
||||
then
|
||||
ln -s "$icucurrent" current
|
||||
fi
|
||||
|
||||
%post -n libicu30
|
||||
ldconfig
|
||||
|
||||
# Adjust the current ICU link in /usr/lib/icu
|
||||
|
||||
icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
|
||||
cd /usr/lib/icu
|
||||
rm -f /usr/lib/icu/current
|
||||
if test x"$icucurrent" != x
|
||||
then
|
||||
ln -s "$icucurrent" current
|
||||
fi
|
||||
|
||||
%preun -n libicu30
|
||||
# Adjust the current ICU link in /usr/lib/icu
|
||||
|
||||
icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n -e '/\/%{version}\//d' -e 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
|
||||
cd /usr/lib/icu
|
||||
rm -f /usr/lib/icu/current
|
||||
if test x"$icucurrent" != x
|
||||
then
|
||||
ln -s "$icucurrent" current
|
||||
fi
|
||||
|
||||
%prep
|
||||
%setup -q -n icu
|
||||
|
||||
%build
|
||||
cd source
|
||||
chmod a+x ./configure
|
||||
CFLAGS="-O3" CXXFLAGS="-O" ./configure --prefix=/usr --sysconfdir=/etc --with-data-packaging=files --enable-shared --enable-static --disable-samples
|
||||
echo 'CPPFLAGS += -DICU_DATA_DIR=\"/usr/share/icu/%{version}\"' >> icudefs.mk
|
||||
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
cd source
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
%doc readme.html
|
||||
%doc license.html
|
||||
/usr/share/icu/%{version}/license.html
|
||||
/usr/share/icu/%{version}/icudt30l/*.cnv
|
||||
/usr/share/icu/%{version}/icudt30l/*.icu
|
||||
/usr/share/icu/%{version}/icudt30l/*.spp
|
||||
|
||||
/usr/bin/derb
|
||||
/usr/bin/genbrk
|
||||
/usr/bin/gencnval
|
||||
/usr/bin/genrb
|
||||
/usr/bin/icu-config
|
||||
/usr/bin/makeconv
|
||||
/usr/bin/pkgdata
|
||||
/usr/bin/uconv
|
||||
|
||||
/usr/sbin/decmn
|
||||
/usr/sbin/genccode
|
||||
/usr/sbin/gencmn
|
||||
/usr/sbin/gennames
|
||||
/usr/sbin/gennorm
|
||||
/usr/sbin/genpname
|
||||
/usr/sbin/genprops
|
||||
/usr/sbin/gensprep
|
||||
/usr/sbin/genuca
|
||||
/usr/sbin/icuswap
|
||||
/usr/share/icu/%{version}/mkinstalldirs
|
||||
|
||||
/usr/man/man1/gencnval.1.*
|
||||
/usr/man/man1/derb.1.*
|
||||
/usr/man/man1/genrb.1.*
|
||||
/usr/man/man1/icu-config.1.*
|
||||
/usr/man/man1/makeconv.1.*
|
||||
/usr/man/man1/pkgdata.1.*
|
||||
/usr/man/man1/uconv.1.*
|
||||
/usr/man/man8/decmn.8.*
|
||||
/usr/man/man8/genccode.8.*
|
||||
/usr/man/man8/gencmn.8.*
|
||||
/usr/man/man8/gennames.8.*
|
||||
/usr/man/man8/gennorm.8.*
|
||||
/usr/man/man8/genprops.8.*
|
||||
/usr/man/man8/genuca.8.*
|
||||
/usr/man/man8/gensprep.8.*
|
||||
|
||||
%files -n icu-locales
|
||||
/usr/share/icu/%{version}/icudt30l/*.brk
|
||||
/usr/share/icu/%{version}/icudt30l/*.res
|
||||
/usr/share/icu/%{version}/icudt30l/coll/*.res
|
||||
|
||||
%files -n libicu30
|
||||
%doc license.html
|
||||
/usr/lib/libicui18n.so.30
|
||||
/usr/lib/libicui18n.so.30.0
|
||||
/usr/lib/libicutu.so.30
|
||||
/usr/lib/libicutu.so.30.0
|
||||
/usr/lib/libicuuc.so.30
|
||||
/usr/lib/libicuuc.so.30.0
|
||||
/usr/lib/libicudata.so.30
|
||||
/usr/lib/libicudata.so.30.0
|
||||
/usr/lib/libicuio.so.30
|
||||
/usr/lib/libicuio.so.30.0
|
||||
/usr/lib/libiculx.so.30
|
||||
/usr/lib/libiculx.so.30.0
|
||||
/usr/lib/libicule.so.30
|
||||
/usr/lib/libicule.so.30.0
|
||||
|
||||
%files -n libicu-devel
|
||||
%doc readme.html
|
||||
%doc license.html
|
||||
/usr/lib/libicui18n.so
|
||||
/usr/lib/libsicui18n.a
|
||||
/usr/lib/libicuuc.so
|
||||
/usr/lib/libsicuuc.a
|
||||
/usr/lib/libicutu.so
|
||||
/usr/lib/libsicutu.a
|
||||
/usr/lib/libicuio.so
|
||||
/usr/lib/libsicuio.a
|
||||
/usr/lib/libicudata.so
|
||||
/usr/lib/libsicudata.a
|
||||
/usr/lib/libicule.so
|
||||
/usr/lib/libsicule.a
|
||||
/usr/lib/libiculx.so
|
||||
/usr/lib/libsiculx.a
|
||||
/usr/include/unicode/*.h
|
||||
/usr/include/layout/*.h
|
||||
/usr/lib/icu/%{version}/Makefile.inc
|
||||
/usr/lib/icu/Makefile.inc
|
||||
/usr/share/icu/%{version}/config
|
||||
/usr/share/doc/icu-%{version}/*
|
||||
|
||||
%changelog
|
||||
* Mon Jun 07 2004 Alexei Dets <adets@idsk.com>
|
||||
- update to 3.0
|
||||
* Tue Aug 16 2003 Steven Loomis <srl@jtcsv.com>
|
||||
- update to 2.6.1 - include license
|
||||
* Thu Jun 05 2003 Steven Loomis <srl@jtcsv.com>
|
||||
- Update to 2.6
|
||||
* Fri Dec 27 2002 Steven Loomis <srl@jtcsv.com>
|
||||
- Update to 2.4 spec
|
||||
* Fri Sep 27 2002 Steven Loomis <srl@jtcsv.com>
|
||||
- minor updates to 2.2 spec. Rpath is off by default, don't pass it as an option.
|
||||
* Mon Sep 16 2002 Ian Holsman <ian@holsman.net>
|
||||
- update to icu 2.2
|
||||
|
2079
extern/icu/readme.html
vendored
2079
extern/icu/readme.html
vendored
File diff suppressed because it is too large
Load Diff
791
extern/icu/source/Doxyfile.in
vendored
791
extern/icu/source/Doxyfile.in
vendored
@ -1,791 +0,0 @@
|
||||
# ********************************************************************
|
||||
# * COPYRIGHT:
|
||||
# * Copyright (c) 2002, International Business Machines Corporation and
|
||||
# * others. All Rights Reserved.
|
||||
# ********************************************************************
|
||||
# Doxyfile 1.2.6
|
||||
|
||||
# This file describes the settings to be used by doxygen for a project
|
||||
#
|
||||
# All text after a hash (#) is considered a comment and will be ignored
|
||||
# The format is:
|
||||
# TAG = value [value, ...]
|
||||
# For lists items can also be appended using:
|
||||
# TAG += value [value, ...]
|
||||
# Values that contain spaces should be placed between quotes (" ")
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# General configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
|
||||
# by quotes) that should identify the project.
|
||||
|
||||
PROJECT_NAME = "ICU @VERSION@"
|
||||
|
||||
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# if some version control system is used.
|
||||
|
||||
PROJECT_NUMBER =
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# base path where the generated documentation will be put.
|
||||
# If a relative path is entered, it will be relative to the location
|
||||
# where doxygen was started. If left blank the current directory will be used.
|
||||
|
||||
OUTPUT_DIRECTORY = doc
|
||||
|
||||
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
|
||||
# documentation generated by doxygen is written. Doxygen will use this
|
||||
# information to generate all constant output in the proper language.
|
||||
# The default language is English, other supported languages are:
|
||||
# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese,
|
||||
# Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian,
|
||||
# Polish, Portuguese and Slovene.
|
||||
|
||||
OUTPUT_LANGUAGE = English
|
||||
|
||||
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
|
||||
# documentation are documented, even if no documentation was available.
|
||||
# Private class members and static file members will be hidden unless
|
||||
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
|
||||
|
||||
EXTRACT_ALL = NO
|
||||
|
||||
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
|
||||
# will be included in the documentation.
|
||||
|
||||
EXTRACT_PRIVATE = NO
|
||||
|
||||
# If the EXTRACT_STATIC tag is set to YES all static members of a file
|
||||
# will be included in the documentation.
|
||||
|
||||
EXTRACT_STATIC = NO
|
||||
|
||||
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
|
||||
# undocumented members of documented classes, files or namespaces.
|
||||
# If set to NO (the default) these members will be included in the
|
||||
# various overviews, but no documentation section is generated.
|
||||
# This option has no effect if EXTRACT_ALL is enabled.
|
||||
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
|
||||
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
|
||||
# undocumented classes that are normally visible in the class hierarchy.
|
||||
# If set to NO (the default) these class will be included in the various
|
||||
# overviews. This option has no effect if EXTRACT_ALL is enabled.
|
||||
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
|
||||
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
|
||||
# include brief member descriptions after the members that are listed in
|
||||
# the file and class documentation (similar to JavaDoc).
|
||||
# Set to NO to disable this.
|
||||
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
|
||||
# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
|
||||
# the brief description of a member or function before the detailed description.
|
||||
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
|
||||
# brief descriptions will be completely suppressed.
|
||||
|
||||
REPEAT_BRIEF = YES
|
||||
|
||||
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
|
||||
# Doxygen will generate a detailed section even if there is only a brief
|
||||
# description.
|
||||
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
|
||||
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
|
||||
# path before files name in the file list and in the header files. If set
|
||||
# to NO the shortest path that makes the file name unique will be used.
|
||||
|
||||
FULL_PATH_NAMES = NO
|
||||
|
||||
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
|
||||
# can be used to strip a user defined part of the path. Stripping is
|
||||
# only done if one of the specified strings matches the left-hand part of
|
||||
# the path. It is allowed to use relative paths in the argument list.
|
||||
|
||||
STRIP_FROM_PATH =
|
||||
|
||||
# The INTERNAL_DOCS tag determines if documentation
|
||||
# that is typed after a \internal command is included. If the tag is set
|
||||
# to NO (the default) then the documentation will be excluded.
|
||||
# Set it to YES to include the internal documentation.
|
||||
|
||||
INTERNAL_DOCS = YES
|
||||
|
||||
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
|
||||
# generate a class diagram (in Html and LaTeX) for classes with base or
|
||||
# super classes. Setting the tag to NO turns the diagrams off.
|
||||
|
||||
CLASS_DIAGRAMS = YES
|
||||
|
||||
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
|
||||
# be generated. Documented entities will be cross-referenced with these sources.
|
||||
|
||||
SOURCE_BROWSER = NO
|
||||
|
||||
# Setting the INLINE_SOURCES tag to YES will include the body
|
||||
# of functions and classes directly in the documentation.
|
||||
|
||||
INLINE_SOURCES = NO
|
||||
|
||||
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
|
||||
# doxygen to hide any special comment blocks from generated source code
|
||||
# fragments. Normal C and C++ comments will always remain visible.
|
||||
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
|
||||
# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
|
||||
# file names in lower case letters. If set to YES upper case letters are also
|
||||
# allowed. This is useful if you have classes or files whose names only differ
|
||||
# in case and if your file system supports case sensitive file names. Windows
|
||||
# users are adviced to set this option to NO.
|
||||
|
||||
CASE_SENSE_NAMES = YES
|
||||
|
||||
# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
|
||||
# will show members with their full class and namespace scopes in the
|
||||
# documentation. If set to YES the scope will be hidden.
|
||||
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
|
||||
# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
|
||||
# will generate a verbatim copy of the header file for each class for
|
||||
# which an include is specified. Set to NO to disable this.
|
||||
|
||||
VERBATIM_HEADERS = YES
|
||||
|
||||
# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
|
||||
# will put list of the files that are included by a file in the documentation
|
||||
# of that file.
|
||||
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
|
||||
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
|
||||
# will interpret the first line (until the first dot) of a JavaDoc-style
|
||||
# comment as the brief description. If set to NO, the JavaDoc
|
||||
# comments will behave just like the Qt-style comments (thus requiring an
|
||||
# explict @brief command for a brief description.
|
||||
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
|
||||
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
|
||||
# member inherits the documentation from any documented member that it
|
||||
# reimplements.
|
||||
|
||||
INHERIT_DOCS = YES
|
||||
|
||||
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
|
||||
# is inserted in the documentation for inline members.
|
||||
|
||||
INLINE_INFO = YES
|
||||
|
||||
# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
|
||||
# will sort the (detailed) documentation of file and class members
|
||||
# alphabetically by member name. If set to NO the members will appear in
|
||||
# declaration order.
|
||||
|
||||
SORT_MEMBER_DOCS = YES
|
||||
|
||||
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
|
||||
# tag is set to YES, then doxygen will reuse the documentation of the first
|
||||
# member in the group (if any) for the other members of the group. By default
|
||||
# all members of a group must be documented explicitly.
|
||||
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
|
||||
# The TAB_SIZE tag can be used to set the number of spaces in a tab.
|
||||
# Doxygen uses this value to replace tabs by spaces in code fragments.
|
||||
|
||||
TAB_SIZE = 8
|
||||
|
||||
# The ENABLE_SECTIONS tag can be used to enable conditional
|
||||
# documentation sections, marked by \if sectionname ... \endif.
|
||||
|
||||
ENABLED_SECTIONS =
|
||||
|
||||
# The GENERATE_TODOLIST tag can be used to enable (YES) or
|
||||
# disable (NO) the todo list. This list is created by putting \todo
|
||||
# commands in the documentation.
|
||||
|
||||
GENERATE_TODOLIST = YES
|
||||
|
||||
# The GENERATE_TESTLIST tag can be used to enable (YES) or
|
||||
# disable (NO) the test list. This list is created by putting \test
|
||||
# commands in the documentation.
|
||||
|
||||
GENERATE_TESTLIST = YES
|
||||
|
||||
# The GENERATE_BUGLIST tag can be used to enable (YES) or
|
||||
# disable (NO) the bug list. This list is created by putting \bug
|
||||
# commands in the documentation.
|
||||
|
||||
GENERATE_BUGLIST = YES
|
||||
|
||||
# This tag can be used to specify a number of aliases that acts
|
||||
# as commands in the documentation. An alias has the form "name=value".
|
||||
# For example adding "sideeffect=\par Side Effects:\n" will allow you to
|
||||
# put the command \sideeffect (or @sideeffect) in the documentation, which
|
||||
# will result in a user defined paragraph with heading "Side Effects:".
|
||||
# You can put \n's in the value part of an alias to insert newlines.
|
||||
|
||||
ALIASES =
|
||||
|
||||
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
|
||||
# the initial value of a variable or define consist of for it to appear in
|
||||
# the documentation. If the initializer consists of more lines than specified
|
||||
# here it will be hidden. Use a value of 0 to hide initializers completely.
|
||||
# The appearance of the initializer of individual variables and defines in the
|
||||
# documentation can be controlled using \showinitializer or \hideinitializer
|
||||
# command in the documentation regardless of this setting.
|
||||
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
|
||||
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
|
||||
# only. Doxygen will then generate output that is more tailored for C.
|
||||
# For instance some of the names that are used will be different. The list
|
||||
# of all members will be omitted, etc.
|
||||
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
|
||||
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
|
||||
# at the bottom of the documentation of classes and structs. If set to YES the
|
||||
# list will mention the files that were used to generate the documentation.
|
||||
|
||||
SHOW_USED_FILES = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The QUIET tag can be used to turn on/off the messages that are generated
|
||||
# by doxygen. Possible values are YES and NO. If left blank NO is used.
|
||||
|
||||
QUIET = NO
|
||||
|
||||
# The WARNINGS tag can be used to turn on/off the warning messages that are
|
||||
# generated by doxygen. Possible values are YES and NO. If left blank
|
||||
# NO is used.
|
||||
|
||||
WARNINGS = YES
|
||||
|
||||
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
|
||||
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
|
||||
# automatically be disabled.
|
||||
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
|
||||
# The WARN_FORMAT tag determines the format of the warning messages that
|
||||
# doxygen can produce. The string should contain the $file, $line, and $text
|
||||
# tags, which will be replaced by the file and line number from which the
|
||||
# warning originated and the warning text.
|
||||
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
|
||||
# The WARN_LOGFILE tag can be used to specify a file to which warning
|
||||
# and error messages should be written. If left blank the output is written
|
||||
# to stderr.
|
||||
|
||||
WARN_LOGFILE =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The INPUT tag can be used to specify the files and/or directories that contain
|
||||
# documented source files. You may enter file names like "myfile.cpp" or
|
||||
# directories like "/usr/src/myproject". Separate the files or directories
|
||||
# with spaces.
|
||||
|
||||
INPUT = ./common/unicode/platform.h @srcdir@/common/unicode @srcdir@/i18n/unicode @srcdir@/io/unicode @srcdir@/layout/unicode
|
||||
|
||||
# If the value of the INPUT tag contains directories, you can use the
|
||||
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
||||
# and *.h) to filter out the source-files in the directories. If left
|
||||
# blank all files are included.
|
||||
|
||||
FILE_PATTERNS = *.h *.c *.cpp
|
||||
|
||||
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
||||
# should be searched for input files as well. Possible values are YES and NO.
|
||||
# If left blank NO is used.
|
||||
|
||||
RECURSIVE = NO
|
||||
|
||||
# The EXCLUDE tag can be used to specify files and/or directories that should
|
||||
# excluded from the INPUT source files. This way you can easily exclude a
|
||||
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
||||
EXCLUDE = @srcdir@/common/unicode/urename.h
|
||||
|
||||
# If the value of the INPUT tag contains directories, you can use the
|
||||
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
|
||||
# certain files from those directories.
|
||||
|
||||
EXCLUDE_PATTERNS = *config*.h
|
||||
|
||||
# The EXAMPLE_PATH tag can be used to specify one or more files or
|
||||
# directories that contain example code fragments that are included (see
|
||||
# the \include command).
|
||||
|
||||
EXAMPLE_PATH =
|
||||
|
||||
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
|
||||
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
||||
# and *.h) to filter out the source-files in the directories. If left
|
||||
# blank all files are included.
|
||||
|
||||
EXAMPLE_PATTERNS =
|
||||
|
||||
# The IMAGE_PATH tag can be used to specify one or more files or
|
||||
# directories that contain image that are included in the documentation (see
|
||||
# the \image command).
|
||||
|
||||
IMAGE_PATH =
|
||||
|
||||
# The INPUT_FILTER tag can be used to specify a program that doxygen should
|
||||
# invoke to filter for each input file. Doxygen will invoke the filter program
|
||||
# by executing (via popen()) the command <filter> <input-file>, where <filter>
|
||||
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
|
||||
# input file. Doxygen will then use the output that the filter program writes
|
||||
# to standard output.
|
||||
|
||||
INPUT_FILTER =
|
||||
|
||||
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
|
||||
# INPUT_FILTER) will be used to filter the input files when producing source
|
||||
# files to browse.
|
||||
|
||||
FILTER_SOURCE_FILES = NO
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
|
||||
# of all compounds will be generated. Enable this if the project
|
||||
# contains a lot of classes, structs, unions or interfaces.
|
||||
|
||||
ALPHABETICAL_INDEX = YES
|
||||
|
||||
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
|
||||
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
|
||||
# in which this list will be split (can be a number in the range [1..20])
|
||||
|
||||
COLS_IN_ALPHA_INDEX = 5
|
||||
|
||||
# In case all classes in a project start with a common prefix, all
|
||||
# classes will be put under the same header in the alphabetical index.
|
||||
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
|
||||
# should be ignored while generating the index headers.
|
||||
|
||||
IGNORE_PREFIX =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
|
||||
# generate HTML output.
|
||||
|
||||
GENERATE_HTML = YES
|
||||
|
||||
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
# put in front of it. If left blank `html' will be used as the default path.
|
||||
|
||||
HTML_OUTPUT = html
|
||||
|
||||
# The HTML_HEADER tag can be used to specify a personal HTML header for
|
||||
# each generated HTML page. If it is left blank doxygen will generate a
|
||||
# standard header.
|
||||
|
||||
HTML_HEADER =
|
||||
|
||||
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
|
||||
# each generated HTML page. If it is left blank doxygen will generate a
|
||||
# standard footer.
|
||||
|
||||
HTML_FOOTER =
|
||||
|
||||
# The HTML_STYLESHEET tag can be used to specify a user defined cascading
|
||||
# style sheet that is used by each HTML page. It can be used to
|
||||
# fine-tune the look of the HTML output. If the tag is left blank doxygen
|
||||
# will generate a default style sheet
|
||||
|
||||
HTML_STYLESHEET =
|
||||
|
||||
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
|
||||
# files or namespaces will be aligned in HTML using tables. If set to
|
||||
# NO a bullet list will be used.
|
||||
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
|
||||
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
|
||||
# will be generated that can be used as input for tools like the
|
||||
# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
|
||||
# of the generated HTML documentation.
|
||||
|
||||
GENERATE_HTMLHELP = NO
|
||||
|
||||
# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
|
||||
# controls if a separate .chi index file is generated (YES) or that
|
||||
# it should be included in the master .chm file (NO).
|
||||
|
||||
GENERATE_CHI = NO
|
||||
|
||||
# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
|
||||
# controls whether a binary table of contents is generated (YES) or a
|
||||
# normal table of contents (NO) in the .chm file.
|
||||
|
||||
BINARY_TOC = NO
|
||||
|
||||
# The TOC_EXPAND flag can be set YES to add extra items for group members
|
||||
# to the contents of the Html help documentation and to the tree view.
|
||||
|
||||
TOC_EXPAND = NO
|
||||
|
||||
# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
|
||||
# top of each HTML page. The value NO (the default) enables the index and
|
||||
# the value YES disables it.
|
||||
|
||||
DISABLE_INDEX = NO
|
||||
|
||||
# This tag can be used to set the number of enum values (range [1..20])
|
||||
# that doxygen will group on one line in the generated HTML documentation.
|
||||
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
|
||||
# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
|
||||
# generated containing a tree-like index structure (just like the one that
|
||||
# is generated for HTML Help). For this to work a browser that supports
|
||||
# JavaScript and frames is required (for instance Netscape 4.0+
|
||||
# or Internet explorer 4.0+).
|
||||
|
||||
GENERATE_TREEVIEW = NO
|
||||
|
||||
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
|
||||
# used to set the initial width (in pixels) of the frame in which the tree
|
||||
# is shown.
|
||||
|
||||
TREEVIEW_WIDTH = 250
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
|
||||
# generate Latex output.
|
||||
|
||||
GENERATE_LATEX = NO
|
||||
|
||||
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
# put in front of it. If left blank `latex' will be used as the default path.
|
||||
|
||||
LATEX_OUTPUT = latex
|
||||
|
||||
# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
|
||||
# LaTeX documents. This may be useful for small projects and may help to
|
||||
# save some trees in general.
|
||||
|
||||
COMPACT_LATEX = NO
|
||||
|
||||
# The PAPER_TYPE tag can be used to set the paper type that is used
|
||||
# by the printer. Possible values are: a4, a4wide, letter, legal and
|
||||
# executive. If left blank a4wide will be used.
|
||||
|
||||
PAPER_TYPE = a4wide
|
||||
|
||||
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
|
||||
# packages that should be included in the LaTeX output.
|
||||
|
||||
EXTRA_PACKAGES =
|
||||
|
||||
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
|
||||
# the generated latex document. The header should contain everything until
|
||||
# the first chapter. If it is left blank doxygen will generate a
|
||||
# standard header. Notice: only use this tag if you know what you are doing!
|
||||
|
||||
LATEX_HEADER =
|
||||
|
||||
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
|
||||
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
|
||||
# contain links (just like the HTML output) instead of page references
|
||||
# This makes the output suitable for online browsing using a pdf viewer.
|
||||
|
||||
PDF_HYPERLINKS = NO
|
||||
|
||||
# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
|
||||
# plain latex in the generated Makefile. Set this option to YES to get a
|
||||
# higher quality PDF documentation.
|
||||
|
||||
USE_PDFLATEX = NO
|
||||
|
||||
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
|
||||
# command to the generated LaTeX files. This will instruct LaTeX to keep
|
||||
# running if errors occur, instead of asking the user for help.
|
||||
# This option is also used when generating formulas in HTML.
|
||||
|
||||
LATEX_BATCHMODE = NO
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
|
||||
# The RTF output is optimised for Word 97 and may not look very pretty with
|
||||
# other RTF readers or editors.
|
||||
|
||||
GENERATE_RTF = NO
|
||||
|
||||
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
# put in front of it. If left blank `rtf' will be used as the default path.
|
||||
|
||||
RTF_OUTPUT = rtf
|
||||
|
||||
# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
|
||||
# RTF documents. This may be useful for small projects and may help to
|
||||
# save some trees in general.
|
||||
|
||||
COMPACT_RTF = NO
|
||||
|
||||
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
|
||||
# will contain hyperlink fields. The RTF file will
|
||||
# contain links (just like the HTML output) instead of page references.
|
||||
# This makes the output suitable for online browsing using a WORD or other.
|
||||
# programs which support those fields.
|
||||
# Note: wordpad (write) and others do not support links.
|
||||
|
||||
RTF_HYPERLINKS = NO
|
||||
|
||||
# Load stylesheet definitions from file. Syntax is similar to doxygen's
|
||||
# config file, i.e. a series of assigments. You only have to provide
|
||||
# replacements, missing definitions are set to their default value.
|
||||
|
||||
RTF_STYLESHEET_FILE =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
|
||||
# generate man pages
|
||||
|
||||
GENERATE_MAN = NO
|
||||
|
||||
# The MAN_OUTPUT tag is used to specify where the man pages will be put.
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
# put in front of it. If left blank `man' will be used as the default path.
|
||||
|
||||
MAN_OUTPUT = man
|
||||
|
||||
# The MAN_EXTENSION tag determines the extension that is added to
|
||||
# the generated man pages (default is the subroutine's section .3)
|
||||
|
||||
MAN_EXTENSION = .3
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
|
||||
# evaluate all C-preprocessor directives found in the sources and include
|
||||
# files.
|
||||
|
||||
ENABLE_PREPROCESSING = YES
|
||||
|
||||
# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
|
||||
# names in the source code. If set to NO (the default) only conditional
|
||||
# compilation will be performed. Macro expansion can be done in a controlled
|
||||
# way by setting EXPAND_ONLY_PREDEF to YES.
|
||||
|
||||
MACRO_EXPANSION = NO
|
||||
|
||||
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
|
||||
# then the macro expansion is limited to the macros specified with the
|
||||
# PREDEFINED and EXPAND_AS_PREDEFINED tags.
|
||||
|
||||
EXPAND_ONLY_PREDEF = NO
|
||||
|
||||
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
|
||||
# in the INCLUDE_PATH (see below) will be search if a #include is found.
|
||||
|
||||
SEARCH_INCLUDES = YES
|
||||
|
||||
# The INCLUDE_PATH tag can be used to specify one or more directories that
|
||||
# contain include files that are not input files but should be processed by
|
||||
# the preprocessor.
|
||||
|
||||
INCLUDE_PATH =
|
||||
|
||||
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
|
||||
# patterns (like *.h and *.hpp) to filter out the header-files in the
|
||||
# directories. If left blank, the patterns specified with FILE_PATTERNS will
|
||||
# be used.
|
||||
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
|
||||
# The PREDEFINED tag can be used to specify one or more macro names that
|
||||
# are defined before the preprocessor is started (similar to the -D option of
|
||||
# gcc). The argument of the tag is a list of macros of the form: name
|
||||
# or name=definition (no spaces). If the definition and the = are
|
||||
# omitted =1 is assumed.
|
||||
|
||||
PREDEFINED =
|
||||
|
||||
# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
|
||||
# this tag can be used to specify a list of macro names that should be expanded.
|
||||
# The macro definition that is found in the sources will be used.
|
||||
# Use the PREDEFINED tag if you want to use a different macro definition.
|
||||
|
||||
EXPAND_AS_DEFINED =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The TAGFILES tag can be used to specify one or more tagfiles.
|
||||
|
||||
TAGFILES =
|
||||
|
||||
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
|
||||
# a tag file that is based on the input files it reads.
|
||||
|
||||
GENERATE_TAGFILE =
|
||||
|
||||
# If the ALLEXTERNALS tag is set to YES all external classes will be listed
|
||||
# in the class index. If set to NO only the inherited external classes
|
||||
# will be listed.
|
||||
|
||||
ALLEXTERNALS = NO
|
||||
|
||||
# The PERL_PATH should be the absolute path and name of the perl script
|
||||
# interpreter (i.e. the result of `which perl').
|
||||
|
||||
PERL_PATH = /usr/bin/perl
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
|
||||
# available from the path. This tool is part of Graphviz, a graph visualization
|
||||
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
|
||||
# have no effect if this option is set to NO (the default)
|
||||
|
||||
HAVE_DOT = NO
|
||||
|
||||
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
|
||||
# will generate a graph for each documented class showing the direct and
|
||||
# indirect inheritance relations. Setting this tag to YES will force the
|
||||
# the CLASS_DIAGRAMS tag to NO.
|
||||
|
||||
CLASS_GRAPH = YES
|
||||
|
||||
# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
|
||||
# will generate a graph for each documented class showing the direct and
|
||||
# indirect implementation dependencies (inheritance, containment, and
|
||||
# class references variables) of the class with other documented classes.
|
||||
|
||||
COLLABORATION_GRAPH = YES
|
||||
|
||||
# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to
|
||||
# YES then doxygen will generate a graph for each documented file showing
|
||||
# the direct and indirect include dependencies of the file with other
|
||||
# documented files.
|
||||
|
||||
INCLUDE_GRAPH = YES
|
||||
|
||||
# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to
|
||||
# YES then doxygen will generate a graph for each documented header file showing
|
||||
# the documented files that directly or indirectly include this file
|
||||
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
|
||||
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
|
||||
# will graphical hierarchy of all classes instead of a textual one.
|
||||
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
|
||||
# The tag DOT_PATH can be used to specify the path where the dot tool can be
|
||||
# found. If left blank, it is assumed the dot tool can be found on the path.
|
||||
|
||||
DOT_PATH =
|
||||
|
||||
# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
|
||||
# (in pixels) of the graphs generated by dot. If a graph becomes larger than
|
||||
# this value, doxygen will try to truncate the graph, so that it fits within
|
||||
# the specified constraint. Beware that most browsers cannot cope with very
|
||||
# large images.
|
||||
|
||||
MAX_DOT_GRAPH_WIDTH = 1024
|
||||
|
||||
# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
|
||||
# (in pixels) of the graphs generated by dot. If a graph becomes larger than
|
||||
# this value, doxygen will try to truncate the graph, so that it fits within
|
||||
# the specified constraint. Beware that most browsers cannot cope with very
|
||||
# large images.
|
||||
|
||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
||||
|
||||
# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
|
||||
# generate a legend page explaining the meaning of the various boxes and
|
||||
# arrows in the dot generated graphs.
|
||||
|
||||
GENERATE_LEGEND = YES
|
||||
|
||||
# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
|
||||
# remove the intermedate dot files that are used to generate
|
||||
# the various graphs.
|
||||
|
||||
DOT_CLEANUP = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::addtions related to the search engine
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The SEARCHENGINE tag specifies whether or not a search engine should be
|
||||
# used. If set to NO the values of all tags below this one will be ignored.
|
||||
|
||||
SEARCHENGINE = NO
|
||||
|
||||
# The CGI_NAME tag should be the name of the CGI script that
|
||||
# starts the search engine (doxysearch) with the correct parameters.
|
||||
# A script with this name will be generated by doxygen.
|
||||
|
||||
CGI_NAME = search.cgi
|
||||
|
||||
# The CGI_URL tag should be the absolute URL to the directory where the
|
||||
# cgi binaries are located. See the documentation of your http daemon for
|
||||
# details.
|
||||
|
||||
CGI_URL =
|
||||
|
||||
# The DOC_URL tag should be the absolute URL to the directory where the
|
||||
# documentation is located. If left blank the absolute path to the
|
||||
# documentation, with file:// prepended to it, will be used.
|
||||
|
||||
DOC_URL =
|
||||
|
||||
# The DOC_ABSPATH tag should be the absolute path to the directory where the
|
||||
# documentation is located. If left blank the directory on the local machine
|
||||
# will be used.
|
||||
|
||||
DOC_ABSPATH =
|
||||
|
||||
# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
|
||||
# is installed.
|
||||
|
||||
BIN_ABSPATH = /usr/local/bin/
|
||||
|
||||
# The EXT_DOC_PATHS tag can be used to specify one or more paths to
|
||||
# documentation generated for other projects. This allows doxysearch to search
|
||||
# the documentation for these projects as well.
|
||||
|
||||
EXT_DOC_PATHS =
|
203
extern/icu/source/Makefile.in
vendored
203
extern/icu/source/Makefile.in
vendored
@ -1,203 +0,0 @@
|
||||
#******************************************************************************
|
||||
#
|
||||
# Copyright (C) 1998-2004, International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
#
|
||||
#******************************************************************************
|
||||
## Top-level Makefile.in for ICU
|
||||
## Stephen F. Booth
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
top_builddir = .
|
||||
|
||||
include $(top_builddir)/icudefs.mk
|
||||
|
||||
docdir = $(datadir)/doc
|
||||
docsubdir = $(PACKAGE)$(ICULIBDASHSUFFIX)/html
|
||||
|
||||
##
|
||||
|
||||
## Build directory information
|
||||
subdir = .
|
||||
|
||||
#AUTOCONF = @AUTOCONF@
|
||||
|
||||
## Optional directory setup
|
||||
@LAYOUT_TRUE@LAYOUT = layout layoutex
|
||||
@ICUIO_TRUE@ICUIO = io
|
||||
@EXTRAS_TRUE@EXTRA = extra
|
||||
@TESTS_TRUE@TEST = test
|
||||
@SAMPLES_TRUE@SAMPLE = samples
|
||||
|
||||
DOXYGEN = @DOXYGEN@
|
||||
|
||||
## Files to remove for 'make clean'
|
||||
CLEANFILES = *~
|
||||
|
||||
## Files built (autoconfed) and installed
|
||||
INSTALLED_BUILT_FILES = $(top_builddir)/config/Makefile.inc $(top_builddir)/config/icu-config @platform_make_fragment@ $(EXTRA_DATA:%=$(DESTDIR)$(pkglibdir)/%)
|
||||
|
||||
## Files built (autoconfed) but not installed
|
||||
LOCAL_BUILT_FILES = icudefs.mk
|
||||
|
||||
DOCDIRS = common i18n
|
||||
SUBDIRS = stubdata common i18n $(LAYOUT) tools data $(ICUIO) $(EXTRA) $(SAMPLE) $(TEST)
|
||||
|
||||
SECTION = 1
|
||||
|
||||
MANX_FILES = config/icu-config.$(SECTION)
|
||||
|
||||
ALL_MAN_FILES = $(MANX_FILES)
|
||||
|
||||
## Extra files to install [nothing at present]
|
||||
EXTRA_DATA =
|
||||
|
||||
## List of phony targets
|
||||
.PHONY : all all-local all-recursive install install-local install-udata install-udata-files install-udata-dlls \
|
||||
install-recursive clean clean-local clean-recursive distclean \
|
||||
distclean-local distclean-recursive doc dist dist-local dist-recursive \
|
||||
check check-local check-recursive clean-recursive-with-twist install-icu \
|
||||
doc install-doc
|
||||
|
||||
## Clear suffix list
|
||||
.SUFFIXES :
|
||||
|
||||
## List of standard targets
|
||||
all: all-local all-recursive
|
||||
install: install-recursive install-local
|
||||
clean: clean-recursive-with-twist clean-local
|
||||
distclean : distclean-recursive distclean-local
|
||||
dist: dist-recursive dist-local
|
||||
check: all check-recursive check-local
|
||||
check-recursive: all
|
||||
|
||||
ifeq ($(DOXYGEN),)
|
||||
doc:
|
||||
@echo you need Doxygen to generate documentation. Doxygen can be found on the Web
|
||||
@echo at http://www.doxygen.org/
|
||||
else
|
||||
doc: doc/html/index.html
|
||||
|
||||
doc/html/index.html: Doxyfile $(wildcard ./common/unicode/platform.h $(srcdir)/common/unicode/*.h $(srcdir)/i18n/unicode/*.h $(srcdir)/layout/unicode/*.h $(srcdir)/io/unicode/*.h)
|
||||
$(DOXYGEN)
|
||||
|
||||
Doxyfile: $(srcdir)/Doxyfile.in
|
||||
CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
endif
|
||||
|
||||
LOCAL_SUBDIRS = $(SUBDIRS)
|
||||
CLEAN_FIRST_SUBDIRS = tools
|
||||
|
||||
$(LIBDIR) $(BINDIR):
|
||||
-$(MKINSTALLDIRS) $@
|
||||
|
||||
## Recursive targets
|
||||
all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive: $(LIBDIR) $(BINDIR)
|
||||
@dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(LOCAL_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) RECURSIVE=YES $$local_target) || exit; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) "$$target-local" || exit; \
|
||||
fi
|
||||
|
||||
clean-recursive-with-twist:
|
||||
$(MAKE) clean-recursive LOCAL_SUBDIRS='$(CLEAN_FIRST_SUBDIRS) $(filter-out $(CLEAN_FIRST_SUBDIRS),$(LOCAL_SUBDIRS))'
|
||||
|
||||
all-local: $(srcdir)/configure $(LOCAL_BUILT_FILES) $(INSTALLED_BUILT_FILES)
|
||||
|
||||
install-local: install-icu install-manx
|
||||
|
||||
install-icu: $(INSTALLED_BUILT_FILES)
|
||||
@$(MKINSTALLDIRS) $(DESTDIR)$(pkgdatadir)/config
|
||||
@$(MKINSTALLDIRS) $(DESTDIR)$(pkglibdir)
|
||||
@$(MKINSTALLDIRS) $(DESTDIR)$(bindir)
|
||||
@$(MKINSTALLDIRS) $(DESTDIR)$(sbindir)
|
||||
$(INSTALL_DATA) $(top_builddir)/config/Makefile.inc $(DESTDIR)$(pkglibdir)/Makefile.inc
|
||||
cd $(DESTDIR)$(pkglibdir)/..; \
|
||||
$(RM) current && ln -s $(VERSION) current; \
|
||||
$(RM) Makefile.inc && ln -s current/Makefile.inc .
|
||||
$(INSTALL_DATA) @platform_make_fragment@ $(DESTDIR)$(pkgdatadir)/config/@platform_make_fragment_name@
|
||||
$(INSTALL_SCRIPT) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(pkgdatadir)/mkinstalldirs
|
||||
$(INSTALL_DATA) $(top_srcdir)/../license.html $(DESTDIR)$(pkgdatadir)/license.html
|
||||
$(INSTALL_SCRIPT) $(top_builddir)/config/icu-config $(DESTDIR)$(bindir)/icu-config
|
||||
|
||||
ifeq ($(DOXYGEN),)
|
||||
install-doc:
|
||||
else
|
||||
install-doc: doc
|
||||
$(RM) -r $(DESTDIR)$(docdir)/$(docsubdir)
|
||||
$(MKINSTALLDIRS) $(DESTDIR)$(docdir)/$(docsubdir)
|
||||
$(INSTALL_DATA) doc/html/* $(DESTDIR)$(docdir)/$(docsubdir)
|
||||
endif
|
||||
|
||||
$(DESTDIR)$(pkglibdir)/%: $(top_srcdir)/../data/%
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
dist-local:
|
||||
|
||||
clean-local:
|
||||
test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
|
||||
$(RMV) Doxyfile doc
|
||||
|
||||
distclean-local: clean-local
|
||||
$(RMV) Makefile config/Makefile icudefs.mk
|
||||
$(RMV) $(top_builddir)/config/Makefile.inc $(top_builddir)/config/icu-config
|
||||
$(RMV) config.cache config.log config.status
|
||||
|
||||
check-local:
|
||||
|
||||
#$(srcdir)/configure : $(srcdir)/configure.in $(top_srcdir)/aclocal.m4
|
||||
# cd $(srcdir) && $(AUTOCONF)
|
||||
|
||||
icudefs.mk: $(srcdir)/icudefs.mk.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in icudefs.mk $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
$(top_builddir)/config/Makefile.inc: $(srcdir)/config/Makefile.inc.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
$(top_builddir)/config/icu-config: $(top_builddir)/Makefile $(top_srcdir)/config/icu-config-top $(top_srcdir)/config/icu-config-bottom $(top_builddir)/config/Makefile.inc @platform_make_fragment@ $(top_srcdir)/config/make2sh.sed
|
||||
-$(RMV) $@
|
||||
$(INSTALL_DATA) $(top_srcdir)/config/icu-config-top $@
|
||||
@echo "# Following from @platform_make_fragment@" >> $@
|
||||
sed -f $(top_srcdir)/config/make2sh.sed < $(top_builddir)/config/Makefile.inc | grep -v '#M#' | uniq >> $@
|
||||
sed -f $(top_srcdir)/config/make2sh.sed < @platform_make_fragment@ | grep -v '#M#' | uniq >> $@
|
||||
cat $(top_srcdir)/config/icu-config-bottom >> $@
|
||||
echo "# Rebuilt on "`date` >> $@
|
||||
|
||||
config.status: $(srcdir)/configure $(srcdir)/common/unicode/uversion.h
|
||||
@echo
|
||||
@echo
|
||||
@echo "*** config.status has become stale ***"
|
||||
@echo " 'configure' and/or 'uversion.h' have changed, please"
|
||||
@echo " do 'runConfigureICU' (or 'configure') again, as per"
|
||||
@echo " the readme.html."
|
||||
@echo
|
||||
@echo
|
||||
exit 1
|
||||
|
||||
|
||||
install-manx: $(MANX_FILES)
|
||||
$(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION)
|
||||
$(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION)
|
||||
|
||||
config/%.$(SECTION): $(srcdir)/config/%.$(SECTION).in
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
29
extern/icu/source/acconfig.h
vendored
29
extern/icu/source/acconfig.h
vendored
@ -1,29 +0,0 @@
|
||||
/* Copyright (c) 1999-2000, International Business Machines Corporation and
|
||||
others. All Rights Reserved. */
|
||||
/* Define to signed char if not in <sys/types.h> */
|
||||
#undef int8_t
|
||||
|
||||
/* Define to unsigned char if not in <sys/types.h> */
|
||||
#undef uint8_t
|
||||
|
||||
/* Define to signed short if not in <sys/types.h> */
|
||||
#undef int16_t
|
||||
|
||||
/* Define to unsigned short if not in <sys/types.h> */
|
||||
#undef uint16_t
|
||||
|
||||
/* Define to signed long if not in <sys/types.h> */
|
||||
#undef int32_t
|
||||
|
||||
/* Define to unsigned long if not in <sys/types.h> */
|
||||
#undef uint32_t
|
||||
|
||||
/* Define to signed char if not in <sys/types.h> */
|
||||
#undef bool_t
|
||||
|
||||
/* Define if your system has <wchar.h> */
|
||||
#undef HAVE_WCHAR_H
|
||||
|
||||
/* Define to the size of wchar_t */
|
||||
#undef SIZEOF_WCHAR_T
|
||||
|
308
extern/icu/source/aclocal.m4
vendored
308
extern/icu/source/aclocal.m4
vendored
@ -1,308 +0,0 @@
|
||||
dnl aclocal.m4 for ICU
|
||||
dnl Copyright (c) 1999-2004, International Business Machines Corporation and
|
||||
dnl others. All Rights Reserved.
|
||||
dnl Stephen F. Booth
|
||||
|
||||
dnl @TOP@
|
||||
|
||||
dnl ICU_CHECK_MH_FRAG
|
||||
AC_DEFUN(ICU_CHECK_MH_FRAG, [
|
||||
AC_CACHE_CHECK(
|
||||
[which Makefile fragment to use],
|
||||
[icu_cv_host_frag],
|
||||
[
|
||||
case "${host}" in
|
||||
*-*-solaris*)
|
||||
if test "$GCC" = yes; then
|
||||
icu_cv_host_frag=mh-solaris-gcc
|
||||
else
|
||||
icu_cv_host_frag=mh-solaris
|
||||
fi ;;
|
||||
alpha*-*-linux-gnu)
|
||||
if test "$GCC" = yes; then
|
||||
icu_cv_host_frag=mh-alpha-linux-gcc
|
||||
else
|
||||
icu_cv_host_frag=mh-alpha-linux-cc
|
||||
fi ;;
|
||||
*-*-linux*) icu_cv_host_frag=mh-linux ;;
|
||||
*-*-cygwin)
|
||||
if test "$ac_cv_prog_gcc" = yes; then
|
||||
icu_cv_host_frag=mh-cygwin
|
||||
else
|
||||
icu_cv_host_frag=mh-cygwin-msvc
|
||||
fi ;;
|
||||
*-*-mingw*) icu_cv_host_frag=mh-mingw ;;
|
||||
*-*-*bsd*) icu_cv_host_frag=mh-bsd-gcc ;;
|
||||
*-*-aix*)
|
||||
if test "$GCC" = yes; then
|
||||
icu_cv_host_frag=mh-aix-gcc
|
||||
else
|
||||
if test -n "`$CXX --help 2>&1 | grep 'IBM C and C++ Compilers$'`"; then
|
||||
icu_cv_host_frag=mh-aix
|
||||
else
|
||||
icu_cv_host_frag=mh-aix-va
|
||||
fi
|
||||
fi ;;
|
||||
*-*-hpux*)
|
||||
if test "$GCC" = yes; then
|
||||
icu_cv_host_frag=mh-hpux-gcc
|
||||
else
|
||||
case "$CXX" in
|
||||
*aCC) icu_cv_host_frag=mh-hpux-acc ;;
|
||||
*CC) icu_cv_host_frag=mh-hpux-cc ;;
|
||||
esac
|
||||
fi ;;
|
||||
*-*ibm-openedition*|*-*-os390*) icu_cv_host_frag=mh-os390 ;;
|
||||
*-*-os400*) icu_cv_host_frag=mh-os400 ;;
|
||||
*-apple-rhapsody*) icu_cv_host_frag=mh-darwin ;;
|
||||
*-apple-darwin*) icu_cv_host_frag=mh-darwin ;;
|
||||
*-*-beos) icu_cv_host_frag=mh-beos ;;
|
||||
*-*-irix*) icu_cv_host_frag=mh-irix ;;
|
||||
*-dec-osf*) icu_cv_host_frag=mh-alpha-osf ;;
|
||||
*-*-nto*) icu_cv_host_frag=mh-qnx ;;
|
||||
*-ncr-*) icu_cv_host_frag=mh-mpras ;;
|
||||
*-sequent-*) icu_cv_host_frag=mh-ptx ;;
|
||||
*) icu_cv_host_frag=mh-unknown ;;
|
||||
esac
|
||||
]
|
||||
)
|
||||
])
|
||||
|
||||
dnl ICU_CONDITIONAL - similar example taken from Automake 1.4
|
||||
AC_DEFUN(ICU_CONDITIONAL,
|
||||
[AC_SUBST($1_TRUE)
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
else
|
||||
$1_TRUE='#'
|
||||
fi])
|
||||
|
||||
dnl AC_SEARCH_LIBS_FIRST(FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
|
||||
dnl [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
|
||||
dnl Search for a library defining FUNC, then see if it's not already available.
|
||||
|
||||
AC_DEFUN(AC_SEARCH_LIBS_FIRST,
|
||||
[AC_PREREQ([2.13])
|
||||
AC_CACHE_CHECK([for library containing $1], [ac_cv_search_$1],
|
||||
[ac_func_search_save_LIBS="$LIBS"
|
||||
ac_cv_search_$1="no"
|
||||
for i in $2; do
|
||||
LIBS="-l$i $5 $ac_func_search_save_LIBS"
|
||||
AC_TRY_LINK_FUNC([$1],
|
||||
[ac_cv_search_$1="-l$i"
|
||||
break])
|
||||
done
|
||||
if test "$ac_cv_search_$1" = "no"; then
|
||||
AC_TRY_LINK_FUNC([$1], [ac_cv_search_$1="none required"])
|
||||
fi
|
||||
LIBS="$ac_func_search_save_LIBS"])
|
||||
if test "$ac_cv_search_$1" != "no"; then
|
||||
test "$ac_cv_search_$1" = "none required" || LIBS="$ac_cv_search_$1 $LIBS"
|
||||
$3
|
||||
else :
|
||||
$4
|
||||
fi])
|
||||
|
||||
dnl Check if we can build and use 64-bit libraries
|
||||
AC_DEFUN(AC_CHECK_64BIT_LIBS,
|
||||
[
|
||||
AC_ARG_ENABLE(64bit-libs,
|
||||
[ --enable-64bit-libs build 64-bit libraries [default=yes]],
|
||||
[ENABLE_64BIT_LIBS=${enableval}],
|
||||
[ENABLE_64BIT_LIBS=yes]
|
||||
)
|
||||
dnl These results can't be cached because is sets compiler flags.
|
||||
AC_MSG_CHECKING([for 64-bit executable support])
|
||||
if test "$ENABLE_64BIT_LIBS" = no; then
|
||||
case "${host}" in
|
||||
*-*-hpux*)
|
||||
# case "${CXX}" in
|
||||
# *CC)
|
||||
# CFLAGS="${CFLAGS} +DAportable"
|
||||
# CXXFLAGS="${CXXFLAGS} +DAportable"
|
||||
# ;;
|
||||
# esac;;
|
||||
esac
|
||||
else
|
||||
case "${host}" in
|
||||
*-*-solaris*)
|
||||
if test "$GCC" = no; then
|
||||
SOL64=`$CXX -xarch=v9 2>&1 && $CC -xarch=v9 2>&1 | grep -v usage:`
|
||||
SPARCV9=`isainfo -n 2>&1 | grep sparcv9`
|
||||
if test -z "$SOL64" && test -n "$SPARCV9"; then
|
||||
CFLAGS="${CFLAGS} -xtarget=ultra -xarch=v9"
|
||||
CXXFLAGS="${CXXFLAGS} -xtarget=ultra -xarch=v9"
|
||||
LDFLAGS="${LDFLAGS} -xtarget=ultra -xarch=v9"
|
||||
ENABLE_64BIT_LIBS=yes
|
||||
else
|
||||
ENABLE_64BIT_LIBS=no
|
||||
fi
|
||||
else
|
||||
ENABLE_64BIT_LIBS=no
|
||||
fi
|
||||
;;
|
||||
ia64-*-linux*)
|
||||
if test "$GCC" = yes; then
|
||||
# gcc compiler support
|
||||
if test -n "`$CXX -dumpspecs 2>&1 && $CC -dumpspecs 2>&1 | grep -v __LP64__`"; then
|
||||
ENABLE_64BIT_LIBS=yes
|
||||
else
|
||||
ENABLE_64BIT_LIBS=no
|
||||
fi
|
||||
else
|
||||
# check for ecc/ecpc compiler support
|
||||
if test -n "`$CXX --help 2>&1 && $CC --help 2>&1 | grep -v Intel`"; then
|
||||
if test -n "`$CXX --help 2>&1 && $CC --help 2>&1 | grep -v Itanium`"; then
|
||||
ENABLE_64BIT_LIBS=yes
|
||||
else
|
||||
ENABLE_64BIT_LIBS=no
|
||||
fi
|
||||
else
|
||||
# unknown
|
||||
ENABLE_64BIT_LIBS=no
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
x86_64-*-linux*)
|
||||
if test "$GCC" = yes; then
|
||||
if test -n "`$CXX -dumpspecs 2>&1 && $CC -dumpspecs 2>&1 | grep -v __LP64__`"; then
|
||||
ENABLE_64BIT_LIBS=yes
|
||||
else
|
||||
ENABLE_64BIT_LIBS=no
|
||||
fi
|
||||
else
|
||||
# unknown
|
||||
ENABLE_64BIT_LIBS=no
|
||||
fi
|
||||
;;
|
||||
*-*-aix*)
|
||||
if test "$ac_cv_prog_gcc" = no; then
|
||||
# Note: Have not tested 64-bitness with gcc.
|
||||
# Maybe the flag "-maix64" could be used with gcc?
|
||||
OLD_CFLAGS="${CFLAGS}"
|
||||
OLD_CXXFLAGS="${CXXFLAGS}"
|
||||
OLD_LDFLAGS="${LDFLAGS}"
|
||||
CFLAGS="${CFLAGS} -q64"
|
||||
CXXFLAGS="${CXXFLAGS} -q64"
|
||||
LDFLAGS="${LDFLAGS} -q64"
|
||||
AC_TRY_RUN(int main(void) {return 0;},
|
||||
ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no, ENABLE_64BIT_LIBS=no)
|
||||
if test "$ENABLE_64BIT_LIBS" = no; then
|
||||
CFLAGS="${OLD_CFLAGS}"
|
||||
CXXFLAGS="${OLD_CXXFLAGS}"
|
||||
LDFLAGS="${OLD_LDFLAGS}"
|
||||
else
|
||||
ARFLAGS="${ARFLAGS} -X64"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
*-*-hpux*)
|
||||
dnl First we try the newer +DD64, if that doesn't work,
|
||||
dnl try other options.
|
||||
|
||||
OLD_CFLAGS="${CFLAGS}"
|
||||
OLD_CXXFLAGS="${CXXFLAGS}"
|
||||
CFLAGS="${CFLAGS} +DD64"
|
||||
CXXFLAGS="${CXXFLAGS} +DD64"
|
||||
AC_TRY_RUN(int main(void) {return 0;},
|
||||
ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no, ENABLE_64BIT_LIBS=no)
|
||||
if test "$ENABLE_64BIT_LIBS" = no; then
|
||||
CFLAGS="${OLD_CFLAGS}"
|
||||
CXXFLAGS="${OLD_CXXFLAGS}"
|
||||
CFLAGS="${CFLAGS} +DA2.0W"
|
||||
CXXFLAGS="${CXXFLAGS} +DA2.0W"
|
||||
AC_TRY_RUN(int main(void) {return 0;},
|
||||
ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no, ENABLE_64BIT_LIBS=no)
|
||||
if test "$ENABLE_64BIT_LIBS" = no; then
|
||||
CFLAGS="${OLD_CFLAGS}"
|
||||
CXXFLAGS="${OLD_CXXFLAGS}"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
ENABLE_64BIT_LIBS=no
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
dnl Individual tests that fail should reset their own flags.
|
||||
AC_MSG_RESULT($ENABLE_64BIT_LIBS)
|
||||
])
|
||||
|
||||
dnl Strict compilation options.
|
||||
AC_DEFUN(AC_CHECK_STRICT_COMPILE,
|
||||
[
|
||||
AC_MSG_CHECKING([whether strict compiling is on])
|
||||
AC_ARG_ENABLE(strict,[ --enable-strict compile with strict compiler options [default=no]], [
|
||||
if test "$enableval" = no
|
||||
then
|
||||
ac_use_strict_options=no
|
||||
else
|
||||
ac_use_strict_options=yes
|
||||
fi
|
||||
], [ac_use_strict_options=no])
|
||||
AC_MSG_RESULT($ac_use_strict_options)
|
||||
|
||||
if test "$ac_use_strict_options" = yes
|
||||
then
|
||||
if test "$GCC" = yes
|
||||
then
|
||||
CFLAGS="$CFLAGS -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Winline -Wno-long-long"
|
||||
case "${host}" in
|
||||
*-*-solaris*)
|
||||
CFLAGS="$CFLAGS -D__STDC__=0";;
|
||||
esac
|
||||
else
|
||||
case "${host}" in
|
||||
*-*-cygwin)
|
||||
if test "`$CC /help 2>&1 | head -c9`" = "Microsoft"
|
||||
then
|
||||
CFLAGS="$CFLAGS /W4"
|
||||
fi
|
||||
esac
|
||||
fi
|
||||
if test "$GXX" = yes
|
||||
then
|
||||
CXXFLAGS="$CXXFLAGS -W -Wall -ansi -pedantic -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Winline -Wno-long-long"
|
||||
case "${host}" in
|
||||
*-*-solaris*)
|
||||
CXXFLAGS="$CXXFLAGS -D__STDC__=0";;
|
||||
esac
|
||||
else
|
||||
case "${host}" in
|
||||
*-*-cygwin)
|
||||
if test "`$CXX /help 2>&1 | head -c9`" = "Microsoft"
|
||||
then
|
||||
CXXFLAGS="$CXXFLAGS /W4"
|
||||
fi
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Define a sizeof checking macro that is a bit better than autoconf's
|
||||
dnl builtin (and heavily based on it, of course). The new macro is
|
||||
dnl AC_DO_CHECK_SIZEOF(TYPE [, CROSS_SIZE [, INCLUDES])
|
||||
AC_DEFUN(AC_DO_CHECK_SIZEOF,
|
||||
[changequote(<<, >>)dnl
|
||||
dnl The name to #define.
|
||||
define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
|
||||
dnl The cache variable name.
|
||||
define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
|
||||
changequote([, ])dnl
|
||||
AC_MSG_CHECKING(size of $1)
|
||||
AC_CACHE_VAL(AC_CV_NAME,
|
||||
[AC_TRY_RUN($3
|
||||
[#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
FILE *f=fopen("conftestval", "w");
|
||||
if (!f) exit(1);
|
||||
fprintf(f, "%d\n", sizeof($1));
|
||||
exit(0);
|
||||
}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl
|
||||
AC_MSG_RESULT($AC_CV_NAME)
|
||||
AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
|
||||
undefine([AC_TYPE_NAME])dnl
|
||||
undefine([AC_CV_NAME])dnl
|
||||
])
|
||||
|
93
extern/icu/source/allinone/all/all.dsp
vendored
93
extern/icu/source/allinone/all/all.dsp
vendored
@ -1,93 +0,0 @@
|
||||
# Microsoft Developer Studio Project File - Name="all" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Generic Project" 0x010a
|
||||
|
||||
CFG=ALL - 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 "all.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 "all.mak" CFG="ALL - WIN32 DEBUG"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "all - Win32 Release" (based on "Win32 (x86) Generic Project")
|
||||
!MESSAGE "all - Win32 Debug" (based on "Win32 (x86) Generic Project")
|
||||
!MESSAGE "all - Win64 Release" (based on "Win32 (x86) Generic Project")
|
||||
!MESSAGE "all - Win64 Debug" (based on "Win32 (x86) Generic Project")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
MTL=midl.exe
|
||||
|
||||
!IF "$(CFG)" == "all - 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 Target_Dir ""
|
||||
|
||||
!ELSEIF "$(CFG)" == "all - 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 Target_Dir ""
|
||||
|
||||
!ELSEIF "$(CFG)" == "all - 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 Target_Dir ""
|
||||
|
||||
!ELSEIF "$(CFG)" == "all - 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 Target_Dir ""
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "all - Win32 Release"
|
||||
# Name "all - Win32 Debug"
|
||||
# Name "all - Win64 Release"
|
||||
# Name "all - Win64 Debug"
|
||||
# End Target
|
||||
# End Project
|
719
extern/icu/source/allinone/allinone.dsw
vendored
719
extern/icu/source/allinone/allinone.dsw
vendored
@ -1,719 +0,0 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "all"=.\all\all.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name cintltst
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name ctestfw
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name decmn
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name derb
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genccode
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gencmn
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gencnval
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gennames
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gennorm
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genpname
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genprops
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genrb
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gentest
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genuca
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name intltest
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name layout
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name makeconv
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name makedata
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name pkgdata
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name stubdata
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name uconv
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name io
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genbrk
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name layoutex
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gensprep
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name icuswap
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name iotest
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "cintltst"=..\test\cintltst\cintltst.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name ctestfw
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "common"=..\common\common.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name stubdata
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "ctestfw"=..\tools\ctestfw\ctestfw.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "decmn"=..\tools\gencmn\decmn.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "derb"=..\TOOLS\GENRB\derb.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name stubdata
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "genbrk"=..\tools\genbrk\genbrk.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "genccode"=..\tools\genccode\genccode.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "gencmn"=..\tools\gencmn\gencmn.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "gencnval"=..\tools\gencnval\gencnval.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "gennames"=..\tools\gennames\gennames.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "gennorm"=..\tools\gennorm\gennorm.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "genpname"=..\tools\genpname\genpname.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "genprops"=..\tools\genprops\genprops.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "genrb"=..\tools\genrb\genrb.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name makeconv
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "gensprep"=..\tools\gensprep\gensprep.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "gentest"=..\tools\gentest\gentest.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "genuca"=..\TOOLS\genuca\genuca.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "i18n"=..\i18n\i18n.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "icuswap"=..\tools\icuswap\icuswap.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "intltest"=..\test\intltest\intltest.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name ctestfw
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "io"=..\io\io.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "iotest"=..\test\iotest\iotest.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name ctestfw
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name io
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "layout"=..\layout\layout.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "layoutex"=..\layoutex\layoutex.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name layout
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "makeconv"=..\tools\makeconv\makeconv.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "makedata"=..\data\makedata.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genccode
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gencmn
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gencnval
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gennames
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gennorm
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genpname
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genprops
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genrb
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gentest
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genuca
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name makeconv
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name pkgdata
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name stubdata
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genbrk
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gensprep
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "pkgdata"=..\tools\pkgdata\pkgdata.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name toolutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "stubdata"=..\STUBDATA\stubdata.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "toolutil"=..\tools\toolutil\toolutil.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "uconv"=..\extra\uconv\uconv.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name common
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name genrb
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name i18n
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name pkgdata
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
588
extern/icu/source/allinone/allinone.sln
vendored
588
extern/icu/source/allinone/allinone.sln
vendored
@ -1,588 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cintltst", "..\test\cintltst\cintltst.vcproj", "{3D1246AE-1B32-479B-BECA-AEFA97BE2321}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "..\common\common.vcproj", "{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{203EC78A-0531-43F0-A636-285439BDE025} = {203EC78A-0531-43F0-A636-285439BDE025}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ctestfw", "..\tools\ctestfw\ctestfw.vcproj", "{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "decmn", "..\tools\gencmn\decmn.vcproj", "{20869594-A3DD-4A75-8068-99B03A5CF4E4}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "derb", "..\tools\genrb\derb.vcproj", "{D3065ADB-8820-4CC7-9B6C-9510833961A3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genbrk", "..\tools\genbrk\genbrk.vcproj", "{C2BE5000-7501-4E87-9724-B8D82494FAE6}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genccode", "..\tools\genccode\genccode.vcproj", "{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencmn", "..\tools\gencmn\gencmn.vcproj", "{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencnval", "..\tools\gencnval\gencnval.vcproj", "{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennames", "..\tools\gennames\gennames.vcproj", "{F5281B04-A9E0-4680-BBA8-1D7F7D115458}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennorm", "..\tools\gennorm\gennorm.vcproj", "{F5213103-6CBE-46E6-B4CC-2570B6837D86}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genpname", "..\tools\genpname\genpname.vcproj", "{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genprops", "..\tools\genprops\genprops.vcproj", "{6F744648-D15F-478A-90C6-58E353B5DDB3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrb", "..\tools\genrb\genrb.vcproj", "{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gentest", "..\tools\gentest\gentest.vcproj", "{77C78066-746F-4EA6-B3FE-B8C8A4A97891}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genuca", "..\tools\genuca\genuca.vcproj", "{86829694-A375-4C58-B4EA-96EF514E3225}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "i18n", "..\i18n\i18n.vcproj", "{0178B127-6269-407D-B112-93877BB62776}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intltest", "..\test\intltest\intltest.vcproj", "{73632960-B3A6-464D-83A3-4B43365F19B8}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layout", "..\layout\layout.vcproj", "{C920062A-0647-4553-A3B2-37C58065664B}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layoutex", "..\layoutex\layoutex.vcproj", "{37FC2C7F-1904-4811-8955-2F478830EAD1}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C920062A-0647-4553-A3B2-37C58065664B} = {C920062A-0647-4553-A3B2-37C58065664B}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makeconv", "..\tools\makeconv\makeconv.vcproj", "{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makedata", "..\data\makedata.vcproj", "{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6} = {C2BE5000-7501-4E87-9724-B8D82494FAE6}
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86} = {F5213103-6CBE-46E6-B4CC-2570B6837D86}
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458} = {F5281B04-A9E0-4680-BBA8-1D7F7D115458}
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A} = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB} = {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF} = {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C} = {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3} = {6F744648-D15F-478A-90C6-58E353B5DDB3}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891} = {77C78066-746F-4EA6-B3FE-B8C8A4A97891}
|
||||
{203EC78A-0531-43F0-A636-285439BDE025} = {203EC78A-0531-43F0-A636-285439BDE025}
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F} = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225} = {86829694-A375-4C58-B4EA-96EF514E3225}
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA} = {631C23CE-6C1D-4875-88F0-85E0A42B36EA}
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547} = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC} = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pkgdata", "..\tools\pkgdata\pkgdata.vcproj", "{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F} = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547} = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stubdata", "..\stubdata\stubdata.vcproj", "{203EC78A-0531-43F0-A636-285439BDE025}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toolutil", "..\tools\toolutil\toolutil.vcproj", "{6B231032-3CB5-4EED-9210-810D666A23A0}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uconv", "..\extra\uconv\uconv.vcproj", "{DBA4088D-F6F9-4F8F-8820-082A4765C16C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A} = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC} = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "io", "..\io\io.vcproj", "{C2B04507-2521-4801-BF0D-5FD79D6D518C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gensprep", "..\tools\gensprep\gensprep.vcproj", "{631C23CE-6C1D-4875-88F0-85E0A42B36EA}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icuswap", "..\tools\icuswap\icuswap.vcproj", "{6FC24387-370C-4561-9582-7A819749E2C5}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iotest", "..\test\iotest\iotest.vcproj", "{E4993E82-D68A-46CA-BAE0-9D35E172E46F}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C} = {C2B04507-2521-4801-BF0D-5FD79D6D518C}
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectDependencies) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug.ActiveCfg = Debug|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug.Build.0 = Debug|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release.ActiveCfg = Release|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release.Build.0 = Release|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug.ActiveCfg = Debug|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug.Build.0 = Debug|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release.ActiveCfg = Release|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release.Build.0 = Release|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug.ActiveCfg = Debug|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug.Build.0 = Debug|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release.ActiveCfg = Release|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release.Build.0 = Release|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug.ActiveCfg = Debug|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug.Build.0 = Debug|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release.ActiveCfg = Release|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release.Build.0 = Release|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug.ActiveCfg = Debug|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug.Build.0 = Debug|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release.ActiveCfg = Release|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release.Build.0 = Release|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug.ActiveCfg = Debug|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug.Build.0 = Debug|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release.ActiveCfg = Release|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release.Build.0 = Release|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug.ActiveCfg = Debug|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug.Build.0 = Debug|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release.ActiveCfg = Release|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release.Build.0 = Release|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug.ActiveCfg = Debug|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug.Build.0 = Debug|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release.ActiveCfg = Release|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release.Build.0 = Release|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug.ActiveCfg = Debug|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug.Build.0 = Debug|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release.ActiveCfg = Release|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release.Build.0 = Release|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug.ActiveCfg = Debug|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug.Build.0 = Debug|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release.ActiveCfg = Release|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release.Build.0 = Release|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug.ActiveCfg = Debug|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug.Build.0 = Debug|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release.ActiveCfg = Release|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release.Build.0 = Release|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug.ActiveCfg = Debug|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug.Build.0 = Debug|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release.ActiveCfg = Release|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release.Build.0 = Release|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug.ActiveCfg = Debug|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug.Build.0 = Debug|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release.ActiveCfg = Release|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release.Build.0 = Release|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug.ActiveCfg = Debug|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug.Build.0 = Debug|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release.ActiveCfg = Release|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release.Build.0 = Release|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug.ActiveCfg = Debug|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug.Build.0 = Debug|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release.ActiveCfg = Release|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release.Build.0 = Release|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug.ActiveCfg = Debug|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug.Build.0 = Debug|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release.ActiveCfg = Release|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release.Build.0 = Release|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug.ActiveCfg = Debug|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug.Build.0 = Debug|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release.ActiveCfg = Release|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release.Build.0 = Release|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug.ActiveCfg = Debug|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug.Build.0 = Debug|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release.ActiveCfg = Release|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release.Build.0 = Release|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug.ActiveCfg = Debug|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug.Build.0 = Debug|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release.ActiveCfg = Release|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release.Build.0 = Release|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug.ActiveCfg = Debug|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug.Build.0 = Debug|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release.ActiveCfg = Release|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release.Build.0 = Release|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug.ActiveCfg = Debug|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug.Build.0 = Debug|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release.ActiveCfg = Release|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release.Build.0 = Release|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug.ActiveCfg = Debug|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug.Build.0 = Debug|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release.ActiveCfg = Release|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release.Build.0 = Release|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug.ActiveCfg = Debug|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug.Build.0 = Debug|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release.ActiveCfg = Release|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release.Build.0 = Release|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug.ActiveCfg = Debug|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug.Build.0 = Debug|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release.ActiveCfg = Release|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release.Build.0 = Release|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug.ActiveCfg = Debug|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug.Build.0 = Debug|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release.ActiveCfg = Release|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release.Build.0 = Release|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug.ActiveCfg = Debug|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug.Build.0 = Debug|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release.ActiveCfg = Release|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release.Build.0 = Release|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug.ActiveCfg = Debug|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug.Build.0 = Debug|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release.ActiveCfg = Release|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release.Build.0 = Release|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug.ActiveCfg = Debug|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug.Build.0 = Debug|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release.ActiveCfg = Release|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release.Build.0 = Release|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug.ActiveCfg = Debug|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug.Build.0 = Debug|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release.ActiveCfg = Release|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release.Build.0 = Release|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug.ActiveCfg = Debug|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug.Build.0 = Debug|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release.ActiveCfg = Release|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.Build.0 = Debug|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.Build.0 = Release|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.ActiveCfg = Release|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.Build.0 = Release|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.Build.0 = Debug|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.Build.0 = Release|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.ActiveCfg = Release|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.Build.0 = Release|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.Build.0 = Debug|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.Build.0 = Release|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.ActiveCfg = Release|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.Build.0 = Release|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|x64.Build.0 = Debug|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|Win32.Build.0 = Release|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|x64.ActiveCfg = Release|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|x64.Build.0 = Release|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.Build.0 = Debug|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.Build.0 = Release|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.ActiveCfg = Release|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.Build.0 = Release|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.Build.0 = Debug|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.Build.0 = Release|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.ActiveCfg = Release|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.Build.0 = Release|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.Build.0 = Debug|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.Build.0 = Release|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.ActiveCfg = Release|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.Build.0 = Release|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.Build.0 = Debug|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.Build.0 = Release|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.ActiveCfg = Release|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.Build.0 = Release|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.Build.0 = Debug|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.Build.0 = Release|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.ActiveCfg = Release|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.Build.0 = Release|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|x64.Build.0 = Release|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|x64.Build.0 = Release|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|x64.Build.0 = Debug|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|Win32.Build.0 = Release|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|x64.ActiveCfg = Release|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|x64.Build.0 = Release|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|x64.Build.0 = Debug|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|Win32.Build.0 = Release|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|x64.ActiveCfg = Release|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|x64.Build.0 = Release|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.Build.0 = Debug|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.Build.0 = Release|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.ActiveCfg = Release|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.Build.0 = Release|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.Build.0 = Debug|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.Build.0 = Release|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.ActiveCfg = Release|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.Build.0 = Release|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|x64.Build.0 = Debug|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|Win32.Build.0 = Release|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|x64.ActiveCfg = Release|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|x64.Build.0 = Release|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.Build.0 = Debug|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.Build.0 = Release|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.ActiveCfg = Release|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.Build.0 = Release|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.Build.0 = Debug|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.Build.0 = Release|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.ActiveCfg = Release|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.Build.0 = Release|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.Build.0 = Debug|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.Build.0 = Release|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.ActiveCfg = Release|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.Build.0 = Release|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.Build.0 = Debug|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.Build.0 = Release|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.ActiveCfg = Release|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.Build.0 = Release|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.Build.0 = Release|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.Build.0 = Debug|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.Build.0 = Release|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.ActiveCfg = Release|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.Build.0 = Release|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.Build.0 = Debug|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.Build.0 = Release|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.ActiveCfg = Release|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.Build.0 = Release|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.Build.0 = Debug|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.Build.0 = Release|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.ActiveCfg = Release|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.Build.0 = Release|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.Build.0 = Debug|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.Build.0 = Release|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.ActiveCfg = Release|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.Build.0 = Release|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.Build.0 = Debug|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.Build.0 = Release|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.ActiveCfg = Release|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.Build.0 = Release|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.Build.0 = Debug|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.Build.0 = Release|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.ActiveCfg = Release|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.Build.0 = Release|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.Build.0 = Debug|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.Build.0 = Release|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.ActiveCfg = Release|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.Build.0 = Release|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|x64.Build.0 = Debug|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|Win32.Build.0 = Release|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|x64.ActiveCfg = Release|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|x64.Build.0 = Release|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.Build.0 = Debug|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.Build.0 = Release|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.ActiveCfg = Release|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
315
extern/icu/source/allinone/allinone_10.sln
vendored
315
extern/icu/source/allinone/allinone_10.sln
vendored
@ -1,315 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cintltst", "..\test\cintltst\cintltst_10.vcxproj", "{3D1246AE-1B32-479B-BECA-AEFA97BE2321}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "..\common\common_10.vcxproj", "{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ctestfw", "..\tools\ctestfw\ctestfw_10.vcxproj", "{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "decmn", "..\tools\gencmn\decmn_10.vcxproj", "{20869594-A3DD-4A75-8068-99B03A5CF4E4}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "derb", "..\tools\genrb\derb_10.vcxproj", "{D3065ADB-8820-4CC7-9B6C-9510833961A3}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genbrk", "..\tools\genbrk\genbrk_10.vcxproj", "{C2BE5000-7501-4E87-9724-B8D82494FAE6}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genccode", "..\tools\genccode\genccode_10.vcxproj", "{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencmn", "..\tools\gencmn\gencmn_10.vcxproj", "{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencnval", "..\tools\gencnval\gencnval_10.vcxproj", "{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennames", "..\tools\gennames\gennames_10.vcxproj", "{F5281B04-A9E0-4680-BBA8-1D7F7D115458}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennorm", "..\tools\gennorm\gennorm_10.vcxproj", "{F5213103-6CBE-46E6-B4CC-2570B6837D86}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genpname", "..\tools\genpname\genpname_10.vcxproj", "{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genprops", "..\tools\genprops\genprops_10.vcxproj", "{6F744648-D15F-478A-90C6-58E353B5DDB3}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrb", "..\tools\genrb\genrb_10.vcxproj", "{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gentest", "..\tools\gentest\gentest_10.vcxproj", "{77C78066-746F-4EA6-B3FE-B8C8A4A97891}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genuca", "..\tools\genuca\genuca_10.vcxproj", "{86829694-A375-4C58-B4EA-96EF514E3225}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "i18n", "..\i18n\i18n_10.vcxproj", "{0178B127-6269-407D-B112-93877BB62776}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intltest", "..\test\intltest\intltest_10.vcxproj", "{73632960-B3A6-464D-83A3-4B43365F19B8}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layout", "..\layout\layout_10.vcxproj", "{C920062A-0647-4553-A3B2-37C58065664B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layoutex", "..\layoutex\layoutex_10.vcxproj", "{37FC2C7F-1904-4811-8955-2F478830EAD1}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makeconv", "..\tools\makeconv\makeconv_10.vcxproj", "{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makedata", "..\data\makedata_10.vcxproj", "{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pkgdata", "..\tools\pkgdata\pkgdata_10.vcxproj", "{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stubdata", "..\stubdata\stubdata_10.vcxproj", "{203EC78A-0531-43F0-A636-285439BDE025}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toolutil", "..\tools\toolutil\toolutil_10.vcxproj", "{6B231032-3CB5-4EED-9210-810D666A23A0}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uconv", "..\extra\uconv\uconv_10.vcxproj", "{DBA4088D-F6F9-4F8F-8820-082A4765C16C}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "io", "..\io\io_10.vcxproj", "{C2B04507-2521-4801-BF0D-5FD79D6D518C}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gensprep", "..\tools\gensprep\gensprep_10.vcxproj", "{631C23CE-6C1D-4875-88F0-85E0A42B36EA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icuswap", "..\tools\icuswap\icuswap_10.vcxproj", "{6FC24387-370C-4561-9582-7A819749E2C5}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iotest", "..\test\iotest\iotest_10.vcxproj", "{E4993E82-D68A-46CA-BAE0-9D35E172E46F}"
|
||||
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
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.Build.0 = Debug|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.Build.0 = Release|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.ActiveCfg = Release|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.Build.0 = Release|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.Build.0 = Debug|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.Build.0 = Release|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.ActiveCfg = Release|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.Build.0 = Release|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.Build.0 = Debug|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.Build.0 = Release|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.ActiveCfg = Release|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.Build.0 = Release|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|x64.Build.0 = Debug|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|Win32.Build.0 = Release|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|x64.ActiveCfg = Release|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|x64.Build.0 = Release|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.Build.0 = Debug|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.Build.0 = Release|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.ActiveCfg = Release|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.Build.0 = Release|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.Build.0 = Debug|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.Build.0 = Release|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.ActiveCfg = Release|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.Build.0 = Release|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.Build.0 = Debug|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.Build.0 = Release|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.ActiveCfg = Release|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.Build.0 = Release|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.Build.0 = Debug|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.Build.0 = Release|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.ActiveCfg = Release|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.Build.0 = Release|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.Build.0 = Debug|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.Build.0 = Release|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.ActiveCfg = Release|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.Build.0 = Release|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|x64.Build.0 = Release|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|x64.Build.0 = Release|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|x64.Build.0 = Debug|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|Win32.Build.0 = Release|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|x64.ActiveCfg = Release|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|x64.Build.0 = Release|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|x64.Build.0 = Debug|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|Win32.Build.0 = Release|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|x64.ActiveCfg = Release|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|x64.Build.0 = Release|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.Build.0 = Debug|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.Build.0 = Release|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.ActiveCfg = Release|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.Build.0 = Release|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.Build.0 = Debug|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.Build.0 = Release|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.ActiveCfg = Release|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.Build.0 = Release|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|x64.Build.0 = Debug|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|Win32.Build.0 = Release|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|x64.ActiveCfg = Release|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|x64.Build.0 = Release|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.Build.0 = Debug|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.Build.0 = Release|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.ActiveCfg = Release|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.Build.0 = Release|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.Build.0 = Debug|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.Build.0 = Release|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.ActiveCfg = Release|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.Build.0 = Release|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.Build.0 = Debug|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.Build.0 = Release|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.ActiveCfg = Release|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.Build.0 = Release|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.Build.0 = Debug|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.Build.0 = Release|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.ActiveCfg = Release|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.Build.0 = Release|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.Build.0 = Release|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.Build.0 = Debug|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.Build.0 = Release|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.ActiveCfg = Release|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.Build.0 = Release|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.Build.0 = Debug|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.Build.0 = Release|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.ActiveCfg = Release|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.Build.0 = Release|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.Build.0 = Debug|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.Build.0 = Release|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.ActiveCfg = Release|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.Build.0 = Release|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.Build.0 = Debug|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.Build.0 = Release|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.ActiveCfg = Release|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.Build.0 = Release|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.Build.0 = Debug|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.Build.0 = Release|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.ActiveCfg = Release|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.Build.0 = Release|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.Build.0 = Debug|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.Build.0 = Release|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.ActiveCfg = Release|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.Build.0 = Release|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.Build.0 = Debug|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.Build.0 = Release|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.ActiveCfg = Release|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.Build.0 = Release|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|x64.Build.0 = Debug|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|Win32.Build.0 = Release|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|x64.ActiveCfg = Release|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|x64.Build.0 = Release|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.Build.0 = Debug|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.Build.0 = Release|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.ActiveCfg = Release|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
455
extern/icu/source/allinone/allinone_8.sln
vendored
455
extern/icu/source/allinone/allinone_8.sln
vendored
@ -1,455 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cintltst", "..\test\cintltst\cintltst_8.vcproj", "{3D1246AE-1B32-479B-BECA-AEFA97BE2321}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "..\common\common_8.vcproj", "{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{203EC78A-0531-43F0-A636-285439BDE025} = {203EC78A-0531-43F0-A636-285439BDE025}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ctestfw", "..\tools\ctestfw\ctestfw_8.vcproj", "{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "decmn", "..\tools\gencmn\decmn_8.vcproj", "{20869594-A3DD-4A75-8068-99B03A5CF4E4}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "derb", "..\tools\genrb\derb_8.vcproj", "{D3065ADB-8820-4CC7-9B6C-9510833961A3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genbrk", "..\tools\genbrk\genbrk_8.vcproj", "{C2BE5000-7501-4E87-9724-B8D82494FAE6}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genccode", "..\tools\genccode\genccode_8.vcproj", "{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencmn", "..\tools\gencmn\gencmn_8.vcproj", "{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencnval", "..\tools\gencnval\gencnval_8.vcproj", "{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennames", "..\tools\gennames\gennames_8.vcproj", "{F5281B04-A9E0-4680-BBA8-1D7F7D115458}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennorm", "..\tools\gennorm\gennorm_8.vcproj", "{F5213103-6CBE-46E6-B4CC-2570B6837D86}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genpname", "..\tools\genpname\genpname_8.vcproj", "{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genprops", "..\tools\genprops\genprops_8.vcproj", "{6F744648-D15F-478A-90C6-58E353B5DDB3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrb", "..\tools\genrb\genrb_8.vcproj", "{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gentest", "..\tools\gentest\gentest_8.vcproj", "{77C78066-746F-4EA6-B3FE-B8C8A4A97891}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genuca", "..\tools\genuca\genuca_8.vcproj", "{86829694-A375-4C58-B4EA-96EF514E3225}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "i18n", "..\i18n\i18n_8.vcproj", "{0178B127-6269-407D-B112-93877BB62776}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intltest", "..\test\intltest\intltest_8.vcproj", "{73632960-B3A6-464D-83A3-4B43365F19B8}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layout", "..\layout\layout_8.vcproj", "{C920062A-0647-4553-A3B2-37C58065664B}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layoutex", "..\layoutex\layoutex_8.vcproj", "{37FC2C7F-1904-4811-8955-2F478830EAD1}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C920062A-0647-4553-A3B2-37C58065664B} = {C920062A-0647-4553-A3B2-37C58065664B}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makeconv", "..\tools\makeconv\makeconv_8.vcproj", "{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makedata", "..\data\makedata_8.vcproj", "{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6} = {C2BE5000-7501-4E87-9724-B8D82494FAE6}
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86} = {F5213103-6CBE-46E6-B4CC-2570B6837D86}
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458} = {F5281B04-A9E0-4680-BBA8-1D7F7D115458}
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A} = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB} = {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF} = {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C} = {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3} = {6F744648-D15F-478A-90C6-58E353B5DDB3}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891} = {77C78066-746F-4EA6-B3FE-B8C8A4A97891}
|
||||
{203EC78A-0531-43F0-A636-285439BDE025} = {203EC78A-0531-43F0-A636-285439BDE025}
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F} = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225} = {86829694-A375-4C58-B4EA-96EF514E3225}
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA} = {631C23CE-6C1D-4875-88F0-85E0A42B36EA}
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547} = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC} = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pkgdata", "..\tools\pkgdata\pkgdata_8.vcproj", "{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F} = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547} = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stubdata", "..\stubdata\stubdata_8.vcproj", "{203EC78A-0531-43F0-A636-285439BDE025}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toolutil", "..\tools\toolutil\toolutil_8.vcproj", "{6B231032-3CB5-4EED-9210-810D666A23A0}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uconv", "..\extra\uconv\uconv_8.vcproj", "{DBA4088D-F6F9-4F8F-8820-082A4765C16C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A} = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC} = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "io", "..\io\io_8.vcproj", "{C2B04507-2521-4801-BF0D-5FD79D6D518C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gensprep", "..\tools\gensprep\gensprep_8.vcproj", "{631C23CE-6C1D-4875-88F0-85E0A42B36EA}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icuswap", "..\tools\icuswap\icuswap_8.vcproj", "{6FC24387-370C-4561-9582-7A819749E2C5}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iotest", "..\test\iotest\iotest_8.vcproj", "{E4993E82-D68A-46CA-BAE0-9D35E172E46F}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C} = {C2B04507-2521-4801-BF0D-5FD79D6D518C}
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
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
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.Build.0 = Debug|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.Build.0 = Release|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.ActiveCfg = Release|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.Build.0 = Release|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.Build.0 = Debug|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.Build.0 = Release|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.ActiveCfg = Release|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.Build.0 = Release|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.Build.0 = Debug|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.Build.0 = Release|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.ActiveCfg = Release|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.Build.0 = Release|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|x64.Build.0 = Debug|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|Win32.Build.0 = Release|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|x64.ActiveCfg = Release|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|x64.Build.0 = Release|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.Build.0 = Debug|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.Build.0 = Release|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.ActiveCfg = Release|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.Build.0 = Release|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.Build.0 = Debug|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.Build.0 = Release|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.ActiveCfg = Release|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.Build.0 = Release|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.Build.0 = Debug|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.Build.0 = Release|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.ActiveCfg = Release|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.Build.0 = Release|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.Build.0 = Debug|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.Build.0 = Release|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.ActiveCfg = Release|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.Build.0 = Release|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.Build.0 = Debug|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.Build.0 = Release|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.ActiveCfg = Release|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.Build.0 = Release|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|x64.Build.0 = Release|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|x64.Build.0 = Release|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|x64.Build.0 = Debug|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|Win32.Build.0 = Release|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|x64.ActiveCfg = Release|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|x64.Build.0 = Release|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|x64.Build.0 = Debug|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|Win32.Build.0 = Release|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|x64.ActiveCfg = Release|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|x64.Build.0 = Release|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.Build.0 = Debug|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.Build.0 = Release|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.ActiveCfg = Release|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.Build.0 = Release|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.Build.0 = Debug|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.Build.0 = Release|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.ActiveCfg = Release|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.Build.0 = Release|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|x64.Build.0 = Debug|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|Win32.Build.0 = Release|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|x64.ActiveCfg = Release|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|x64.Build.0 = Release|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.Build.0 = Debug|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.Build.0 = Release|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.ActiveCfg = Release|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.Build.0 = Release|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.Build.0 = Debug|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.Build.0 = Release|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.ActiveCfg = Release|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.Build.0 = Release|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.Build.0 = Debug|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.Build.0 = Release|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.ActiveCfg = Release|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.Build.0 = Release|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.Build.0 = Debug|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.Build.0 = Release|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.ActiveCfg = Release|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.Build.0 = Release|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.Build.0 = Release|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.Build.0 = Debug|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.Build.0 = Release|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.ActiveCfg = Release|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.Build.0 = Release|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.Build.0 = Debug|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.Build.0 = Release|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.ActiveCfg = Release|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.Build.0 = Release|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.Build.0 = Debug|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.Build.0 = Release|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.ActiveCfg = Release|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.Build.0 = Release|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.Build.0 = Debug|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.Build.0 = Release|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.ActiveCfg = Release|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.Build.0 = Release|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.Build.0 = Debug|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.Build.0 = Release|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.ActiveCfg = Release|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.Build.0 = Release|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.Build.0 = Debug|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.Build.0 = Release|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.ActiveCfg = Release|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.Build.0 = Release|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.Build.0 = Debug|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.Build.0 = Release|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.ActiveCfg = Release|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.Build.0 = Release|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|x64.Build.0 = Debug|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|Win32.Build.0 = Release|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|x64.ActiveCfg = Release|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|x64.Build.0 = Release|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.Build.0 = Debug|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.Build.0 = Release|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.ActiveCfg = Release|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
455
extern/icu/source/allinone/allinone_9.sln
vendored
455
extern/icu/source/allinone/allinone_9.sln
vendored
@ -1,455 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cintltst", "..\test\cintltst\cintltst_9.vcproj", "{3D1246AE-1B32-479B-BECA-AEFA97BE2321}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "..\common\common_9.vcproj", "{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{203EC78A-0531-43F0-A636-285439BDE025} = {203EC78A-0531-43F0-A636-285439BDE025}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ctestfw", "..\tools\ctestfw\ctestfw_9.vcproj", "{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "decmn", "..\tools\gencmn\decmn_9.vcproj", "{20869594-A3DD-4A75-8068-99B03A5CF4E4}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "derb", "..\tools\genrb\derb_9.vcproj", "{D3065ADB-8820-4CC7-9B6C-9510833961A3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genbrk", "..\tools\genbrk\genbrk_9.vcproj", "{C2BE5000-7501-4E87-9724-B8D82494FAE6}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genccode", "..\tools\genccode\genccode_9.vcproj", "{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencmn", "..\tools\gencmn\gencmn_9.vcproj", "{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencnval", "..\tools\gencnval\gencnval_9.vcproj", "{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennames", "..\tools\gennames\gennames_9.vcproj", "{F5281B04-A9E0-4680-BBA8-1D7F7D115458}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennorm", "..\tools\gennorm\gennorm_9.vcproj", "{F5213103-6CBE-46E6-B4CC-2570B6837D86}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genpname", "..\tools\genpname\genpname_9.vcproj", "{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genprops", "..\tools\genprops\genprops_9.vcproj", "{6F744648-D15F-478A-90C6-58E353B5DDB3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrb", "..\tools\genrb\genrb_9.vcproj", "{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gentest", "..\tools\gentest\gentest_9.vcproj", "{77C78066-746F-4EA6-B3FE-B8C8A4A97891}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genuca", "..\tools\genuca\genuca_9.vcproj", "{86829694-A375-4C58-B4EA-96EF514E3225}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "i18n", "..\i18n\i18n_9.vcproj", "{0178B127-6269-407D-B112-93877BB62776}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intltest", "..\test\intltest\intltest_9.vcproj", "{73632960-B3A6-464D-83A3-4B43365F19B8}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layout", "..\layout\layout_9.vcproj", "{C920062A-0647-4553-A3B2-37C58065664B}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layoutex", "..\layoutex\layoutex_9.vcproj", "{37FC2C7F-1904-4811-8955-2F478830EAD1}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C920062A-0647-4553-A3B2-37C58065664B} = {C920062A-0647-4553-A3B2-37C58065664B}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makeconv", "..\tools\makeconv\makeconv_9.vcproj", "{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makedata", "..\data\makedata_9.vcproj", "{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6} = {C2BE5000-7501-4E87-9724-B8D82494FAE6}
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86} = {F5213103-6CBE-46E6-B4CC-2570B6837D86}
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458} = {F5281B04-A9E0-4680-BBA8-1D7F7D115458}
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A} = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB} = {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF} = {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C} = {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3} = {6F744648-D15F-478A-90C6-58E353B5DDB3}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891} = {77C78066-746F-4EA6-B3FE-B8C8A4A97891}
|
||||
{203EC78A-0531-43F0-A636-285439BDE025} = {203EC78A-0531-43F0-A636-285439BDE025}
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F} = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225} = {86829694-A375-4C58-B4EA-96EF514E3225}
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA} = {631C23CE-6C1D-4875-88F0-85E0A42B36EA}
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547} = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC} = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pkgdata", "..\tools\pkgdata\pkgdata_9.vcproj", "{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F} = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547} = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stubdata", "..\stubdata\stubdata_9.vcproj", "{203EC78A-0531-43F0-A636-285439BDE025}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toolutil", "..\tools\toolutil\toolutil_9.vcproj", "{6B231032-3CB5-4EED-9210-810D666A23A0}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uconv", "..\extra\uconv\uconv_9.vcproj", "{DBA4088D-F6F9-4F8F-8820-082A4765C16C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A} = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC} = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "io", "..\io\io_9.vcproj", "{C2B04507-2521-4801-BF0D-5FD79D6D518C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gensprep", "..\tools\gensprep\gensprep_9.vcproj", "{631C23CE-6C1D-4875-88F0-85E0A42B36EA}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icuswap", "..\tools\icuswap\icuswap_9.vcproj", "{6FC24387-370C-4561-9582-7A819749E2C5}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iotest", "..\test\iotest\iotest_9.vcproj", "{E4993E82-D68A-46CA-BAE0-9D35E172E46F}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C} = {C2B04507-2521-4801-BF0D-5FD79D6D518C}
|
||||
{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
|
||||
EndProjectSection
|
||||
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
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.Build.0 = Debug|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.Build.0 = Release|Win32
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.ActiveCfg = Release|x64
|
||||
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.Build.0 = Release|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.Build.0 = Debug|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.Build.0 = Release|Win32
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.ActiveCfg = Release|x64
|
||||
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.Build.0 = Release|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.Build.0 = Debug|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.Build.0 = Release|Win32
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.ActiveCfg = Release|x64
|
||||
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.Build.0 = Release|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Debug|x64.Build.0 = Debug|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|Win32.Build.0 = Release|Win32
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|x64.ActiveCfg = Release|x64
|
||||
{20869594-A3DD-4A75-8068-99B03A5CF4E4}.Release|x64.Build.0 = Release|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.Build.0 = Debug|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.Build.0 = Release|Win32
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.ActiveCfg = Release|x64
|
||||
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.Build.0 = Release|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.Build.0 = Debug|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.Build.0 = Release|Win32
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.ActiveCfg = Release|x64
|
||||
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.Build.0 = Release|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.Build.0 = Debug|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.Build.0 = Release|Win32
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.ActiveCfg = Release|x64
|
||||
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.Build.0 = Release|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.Build.0 = Debug|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.Build.0 = Release|Win32
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.ActiveCfg = Release|x64
|
||||
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.Build.0 = Release|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.Build.0 = Debug|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.Build.0 = Release|Win32
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.ActiveCfg = Release|x64
|
||||
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.Build.0 = Release|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|x64.Build.0 = Release|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|x64.Build.0 = Release|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|x64.Build.0 = Debug|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|Win32.Build.0 = Release|Win32
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|x64.ActiveCfg = Release|x64
|
||||
{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|x64.Build.0 = Release|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|x64.Build.0 = Debug|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|Win32.Build.0 = Release|Win32
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|x64.ActiveCfg = Release|x64
|
||||
{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|x64.Build.0 = Release|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.Build.0 = Debug|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.Build.0 = Release|Win32
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.ActiveCfg = Release|x64
|
||||
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.Build.0 = Release|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.Build.0 = Debug|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.Build.0 = Release|Win32
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.ActiveCfg = Release|x64
|
||||
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.Build.0 = Release|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|x64.Build.0 = Debug|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|Win32.Build.0 = Release|Win32
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|x64.ActiveCfg = Release|x64
|
||||
{86829694-A375-4C58-B4EA-96EF514E3225}.Release|x64.Build.0 = Release|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.Build.0 = Debug|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.Build.0 = Release|Win32
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.ActiveCfg = Release|x64
|
||||
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.Build.0 = Release|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.Build.0 = Debug|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.Build.0 = Release|Win32
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.ActiveCfg = Release|x64
|
||||
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.Build.0 = Release|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.Build.0 = Debug|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.Build.0 = Release|Win32
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.ActiveCfg = Release|x64
|
||||
{C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.Build.0 = Release|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.Build.0 = Debug|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.Build.0 = Release|Win32
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.ActiveCfg = Release|x64
|
||||
{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.Build.0 = Release|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.Build.0 = Debug|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.Build.0 = Release|Win32
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.ActiveCfg = Release|x64
|
||||
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.Build.0 = Release|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.Build.0 = Debug|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.Build.0 = Release|Win32
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.ActiveCfg = Release|x64
|
||||
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.Build.0 = Release|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.Build.0 = Debug|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.Build.0 = Release|Win32
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.ActiveCfg = Release|x64
|
||||
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.Build.0 = Release|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.Build.0 = Debug|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.Build.0 = Release|Win32
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.ActiveCfg = Release|x64
|
||||
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.Build.0 = Release|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.Build.0 = Debug|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.Build.0 = Release|Win32
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.ActiveCfg = Release|x64
|
||||
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.Build.0 = Release|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.Build.0 = Debug|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.Build.0 = Release|Win32
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.ActiveCfg = Release|x64
|
||||
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.Build.0 = Release|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.Build.0 = Debug|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.Build.0 = Release|Win32
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.ActiveCfg = Release|x64
|
||||
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.Build.0 = Release|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.Build.0 = Debug|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.Build.0 = Release|Win32
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.ActiveCfg = Release|x64
|
||||
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.Build.0 = Release|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Debug|x64.Build.0 = Debug|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|Win32.Build.0 = Release|Win32
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|x64.ActiveCfg = Release|x64
|
||||
{6FC24387-370C-4561-9582-7A819749E2C5}.Release|x64.Build.0 = Release|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.Build.0 = Debug|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.Build.0 = Release|Win32
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.ActiveCfg = Release|x64
|
||||
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
18
extern/icu/source/allinone/firebird2debug.props
vendored
18
extern/icu/source/allinone/firebird2debug.props
vendored
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BrowseInformation>true</BrowseInformation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
</Project>
|
@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioPropertySheet
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="firebird2debug"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
BrowseInformation="1"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
GenerateDebugInformation="true"
|
||||
LinkIncremental="2"
|
||||
/>
|
||||
</VisualStudioPropertySheet>
|
18
extern/icu/source/allinone/firebird2intl.props
vendored
18
extern/icu/source/allinone/firebird2intl.props
vendored
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir>$(PlatformName)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(PlatformName)\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<DisableLanguageExtensions>true</DisableLanguageExtensions>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
</Project>
|
17
extern/icu/source/allinone/firebird2intl.vsprops
vendored
17
extern/icu/source/allinone/firebird2intl.vsprops
vendored
@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioPropertySheet
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="firebird2intl"
|
||||
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
EnableFunctionLevelLinking="false"
|
||||
DisableLanguageExtensions="true"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS"
|
||||
/>
|
||||
</VisualStudioPropertySheet>
|
@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<IgnoreSpecificDefaultLibraries>msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
</Project>
|
@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioPropertySheet
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="firebird2release"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
IgnoreDefaultLibraryNames="msvcrt.lib"
|
||||
/>
|
||||
</VisualStudioPropertySheet>
|
179
extern/icu/source/common/Makefile.in
vendored
179
extern/icu/source/common/Makefile.in
vendored
@ -1,179 +0,0 @@
|
||||
#******************************************************************************
|
||||
#
|
||||
# Copyright (C) 1999-2004, International Business Machines
|
||||
# Corporation and others. All Rights Reserved.
|
||||
#
|
||||
#******************************************************************************
|
||||
## Makefile.in for ICU - icuuc.so
|
||||
## Stephen F. Booth
|
||||
|
||||
## Source directory information
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
top_builddir = ..
|
||||
|
||||
## All the flags and other definitions are included here.
|
||||
include $(top_builddir)/icudefs.mk
|
||||
|
||||
## Build directory information
|
||||
subdir = common
|
||||
|
||||
## Extra files to remove for 'make clean'
|
||||
CLEANFILES = *~ $(DEPS) $(IMPORT_LIB) $(MIDDLE_IMPORT_LIB) $(FINAL_IMPORT_LIB)
|
||||
|
||||
## Target information
|
||||
|
||||
TARGET_STUBNAME=$(COMMON_STUBNAME)
|
||||
|
||||
ifneq ($(ENABLE_STATIC),)
|
||||
TARGET = $(LIBDIR)/$(LIBSICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(A)
|
||||
endif
|
||||
|
||||
ifneq ($(ENABLE_SHARED),)
|
||||
SO_TARGET = $(LIBDIR)/$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO)
|
||||
ALL_SO_TARGETS = $(SO_TARGET) $(MIDDLE_SO_TARGET) $(FINAL_SO_TARGET)
|
||||
|
||||
ifeq ($(ENABLE_SO_VERSION_DATA),1)
|
||||
SO_VERSION_DATA = common.res
|
||||
endif
|
||||
|
||||
ifeq ($(OS390BATCH),1)
|
||||
BATCH_TARGET = $(BATCH_COMMON_TARGET)
|
||||
BATCH_LIBS = $(BATCH_LIBICUDT) -lm
|
||||
endif # OS390BATCH
|
||||
|
||||
endif # ENABLE_SHARED
|
||||
|
||||
ALL_TARGETS = $(TARGET) $(ALL_SO_TARGETS) $(BATCH_TARGET)
|
||||
|
||||
DYNAMICCPPFLAGS = $(SHAREDLIBCPPFLAGS)
|
||||
DYNAMICCFLAGS = $(SHAREDLIBCFLAGS)
|
||||
DYNAMICCXXFLAGS = $(SHAREDLIBCXXFLAGS)
|
||||
|
||||
LDFLAGS += $(LDFLAGSICUUC)
|
||||
CPPFLAGS += -I. -I$(srcdir) -I$(srcdir)/../i18n $(LIBCPPFLAGS)
|
||||
DEFS += -DU_COMMON_IMPLEMENTATION
|
||||
|
||||
# $(LIBICUDT) is either stub data or the real DLL common data.
|
||||
LIBS = $(LIBICUDT) $(DEFAULT_LIBS)
|
||||
|
||||
OBJECTS = putil.o uobject.o cmemory.o umutex.o \
|
||||
udata.o ucmndata.o udatamem.o udataswp.o umapfile.o ucol_swp.o \
|
||||
uresbund.o uresdata.o resbund.o ucat.o locmap.o uloc.o locid.o \
|
||||
uhash.o uhash_us.o \
|
||||
ucnv.o ucnv_bld.o ucnv_cb.o ucnv_cnv.o ucnv_err.o ucnv_ext.o ucnv_io.o ucnvlat1.o \
|
||||
ucnv_u7.o ucnv_u8.o ucnv_u16.o ucnv_u32.o ucnvscsu.o ucnvbocu.o \
|
||||
ucnvmbcs.o ucnv2022.o ucnvhz.o ucnv_lmb.o ucnvisci.o \
|
||||
unistr.o utf_impl.o ustring.o ustrcase.o cstring.o ustrfmt.o ustrtrns.o \
|
||||
normlzr.o unorm.o unorm_it.o chariter.o schriter.o uchriter.o uiter.o \
|
||||
uchar.o uprops.o propname.o ubidi.o ubidiwrt.o ubidiln.o ushape.o unames.o \
|
||||
ucln_cmn.o uscript.o usc_impl.o uvector.o ustack.o uvectr32.o ucmp8.o \
|
||||
uarrsort.o utrie.o uset.o uniset.o ruleiter.o caniter.o unifilt.o unifunct.o usetiter.o \
|
||||
brkiter.o brkdict.o ubrk.o dbbi.o dbbi_tbl.o \
|
||||
rbbi.o rbbidata.o rbbinode.o rbbirb.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.o \
|
||||
icuserv.o iculserv.o icunotif.o uenum.o ustrenum.o \
|
||||
uidna.o usprep.o punycode.o \
|
||||
cwchar.o filestrm.o umemstrm.o util.o parsepos.o utrace.o locbased.o
|
||||
|
||||
STATIC_OBJECTS = $(OBJECTS:.o=.$(STATIC_O))
|
||||
|
||||
DEPS = $(OBJECTS:.o=.d)
|
||||
|
||||
## Header files to install
|
||||
HEADERS = unicode/*.h $(srcdir)/unicode/*.h
|
||||
|
||||
## List of phony targets
|
||||
.PHONY : all all-local install install-local clean clean-local \
|
||||
distclean distclean-local install-library install-headers 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
|
||||
|
||||
-include Makefile.local
|
||||
|
||||
all-local: $(ALL_TARGETS) unicode/platform.h
|
||||
|
||||
install-local: install-headers install-library
|
||||
|
||||
install-library: all-local
|
||||
$(MKINSTALLDIRS) $(DESTDIR)$(libdir)
|
||||
ifneq ($(ENABLE_STATIC),)
|
||||
$(INSTALL-L) $(TARGET) $(DESTDIR)$(libdir)
|
||||
endif
|
||||
ifneq ($(ENABLE_SHARED),)
|
||||
$(INSTALL-L) $(FINAL_SO_TARGET) $(DESTDIR)$(libdir)
|
||||
ifneq ($(FINAL_SO_TARGET),$(SO_TARGET))
|
||||
cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(SO_TARGET)) && ln -s $(notdir $(FINAL_SO_TARGET)) $(notdir $(SO_TARGET))
|
||||
ifneq ($(FINAL_SO_TARGET),$(MIDDLE_SO_TARGET))
|
||||
cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(MIDDLE_SO_TARGET)) && ln -s $(notdir $(FINAL_SO_TARGET)) $(notdir $(MIDDLE_SO_TARGET))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifneq ($(IMPORT_LIB_EXT),)
|
||||
$(INSTALL-L) $(FINAL_IMPORT_LIB) $(DESTDIR)$(libdir)
|
||||
cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(IMPORT_LIB)) && ln -s $(notdir $(FINAL_IMPORT_LIB)) $(notdir $(IMPORT_LIB))
|
||||
ifneq ($(MIDDLE_IMPORT_LIB),$(FINAL_IMPORT_LIB))
|
||||
cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(MIDDLE_IMPORT_LIB)) && ln -s $(notdir $(FINAL_IMPORT_LIB)) $(notdir $(MIDDLE_IMPORT_LIB))
|
||||
endif
|
||||
endif
|
||||
|
||||
install-headers:
|
||||
$(MKINSTALLDIRS) $(DESTDIR)$(includedir)/unicode
|
||||
@for file in $(HEADERS); do \
|
||||
echo "$(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/unicode"; \
|
||||
$(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/unicode || exit; \
|
||||
done
|
||||
|
||||
dist-local:
|
||||
|
||||
clean-local:
|
||||
test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
|
||||
$(RMV) $(OBJECTS) $(STATIC_OBJECTS) $(ALL_TARGETS) $(SO_VERSION_DATA)
|
||||
|
||||
distclean-local: clean-local
|
||||
$(RMV) Makefile icucfg.h unicode/platform.h
|
||||
|
||||
check-local:
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
unicode/platform.h: $(srcdir)/unicode/platform.h.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
ifneq ($(ENABLE_STATIC),)
|
||||
$(TARGET): $(TARGET)($(STATIC_OBJECTS))
|
||||
$(RANLIB) $@
|
||||
endif
|
||||
|
||||
ifneq ($(ENABLE_SHARED),)
|
||||
$(FINAL_SO_TARGET): $(OBJECTS) $(SO_VERSION_DATA)
|
||||
$(SHLIB.cc) $(LD_SONAME) $(OUTOPT)$@ $^ $(LIBS)
|
||||
|
||||
ifeq ($(OS390BATCH),1)
|
||||
$(BATCH_TARGET): $(OBJECTS)
|
||||
$(SHLIB.cc) $(LD_SONAME) $(OUTOPT)$@ $^ $(BATCH_LIBS)
|
||||
endif # OS390BATCH
|
||||
|
||||
endif # ENABLE_SHARED
|
||||
|
||||
ifeq (,$(MAKECMDGOALS))
|
||||
-include $(DEPS)
|
||||
else
|
||||
ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
|
||||
-include $(DEPS)
|
||||
endif
|
||||
endif
|
||||
|
246
extern/icu/source/common/brkdict.cpp
vendored
246
extern/icu/source/common/brkdict.cpp
vendored
@ -1,246 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 1999-2000 IBM and others. All rights reserved.
|
||||
**********************************************************************
|
||||
* Date Name Description
|
||||
* 12/1/99 rtg Ported from Java
|
||||
* 01/13/2000 helena Added UErrorCode to ctors.
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_BREAK_ITERATION
|
||||
|
||||
#include "unicode/resbund.h"
|
||||
#include "brkdict.h"
|
||||
#include "cmemory.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
//=================================================================================
|
||||
// deserialization
|
||||
//=================================================================================
|
||||
|
||||
BreakDictionary::BreakDictionary(const char* /*dictionaryFilename*/, UErrorCode& status)
|
||||
: columnMap(NULL),
|
||||
table(NULL),
|
||||
rowIndex(NULL),
|
||||
rowIndexFlags(NULL),
|
||||
rowIndexFlagsIndex(NULL),
|
||||
rowIndexShifts(NULL)
|
||||
{
|
||||
if (U_FAILURE(status)) return;
|
||||
|
||||
ResourceBundle th((char *)0, Locale("th"), status);
|
||||
|
||||
if (U_FAILURE(status)) return;
|
||||
|
||||
ResourceBundle th_dict = th.get("BreakDictionaryData", status);
|
||||
if (U_FAILURE(status)) return;
|
||||
|
||||
int32_t len;
|
||||
const uint8_t * data = th_dict.getBinary(len, status);
|
||||
if (U_FAILURE(status)) return;
|
||||
|
||||
UMemoryStream* dictionaryStream = uprv_mstrm_openBuffer(data, len);
|
||||
|
||||
if (dictionaryStream == 0) {
|
||||
status = U_FILE_ACCESS_ERROR;
|
||||
return;
|
||||
}
|
||||
readDictionaryFile(dictionaryStream);
|
||||
uprv_mstrm_close(dictionaryStream);
|
||||
}
|
||||
|
||||
BreakDictionary::~BreakDictionary()
|
||||
{
|
||||
ucmp8_close(columnMap);
|
||||
uprv_free(table);
|
||||
uprv_free(rowIndex);
|
||||
uprv_free(rowIndexFlags);
|
||||
uprv_free(rowIndexFlagsIndex);
|
||||
uprv_free(rowIndexShifts);
|
||||
}
|
||||
|
||||
// macros to support readDictionaryFile. The data files originated from a Java
|
||||
// program, and Java always writes data out in big-endian format. These macros will
|
||||
// byte-swap the data for appropriate use on Windows.
|
||||
|
||||
#if U_IS_BIG_ENDIAN
|
||||
#define SWAP32(x)
|
||||
#define SWAP16(x)
|
||||
#else
|
||||
#define SWAP32(x) x = (uint32_t)((x >> 24 & 0xff) | (x >> 8 & 0xff00) | (x << 8 & 0xff0000) | (x << 24 & 0xff000000))
|
||||
#define SWAP16(x) x = (uint16_t)((x << 8 & 0xff00) | (x >> 8 & 0xff))
|
||||
#endif
|
||||
|
||||
void
|
||||
BreakDictionary::readDictionaryFile(UMemoryStream* in)
|
||||
{
|
||||
int32_t l;
|
||||
int32_t version;
|
||||
|
||||
int i;
|
||||
|
||||
// read in the version number (right now we just ignore it)
|
||||
uprv_mstrm_read(in, &version, 4);
|
||||
|
||||
// read in the column map (this is serialized in its internal form:
|
||||
// an index array followed by a data array)
|
||||
uprv_mstrm_read(in, &l, 4);
|
||||
SWAP32(l);
|
||||
uint16_t* temp = (uint16_t*) uprv_malloc(sizeof(uint16_t)*l);
|
||||
uprv_mstrm_read(in, temp, l * sizeof (int16_t) );
|
||||
for (i = 0; i < l; i++) {
|
||||
SWAP16(temp[i]);
|
||||
}
|
||||
uprv_mstrm_read(in, &l, 4);
|
||||
SWAP32(l);
|
||||
int8_t* temp2 = (int8_t*) uprv_malloc(sizeof(int8_t)*l);
|
||||
uprv_mstrm_read(in, temp2, l);
|
||||
columnMap = ucmp8_openAdopt(temp, temp2, l);
|
||||
|
||||
// read in numCols and numColGroups
|
||||
uprv_mstrm_read(in, &numCols, 4);
|
||||
SWAP32(numCols);
|
||||
uprv_mstrm_read(in, &numColGroups, 4);
|
||||
SWAP32(numColGroups);
|
||||
|
||||
// read in the row-number index
|
||||
uprv_mstrm_read(in, &l, 4);
|
||||
SWAP32(l);
|
||||
rowIndex = (int16_t *)uprv_malloc(l*2);
|
||||
uprv_mstrm_read(in, rowIndex, l * sizeof (int16_t) );
|
||||
for (i = 0; i < l; i++) {
|
||||
SWAP16(rowIndex[i]);
|
||||
}
|
||||
|
||||
// load in the populated-cells bitmap: index first, then bitmap list
|
||||
uprv_mstrm_read(in, &l, 4);
|
||||
SWAP32(l);
|
||||
rowIndexFlagsIndex = (int16_t *)uprv_malloc(l*2);
|
||||
uprv_mstrm_read(in, rowIndexFlagsIndex, l * sizeof(int16_t) );
|
||||
for (i = 0; i < l; i++) {
|
||||
SWAP16(rowIndexFlagsIndex[i]);
|
||||
}
|
||||
uprv_mstrm_read(in, &l, 4);
|
||||
SWAP32(l);
|
||||
rowIndexFlags = (int32_t *)uprv_malloc(l*4);
|
||||
uprv_mstrm_read(in, rowIndexFlags, l * sizeof(int32_t));
|
||||
for (i = 0; i < l; i++) {
|
||||
SWAP32(rowIndexFlags[i]);
|
||||
}
|
||||
|
||||
// load in the row-shift index
|
||||
uprv_mstrm_read(in, &l, 4);
|
||||
SWAP32(l);
|
||||
rowIndexShifts = (int8_t *)uprv_malloc(l);
|
||||
uprv_mstrm_read(in, rowIndexShifts, l);
|
||||
|
||||
// finally, load in the actual state table
|
||||
uprv_mstrm_read(in, &l, 4);
|
||||
SWAP32(l);
|
||||
table = (int16_t *)uprv_malloc(l*2);
|
||||
uprv_mstrm_read(in, table, l * sizeof(int16_t) );
|
||||
for (i = 0; i < l; i++) {
|
||||
SWAP16(table[i]);
|
||||
}
|
||||
|
||||
// the reverse column map occurs next in the file. In the C/C++ code, for the
|
||||
// time being, we're not going to worry about that.
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// access to the words
|
||||
//=================================================================================
|
||||
|
||||
/**
|
||||
* Uses the column map to map the character to a column number, then
|
||||
* passes the row and column number to the other version of at()
|
||||
* @param row The current state
|
||||
* @param ch The character whose column we're interested in
|
||||
* @return The new state to transition to
|
||||
*/
|
||||
int16_t
|
||||
BreakDictionary::at(int32_t row, UChar ch) const
|
||||
{
|
||||
int16_t col = ucmp8_get(columnMap, ch);
|
||||
return at(row, (int32_t)col);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value in the cell with the specified (logical) row and
|
||||
* column numbers. In DictionaryBasedBreakIterator, the row number is
|
||||
* a state number, the column number is an input, and the return value
|
||||
* is the row number of the new state to transition to. (0 is the
|
||||
* "error" state, and -1 is the "end of word" state in a dictionary)
|
||||
* @param row The row number of the current state
|
||||
* @param col The column number of the input character (0 means "not a
|
||||
* dictionary character")
|
||||
* @return The row number of the new state to transition to
|
||||
*/
|
||||
int16_t
|
||||
BreakDictionary::at(int32_t row, int32_t col) const
|
||||
{
|
||||
if (cellIsPopulated(row, col)) {
|
||||
// we map from logical to physical row number by looking up the
|
||||
// mapping in rowIndex; we map from logical column number to
|
||||
// physical column number by looking up a shift value for this
|
||||
// logical row and offsetting the logical column number by
|
||||
// the shift amount. Then we can use internalAt() to actually
|
||||
// get the value out of the table.
|
||||
return internalAt(rowIndex[row], col + rowIndexShifts[row]);
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// implementation
|
||||
//=================================================================================
|
||||
/**
|
||||
* Given (logical) row and column numbers, returns true if the
|
||||
* cell in that position is populated
|
||||
*/
|
||||
UBool
|
||||
BreakDictionary::cellIsPopulated(int32_t row, int32_t col) const
|
||||
{
|
||||
// look up the entry in the bitmap index for the specified row.
|
||||
// If it's a negative number, it's the column number of the only
|
||||
// populated cell in the row
|
||||
if (rowIndexFlagsIndex[row] < 0) {
|
||||
return col == -rowIndexFlagsIndex[row];
|
||||
}
|
||||
|
||||
// if it's a positive number, it's the offset of an entry in the bitmap
|
||||
// list. If the table is more than 32 columns wide, the bitmap is stored
|
||||
// successive entries in the bitmap list, so we have to divide the column
|
||||
// number by 32 and offset the number we got out of the index by the result.
|
||||
// Once we have the appropriate piece of the bitmap, test the appropriate
|
||||
// bit and return the result.
|
||||
else {
|
||||
int32_t flags = rowIndexFlags[rowIndexFlagsIndex[row] + (col >> 5)];
|
||||
return (flags & (1 << (col & 0x1f))) != 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of at() when we know the specified cell is populated.
|
||||
* @param row The PHYSICAL row number of the cell
|
||||
* @param col The PHYSICAL column number of the cell
|
||||
* @return The value stored in the cell
|
||||
*/
|
||||
int16_t
|
||||
BreakDictionary::internalAt(int32_t row, int32_t col) const
|
||||
{
|
||||
// the table is a one-dimensional array, so this just does the math necessary
|
||||
// to treat it as a two-dimensional array (we don't just use a two-dimensional
|
||||
// array because two-dimensional arrays are inefficient in Java)
|
||||
return table[row * numCols + col];
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
|
175
extern/icu/source/common/brkdict.h
vendored
175
extern/icu/source/common/brkdict.h
vendored
@ -1,175 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 1999-2000 IBM and others. All rights reserved.
|
||||
**********************************************************************
|
||||
* Date Name Description
|
||||
* 12/1/99 rtg Ported from Java
|
||||
* 01/13/2000 helena Added UErrorCode to ctors.
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
#ifndef BRKDICT_H
|
||||
#define BRKDICT_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/uobject.h"
|
||||
#include "ucmp8.h"
|
||||
#include "umemstrm.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* This is the class that represents the list of known words used by
|
||||
* DictionaryBasedBreakIterator. The conceptual data structure used
|
||||
* here is a trie: there is a node hanging off the root node for every
|
||||
* letter that can start a word. Each of these nodes has a node hanging
|
||||
* off of it for every letter that can be the second letter of a word
|
||||
* if this node is the first letter, and so on. The trie is represented
|
||||
* as a two-dimensional array that can be treated as a table of state
|
||||
* transitions. Indexes are used to compress this array, taking
|
||||
* advantage of the fact that this array will always be very sparse.
|
||||
*/
|
||||
class BreakDictionary : public UMemory {
|
||||
//=================================================================================
|
||||
// data members
|
||||
//=================================================================================
|
||||
private:
|
||||
|
||||
/**
|
||||
* Maps from characters to column numbers. The main use of this is to
|
||||
* avoid making room in the array for empty columns.
|
||||
*/
|
||||
CompactByteArray* columnMap;
|
||||
|
||||
/**
|
||||
* The number of actual columns in the table
|
||||
*/
|
||||
int32_t numCols;
|
||||
|
||||
/**
|
||||
* Columns are organized into groups of 32. This says how many
|
||||
* column groups. (We could calculate this, but we store the
|
||||
* value to avoid having to repeatedly calculate it.)
|
||||
*/
|
||||
int32_t numColGroups;
|
||||
|
||||
/**
|
||||
* The actual compressed state table. Each conceptual row represents
|
||||
* a state, and the cells in it contain the row numbers of the states
|
||||
* to transition to for each possible letter. 0 is used to indicate
|
||||
* an illegal combination of letters (i.e., the error state). The
|
||||
* table is compressed by eliminating all the unpopulated (i.e., zero)
|
||||
* cells. Multiple conceptual rows can then be doubled up in a single
|
||||
* physical row by sliding them up and possibly shifting them to one
|
||||
* side or the other so the populated cells don't collide. Indexes
|
||||
* are used to identify unpopulated cells and to locate populated cells.
|
||||
*/
|
||||
int16_t* table;
|
||||
|
||||
/**
|
||||
* This index maps logical row numbers to physical row numbers
|
||||
*/
|
||||
int16_t* rowIndex;
|
||||
|
||||
/**
|
||||
* A bitmap is used to tell which cells in the comceptual table are
|
||||
* populated. This array contains all the unique bit combinations
|
||||
* in that bitmap. If the table is more than 32 columns wide,
|
||||
* successive entries in this array are used for a single row.
|
||||
*/
|
||||
int32_t* rowIndexFlags;
|
||||
|
||||
/**
|
||||
* This index maps from a logical row number into the bitmap table above.
|
||||
* (This keeps us from storing duplicate bitmap combinations.) Since there
|
||||
* are a lot of rows with only one populated cell, instead of wasting space
|
||||
* in the bitmap table, we just store a negative number in this index for
|
||||
* rows with one populated cell. The absolute value of that number is
|
||||
* the column number of the populated cell.
|
||||
*/
|
||||
int16_t* rowIndexFlagsIndex;
|
||||
|
||||
/**
|
||||
* For each logical row, this index contains a constant that is added to
|
||||
* the logical column number to get the physical column number
|
||||
*/
|
||||
int8_t* rowIndexShifts;
|
||||
|
||||
//=================================================================================
|
||||
// deserialization
|
||||
//=================================================================================
|
||||
|
||||
public:
|
||||
/**
|
||||
* Constructor. Creates the BreakDictionary by using readDictionaryFile() to
|
||||
* load the dictionary tables from the disk.
|
||||
* @param dictionaryFilename The name of the dictionary file
|
||||
* @param status for errors if it occurs
|
||||
*/
|
||||
BreakDictionary(const char* dictionaryFilename, UErrorCode& status);
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
~BreakDictionary();
|
||||
|
||||
/**
|
||||
* Reads the dictionary file on the disk and constructs the appropriate in-memory
|
||||
* representation.
|
||||
* @param in The given memory stream
|
||||
*/
|
||||
void readDictionaryFile(UMemoryStream* in);
|
||||
|
||||
//=================================================================================
|
||||
// access to the words
|
||||
//=================================================================================
|
||||
|
||||
/**
|
||||
* Uses the column map to map the character to a column number, then
|
||||
* passes the row and column number to the other version of at()
|
||||
* @param row The current state
|
||||
* @param ch The character whose column we're interested in
|
||||
* @return The new state to transition to
|
||||
*/
|
||||
int16_t at(int32_t row, UChar ch) const;
|
||||
|
||||
/**
|
||||
* Returns the value in the cell with the specified (logical) row and
|
||||
* column numbers. In DictionaryBasedBreakIterator, the row number is
|
||||
* a state number, the column number is an input, and the return value
|
||||
* is the row number of the new state to transition to. (0 is the
|
||||
* "error" state, and -1 is the "end of word" state in a dictionary)
|
||||
* @param row The row number of the current state
|
||||
* @param col The column number of the input character (0 means "not a
|
||||
* dictionary character")
|
||||
* @return The row number of the new state to transition to
|
||||
*/
|
||||
int16_t at(int32_t row, int32_t col) const;
|
||||
|
||||
private:
|
||||
/**
|
||||
* Given (logical) row and column numbers, returns true if the
|
||||
* cell in that position is populated
|
||||
* @param row The LOGICAL row number of the cell
|
||||
* @param col The PHYSICAL row number of the cell
|
||||
* @return true if the cell in that position is populated
|
||||
*/
|
||||
UBool cellIsPopulated(int32_t row, int32_t col) const;
|
||||
|
||||
/**
|
||||
* Implementation of at() when we know the specified cell is populated.
|
||||
* @param row The PHYSICAL row number of the cell
|
||||
* @param col The PHYSICAL column number of the cell
|
||||
* @return The value stored in the cell
|
||||
*/
|
||||
int16_t internalAt(int32_t row, int32_t col) const;
|
||||
|
||||
// the following methods are never meant to be called and so are not defined
|
||||
// (if you don't declare them, you get default implementations)
|
||||
BreakDictionary(const BreakDictionary& that);
|
||||
BreakDictionary& operator=(const BreakDictionary& that);
|
||||
};
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif
|
531
extern/icu/source/common/brkiter.cpp
vendored
531
extern/icu/source/common/brkiter.cpp
vendored
@ -1,531 +0,0 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (C) 1997-2004, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*
|
||||
* File TXTBDRY.CPP
|
||||
*
|
||||
* Modification History:
|
||||
*
|
||||
* Date Name Description
|
||||
* 02/18/97 aliu Converted from OpenClass. Added DONE.
|
||||
* 01/13/2000 helena Added UErrorCode parameter to createXXXInstance methods.
|
||||
*****************************************************************************************
|
||||
*/
|
||||
|
||||
// *****************************************************************************
|
||||
// This file was generated from the java source file BreakIterator.java
|
||||
// *****************************************************************************
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_BREAK_ITERATION
|
||||
|
||||
#include "unicode/dbbi.h"
|
||||
#include "unicode/brkiter.h"
|
||||
#include "unicode/udata.h"
|
||||
#include "unicode/resbund.h"
|
||||
#include "cstring.h"
|
||||
#include "mutex.h"
|
||||
#include "iculserv.h"
|
||||
#include "locbased.h"
|
||||
|
||||
// *****************************************************************************
|
||||
// class BreakIterator
|
||||
// This class implements methods for finding the location of boundaries in text.
|
||||
// Instances of BreakIterator maintain a current position and scan over text
|
||||
// returning the index of characters where boundaries occur.
|
||||
// *****************************************************************************
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
const int32_t BreakIterator::DONE = (int32_t)-1;
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
// Creates a break iterator for word breaks.
|
||||
BreakIterator*
|
||||
BreakIterator::createWordInstance(const Locale& key, UErrorCode& status)
|
||||
{
|
||||
return createInstance(key, UBRK_WORD, status);
|
||||
}
|
||||
|
||||
BreakIterator*
|
||||
BreakIterator::makeWordInstance(const Locale& key, UErrorCode& status)
|
||||
{
|
||||
// WARNING: This routine is currently written specifically to handle only the
|
||||
// default rules files and the alternate rules files for Thai. This function
|
||||
// will have to be made fully general at some time in the future!
|
||||
BreakIterator* result = NULL;
|
||||
const char* filename = "word";
|
||||
|
||||
if (U_FAILURE(status))
|
||||
return NULL;
|
||||
|
||||
if (!uprv_strcmp(key.getLanguage(), "th"))
|
||||
{
|
||||
filename = "word_th";
|
||||
}
|
||||
|
||||
UDataMemory* file = udata_open(NULL, "brk", filename, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
// The UDataMemory is adopted by the break iterator.
|
||||
|
||||
if(!uprv_strcmp(filename, "word_th")) {
|
||||
filename = "thaidict.brk";
|
||||
result = new DictionaryBasedBreakIterator(file, filename, status);
|
||||
}
|
||||
else {
|
||||
result = new RuleBasedBreakIterator(file, status);
|
||||
}
|
||||
if (U_FAILURE(status)) { // Sometimes redundant check, but simple.
|
||||
if (result != NULL) {
|
||||
delete result;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
if (result == NULL) {
|
||||
udata_close(file);
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
// Creates a break iterator for line breaks.
|
||||
BreakIterator*
|
||||
BreakIterator::createLineInstance(const Locale& key, UErrorCode& status)
|
||||
{
|
||||
return createInstance(key, UBRK_LINE, status);
|
||||
}
|
||||
|
||||
BreakIterator*
|
||||
BreakIterator::makeLineInstance(const Locale& key, UErrorCode& status)
|
||||
{
|
||||
// WARNING: This routine is currently written specifically to handle only the
|
||||
// default rules files and the alternate rules files for Thai. This function
|
||||
// will have to be made fully general at some time in the future!
|
||||
BreakIterator* result = NULL;
|
||||
const char* filename = "line";
|
||||
|
||||
if (U_FAILURE(status))
|
||||
return NULL;
|
||||
|
||||
if (!uprv_strcmp(key.getLanguage(), "th"))
|
||||
{
|
||||
filename = "line_th";
|
||||
}
|
||||
|
||||
UDataMemory* file = udata_open(NULL, "brk", filename, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
// The UDataMemory is adopted by the break iterator.
|
||||
|
||||
if (!uprv_strcmp(key.getLanguage(), "th")) {
|
||||
filename = "thaidict.brk";
|
||||
result = new DictionaryBasedBreakIterator(file, filename, status);
|
||||
}
|
||||
else {
|
||||
result = new RuleBasedBreakIterator(file, status);
|
||||
}
|
||||
if (U_FAILURE(status)) { // Sometimes redundant check, but simple.
|
||||
if (result != NULL) {
|
||||
delete result;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
if (result == NULL) {
|
||||
udata_close(file);
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
// Creates a break iterator for character breaks.
|
||||
BreakIterator*
|
||||
BreakIterator::createCharacterInstance(const Locale& key, UErrorCode& status)
|
||||
{
|
||||
return createInstance(key, UBRK_CHARACTER, status);
|
||||
}
|
||||
|
||||
BreakIterator*
|
||||
BreakIterator::makeCharacterInstance(const Locale& /* key */, UErrorCode& status)
|
||||
{
|
||||
// WARNING: This routine is currently written specifically to handle only the
|
||||
// default rules files and the alternate rules files for Thai. This function
|
||||
// will have to be made fully general at some time in the future!
|
||||
BreakIterator* result = NULL;
|
||||
static const char filename[] = "char";
|
||||
|
||||
if (U_FAILURE(status))
|
||||
return NULL;
|
||||
UDataMemory* file = udata_open(NULL, "brk", filename, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
// The UDataMemory is adopted by the break iterator.
|
||||
|
||||
result = new RuleBasedBreakIterator(file, status);
|
||||
|
||||
if (U_FAILURE(status)) { // Sometimes redundant check, but simple.
|
||||
if (result != NULL) {
|
||||
delete result;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
if (result == NULL) {
|
||||
udata_close(file);
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
// Creates a break iterator for sentence breaks.
|
||||
BreakIterator*
|
||||
BreakIterator::createSentenceInstance(const Locale& key, UErrorCode& status)
|
||||
{
|
||||
return createInstance(key, UBRK_SENTENCE, status);
|
||||
}
|
||||
|
||||
BreakIterator*
|
||||
BreakIterator::makeSentenceInstance(const Locale& /*key */, UErrorCode& status)
|
||||
{
|
||||
// WARNING: This routine is currently written specifically to handle only the
|
||||
// default rules files and the alternate rules files for Thai. This function
|
||||
// will have to be made fully general at some time in the future!
|
||||
BreakIterator* result = NULL;
|
||||
static const char filename[] = "sent";
|
||||
|
||||
if (U_FAILURE(status))
|
||||
return NULL;
|
||||
UDataMemory* file = udata_open(NULL, "brk", filename, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
// The UDataMemory is adopted by the break iterator.
|
||||
|
||||
result = new RuleBasedBreakIterator(file, status);
|
||||
if (U_FAILURE(status)) { // Sometimes redundant check, but simple.
|
||||
if (result != NULL) {
|
||||
delete result;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
if (result == NULL) {
|
||||
udata_close(file);
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
// Creates a break iterator for title casing breaks.
|
||||
BreakIterator*
|
||||
BreakIterator::createTitleInstance(const Locale& key, UErrorCode& status)
|
||||
{
|
||||
return createInstance(key, UBRK_TITLE, status);
|
||||
}
|
||||
|
||||
BreakIterator*
|
||||
BreakIterator::makeTitleInstance(const Locale& /* key */, UErrorCode& status)
|
||||
{
|
||||
// WARNING: This routine is currently written specifically to handle only the
|
||||
// default rules files. This function will have to be made fully general
|
||||
// at some time in the future!
|
||||
BreakIterator* result = NULL;
|
||||
static const char filename[] = "title";
|
||||
|
||||
if (U_FAILURE(status))
|
||||
return NULL;
|
||||
UDataMemory* file = udata_open(NULL, "brk", filename, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
// The UDataMemory is adopted by the break iterator.
|
||||
|
||||
result = new RuleBasedBreakIterator(file, status);
|
||||
if (U_FAILURE(status)) { // Sometimes redundant check, but simple.
|
||||
if (result != NULL) {
|
||||
delete result;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
if (result == NULL) {
|
||||
udata_close(file);
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
// Gets all the available locales that has localized text boundary data.
|
||||
const Locale*
|
||||
BreakIterator::getAvailableLocales(int32_t& count)
|
||||
{
|
||||
return Locale::getAvailableLocales(count);
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
// Gets the objectLocale display name in the default locale language.
|
||||
UnicodeString&
|
||||
BreakIterator::getDisplayName(const Locale& objectLocale,
|
||||
UnicodeString& name)
|
||||
{
|
||||
return objectLocale.getDisplayName(name);
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
// Gets the objectLocale display name in the displayLocale language.
|
||||
UnicodeString&
|
||||
BreakIterator::getDisplayName(const Locale& objectLocale,
|
||||
const Locale& displayLocale,
|
||||
UnicodeString& name)
|
||||
{
|
||||
return objectLocale.getDisplayName(displayLocale, name);
|
||||
}
|
||||
|
||||
// ------------------------------------------
|
||||
//
|
||||
// Default constructor and destructor
|
||||
//
|
||||
//-------------------------------------------
|
||||
|
||||
BreakIterator::BreakIterator()
|
||||
{
|
||||
fBufferClone = FALSE;
|
||||
*validLocale = *actualLocale = 0;
|
||||
}
|
||||
|
||||
BreakIterator::~BreakIterator()
|
||||
{
|
||||
}
|
||||
|
||||
// ------------------------------------------
|
||||
//
|
||||
// Registration
|
||||
//
|
||||
//-------------------------------------------
|
||||
|
||||
static ICULocaleService* gService = NULL;
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
class ICUBreakIteratorFactory : public ICUResourceBundleFactory {
|
||||
protected:
|
||||
virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* /*service*/, UErrorCode& status) const {
|
||||
return BreakIterator::makeInstance(loc, kind, status);
|
||||
}
|
||||
};
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
class ICUBreakIteratorService : public ICULocaleService {
|
||||
public:
|
||||
ICUBreakIteratorService()
|
||||
: ICULocaleService("Break Iterator")
|
||||
{
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
registerFactory(new ICUBreakIteratorFactory(), status);
|
||||
}
|
||||
|
||||
virtual UObject* cloneInstance(UObject* instance) const {
|
||||
return ((BreakIterator*)instance)->clone();
|
||||
}
|
||||
|
||||
virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /*actualID*/, UErrorCode& status) const {
|
||||
LocaleKey& lkey = (LocaleKey&)key;
|
||||
int32_t kind = lkey.kind();
|
||||
Locale loc;
|
||||
lkey.currentLocale(loc);
|
||||
return BreakIterator::makeInstance(loc, kind, status);
|
||||
}
|
||||
|
||||
virtual UBool isDefault() const {
|
||||
return countFactories() == 1;
|
||||
}
|
||||
};
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
static ICULocaleService*
|
||||
getService(void)
|
||||
{
|
||||
UBool needsInit;
|
||||
umtx_lock(NULL);
|
||||
needsInit = (UBool)(gService == NULL);
|
||||
umtx_unlock(NULL);
|
||||
|
||||
if (needsInit) {
|
||||
ICULocaleService *tService = new ICUBreakIteratorService();
|
||||
umtx_lock(NULL);
|
||||
if (gService == NULL) {
|
||||
gService = tService;
|
||||
tService = NULL;
|
||||
}
|
||||
umtx_unlock(NULL);
|
||||
delete tService;
|
||||
}
|
||||
return gService;
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
static UBool
|
||||
hasService(void)
|
||||
{
|
||||
Mutex mutex;
|
||||
return gService != NULL;
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
BreakIterator*
|
||||
BreakIterator::createInstance(const Locale& loc, UBreakIteratorType kind, UErrorCode& status)
|
||||
{
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
u_init(&status);
|
||||
if (hasService()) {
|
||||
Locale actualLoc;
|
||||
BreakIterator *result = (BreakIterator*)gService->get(loc, kind, &actualLoc, status);
|
||||
// TODO: The way the service code works in ICU 2.8 is that if
|
||||
// there is a real registered break iterator, the actualLoc
|
||||
// will be populated, but if the handleDefault path is taken
|
||||
// (because nothing is registered that can handle the
|
||||
// requested locale) then the actualLoc comes back empty. In
|
||||
// that case, the returned object already has its actual/valid
|
||||
// locale data populated (by makeInstance, which is what
|
||||
// handleDefault calls), so we don't touch it. YES, A COMMENT
|
||||
// THIS LONG is a sign of bad code -- so the action item is to
|
||||
// revisit this in ICU 3.0 and clean it up/fix it/remove it.
|
||||
if (U_SUCCESS(status) && (result != NULL) && *actualLoc.getName() != 0) {
|
||||
U_LOCALE_BASED(locBased, *result);
|
||||
locBased.setLocaleIDs(actualLoc.getName(), actualLoc.getName());
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return makeInstance(loc, kind, status);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
URegistryKey
|
||||
BreakIterator::registerInstance(BreakIterator* toAdopt, const Locale& locale, UBreakIteratorType kind, UErrorCode& status)
|
||||
{
|
||||
return getService()->registerInstance(toAdopt, locale, kind, status);
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
UBool
|
||||
BreakIterator::unregister(URegistryKey key, UErrorCode& status)
|
||||
{
|
||||
if (U_SUCCESS(status)) {
|
||||
if (hasService()) {
|
||||
return gService->unregister(key, status);
|
||||
}
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
StringEnumeration*
|
||||
BreakIterator::getAvailableLocales(void)
|
||||
{
|
||||
return getService()->getAvailableLocales();
|
||||
}
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
BreakIterator*
|
||||
BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
|
||||
{
|
||||
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
BreakIterator *result = NULL;
|
||||
switch (kind) {
|
||||
case UBRK_CHARACTER:
|
||||
result = BreakIterator::makeCharacterInstance(loc, status);
|
||||
break;
|
||||
case UBRK_WORD:
|
||||
result = BreakIterator::makeWordInstance(loc, status);
|
||||
break;
|
||||
case UBRK_LINE:
|
||||
result = BreakIterator::makeLineInstance(loc, status);
|
||||
break;
|
||||
case UBRK_SENTENCE:
|
||||
result = BreakIterator::makeSentenceInstance(loc, status);
|
||||
break;
|
||||
case UBRK_TITLE:
|
||||
result = BreakIterator::makeTitleInstance(loc, status);
|
||||
break;
|
||||
default:
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
}
|
||||
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// this is more of a placeholder. All the break iterators have the same actual locale: root
|
||||
// except the Thai one
|
||||
ResourceBundle res(NULL, loc, status);
|
||||
U_LOCALE_BASED(locBased, *result);
|
||||
locBased.setLocaleIDs(res.getLocale(ULOC_VALID_LOCALE, status).getName(),
|
||||
(uprv_strcmp(loc.getLanguage(), "th") == 0) ?
|
||||
"th" : "root");
|
||||
return result;
|
||||
}
|
||||
|
||||
Locale
|
||||
BreakIterator::getLocale(ULocDataLocaleType type, UErrorCode& status) const {
|
||||
U_LOCALE_BASED(locBased, *this);
|
||||
return locBased.getLocale(type, status);
|
||||
}
|
||||
|
||||
const char *
|
||||
BreakIterator::getLocaleID(ULocDataLocaleType type, UErrorCode& status) const {
|
||||
U_LOCALE_BASED(locBased, *this);
|
||||
return locBased.getLocaleID(type, status);
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
// defined in ucln_cmn.h
|
||||
|
||||
/**
|
||||
* Release all static memory held by breakiterator.
|
||||
*/
|
||||
U_CFUNC UBool breakiterator_cleanup(void) {
|
||||
if (gService) {
|
||||
delete gService;
|
||||
gService = NULL;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
|
||||
|
||||
//eof
|
703
extern/icu/source/common/caniter.cpp
vendored
703
extern/icu/source/common/caniter.cpp
vendored
@ -1,703 +0,0 @@
|
||||
/*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1996-2003, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*****************************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_NORMALIZATION
|
||||
|
||||
#include "unicode/uset.h"
|
||||
#include "unicode/ustring.h"
|
||||
#include "hash.h"
|
||||
#include "unormimp.h"
|
||||
#include "unicode/caniter.h"
|
||||
#include "unicode/normlzr.h"
|
||||
#include "unicode/uchar.h"
|
||||
#include "cmemory.h"
|
||||
|
||||
/**
|
||||
* This class allows one to iterate through all the strings that are canonically equivalent to a given
|
||||
* string. For example, here are some sample results:
|
||||
Results for: {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
|
||||
1: \u0041\u030A\u0064\u0307\u0327
|
||||
= {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
|
||||
2: \u0041\u030A\u0064\u0327\u0307
|
||||
= {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D}{COMBINING CEDILLA}{COMBINING DOT ABOVE}
|
||||
3: \u0041\u030A\u1E0B\u0327
|
||||
= {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D WITH DOT ABOVE}{COMBINING CEDILLA}
|
||||
4: \u0041\u030A\u1E11\u0307
|
||||
= {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D WITH CEDILLA}{COMBINING DOT ABOVE}
|
||||
5: \u00C5\u0064\u0307\u0327
|
||||
= {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
|
||||
6: \u00C5\u0064\u0327\u0307
|
||||
= {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D}{COMBINING CEDILLA}{COMBINING DOT ABOVE}
|
||||
7: \u00C5\u1E0B\u0327
|
||||
= {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D WITH DOT ABOVE}{COMBINING CEDILLA}
|
||||
8: \u00C5\u1E11\u0307
|
||||
= {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D WITH CEDILLA}{COMBINING DOT ABOVE}
|
||||
9: \u212B\u0064\u0307\u0327
|
||||
= {ANGSTROM SIGN}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
|
||||
10: \u212B\u0064\u0327\u0307
|
||||
= {ANGSTROM SIGN}{LATIN SMALL LETTER D}{COMBINING CEDILLA}{COMBINING DOT ABOVE}
|
||||
11: \u212B\u1E0B\u0327
|
||||
= {ANGSTROM SIGN}{LATIN SMALL LETTER D WITH DOT ABOVE}{COMBINING CEDILLA}
|
||||
12: \u212B\u1E11\u0307
|
||||
= {ANGSTROM SIGN}{LATIN SMALL LETTER D WITH CEDILLA}{COMBINING DOT ABOVE}
|
||||
*<br>Note: the code is intended for use with small strings, and is not suitable for larger ones,
|
||||
* since it has not been optimized for that situation.
|
||||
*@author M. Davis
|
||||
*@draft
|
||||
*/
|
||||
#if 0
|
||||
static UBool PROGRESS = FALSE;
|
||||
|
||||
#include <stdio.h>
|
||||
#include "unicode/translit.h"
|
||||
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
|
||||
// Just for testing - remove, not thread safe.
|
||||
static const char* UToS(const UnicodeString &source) {
|
||||
static char buffer[256];
|
||||
buffer[source.extract(0, source.length(), buffer)] = 0;
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static const UnicodeString &Tr(const UnicodeString &source) {
|
||||
static Transliterator *NAME = Transliterator::createInstance("name", UTRANS_FORWARD, status);
|
||||
static UnicodeString result;
|
||||
result = source;
|
||||
NAME->transliterate(result);
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
// public
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
// TODO: add boilerplate methods.
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CanonicalIterator)
|
||||
|
||||
/**
|
||||
*@param source string to get results for
|
||||
*/
|
||||
CanonicalIterator::CanonicalIterator(const UnicodeString &sourceStr, UErrorCode &status) :
|
||||
pieces(NULL),
|
||||
pieces_length(0),
|
||||
pieces_lengths(NULL),
|
||||
current(NULL),
|
||||
current_length(0)
|
||||
{
|
||||
if(U_SUCCESS(status)) {
|
||||
setSource(sourceStr, status);
|
||||
}
|
||||
}
|
||||
|
||||
CanonicalIterator::~CanonicalIterator() {
|
||||
cleanPieces();
|
||||
}
|
||||
|
||||
void CanonicalIterator::cleanPieces() {
|
||||
int32_t i = 0;
|
||||
if(pieces != NULL) {
|
||||
for(i = 0; i < pieces_length; i++) {
|
||||
if(pieces[i] != NULL) {
|
||||
delete[] pieces[i];
|
||||
}
|
||||
}
|
||||
uprv_free(pieces);
|
||||
pieces = NULL;
|
||||
if(pieces_lengths != NULL) {
|
||||
uprv_free(pieces_lengths);
|
||||
}
|
||||
pieces_lengths = NULL;
|
||||
if(current != NULL) {
|
||||
uprv_free(current);
|
||||
}
|
||||
current = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*@return gets the source: NOTE: it is the NFD form of source
|
||||
*/
|
||||
UnicodeString CanonicalIterator::getSource() {
|
||||
return source;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the iterator so that one can start again from the beginning.
|
||||
*/
|
||||
void CanonicalIterator::reset() {
|
||||
done = FALSE;
|
||||
for (int i = 0; i < current_length; ++i) {
|
||||
current[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*@return the next string that is canonically equivalent. The value null is returned when
|
||||
* the iteration is done.
|
||||
*/
|
||||
UnicodeString CanonicalIterator::next() {
|
||||
int32_t i = 0;
|
||||
|
||||
if (done) {
|
||||
buffer.setToBogus();
|
||||
return buffer;
|
||||
}
|
||||
|
||||
// delete old contents
|
||||
buffer.remove();
|
||||
|
||||
// construct return value
|
||||
|
||||
for (i = 0; i < pieces_length; ++i) {
|
||||
buffer.append(pieces[i][current[i]]);
|
||||
}
|
||||
//String result = buffer.toString(); // not needed
|
||||
|
||||
// find next value for next time
|
||||
|
||||
for (i = current_length - 1; ; --i) {
|
||||
if (i < 0) {
|
||||
done = TRUE;
|
||||
break;
|
||||
}
|
||||
current[i]++;
|
||||
if (current[i] < pieces_lengths[i]) break; // got sequence
|
||||
current[i] = 0;
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
*@param set the source string to iterate against. This allows the same iterator to be used
|
||||
* while changing the source string, saving object creation.
|
||||
*/
|
||||
void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &status) {
|
||||
Normalizer::normalize(newSource, UNORM_NFD, 0, source, status);
|
||||
if(U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
done = FALSE;
|
||||
|
||||
cleanPieces();
|
||||
|
||||
// catch degenerate case
|
||||
if (newSource.length() == 0) {
|
||||
pieces_length = 1;
|
||||
pieces = (UnicodeString **)uprv_malloc(sizeof(UnicodeString *));
|
||||
/* test for NULL */
|
||||
if (pieces == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
current_length = 1;
|
||||
current = (int32_t*)uprv_malloc(1 * sizeof(int32_t));
|
||||
/* test for NULL */
|
||||
if (current == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
uprv_free(pieces);
|
||||
pieces = NULL;
|
||||
return;
|
||||
}
|
||||
current[0] = 0;
|
||||
pieces[0] = new UnicodeString[1];
|
||||
/* test for NULL */
|
||||
if (pieces[0] == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
uprv_free(pieces);
|
||||
pieces = NULL;
|
||||
uprv_free(current);
|
||||
return;
|
||||
}
|
||||
pieces[0][0] = UnicodeString("");
|
||||
pieces_lengths = (int32_t*)uprv_malloc(1 * sizeof(int32_t));
|
||||
/* test for NULL */
|
||||
if (pieces_lengths == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
uprv_free(pieces);
|
||||
pieces = NULL;
|
||||
uprv_free(current);
|
||||
return;
|
||||
}
|
||||
pieces_lengths[0] = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
UnicodeString *list = new UnicodeString[source.length()];
|
||||
/* test for NULL */
|
||||
if (list == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
|
||||
int32_t list_length = 0;
|
||||
UChar32 cp = 0;
|
||||
int32_t start = 0;
|
||||
// i should initialy be the number of code units at the
|
||||
// start of the string
|
||||
int32_t i = UTF16_CHAR_LENGTH(source.char32At(0));
|
||||
//int32_t i = 1;
|
||||
// find the segments
|
||||
// This code iterates through the source string and
|
||||
// extracts segments that end up on a codepoint that
|
||||
// doesn't start any decompositions. (Analysis is done
|
||||
// on the NFD form - see above).
|
||||
for (; i < source.length(); i += UTF16_CHAR_LENGTH(cp)) {
|
||||
cp = source.char32At(i);
|
||||
if (unorm_isCanonSafeStart(cp)) {
|
||||
source.extract(start, i-start, list[list_length++]); // add up to i
|
||||
start = i;
|
||||
}
|
||||
}
|
||||
source.extract(start, i-start, list[list_length++]); // add last one
|
||||
|
||||
|
||||
// allocate the arrays, and find the strings that are CE to each segment
|
||||
pieces = (UnicodeString **)uprv_malloc(list_length * sizeof(UnicodeString *));
|
||||
/* test for NULL */
|
||||
if (pieces == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
delete[] list;
|
||||
return;
|
||||
}
|
||||
pieces_length = list_length;
|
||||
pieces_lengths = (int32_t*)uprv_malloc(list_length * sizeof(int32_t));
|
||||
/* test for NULL */
|
||||
if (pieces_lengths == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
delete[] list;
|
||||
uprv_free(pieces);
|
||||
pieces = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
current_length = list_length;
|
||||
current = (int32_t*)uprv_malloc(list_length * sizeof(int32_t));
|
||||
/* test for NULL */
|
||||
if (current == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
delete[] list;
|
||||
uprv_free(pieces);
|
||||
pieces = NULL;
|
||||
uprv_free(pieces_lengths);
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < current_length; i++) {
|
||||
current[i] = 0;
|
||||
}
|
||||
// for each segment, get all the combinations that can produce
|
||||
// it after NFD normalization
|
||||
for (i = 0; i < pieces_length; ++i) {
|
||||
//if (PROGRESS) printf("SEGMENT\n");
|
||||
pieces[i] = getEquivalents(list[i], pieces_lengths[i], status);
|
||||
}
|
||||
|
||||
delete[] list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dumb recursive implementation of permutation.
|
||||
* TODO: optimize
|
||||
* @param source the string to find permutations for
|
||||
* @return the results in a set.
|
||||
*/
|
||||
void CanonicalIterator::permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status) {
|
||||
if(U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
//if (PROGRESS) printf("Permute: %s\n", UToS(Tr(source)));
|
||||
int32_t i = 0;
|
||||
|
||||
// optimization:
|
||||
// if zero or one character, just return a set with it
|
||||
// we check for length < 2 to keep from counting code points all the time
|
||||
if (source.length() <= 2 && source.countChar32() <= 1) {
|
||||
UnicodeString *toPut = new UnicodeString(source);
|
||||
/* test for NULL */
|
||||
if (toPut == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
result->put(source, toPut, status);
|
||||
return;
|
||||
}
|
||||
|
||||
// otherwise iterate through the string, and recursively permute all the other characters
|
||||
UChar32 cp;
|
||||
Hashtable *subpermute = new Hashtable(FALSE, status);
|
||||
/* test for NULL */
|
||||
if (subpermute == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
if (U_SUCCESS(status)) {
|
||||
subpermute->setValueDeleter(uhash_deleteUnicodeString);
|
||||
}
|
||||
|
||||
for (i = 0; i < source.length(); i += UTF16_CHAR_LENGTH(cp)) {
|
||||
cp = source.char32At(i);
|
||||
const UHashElement *ne = NULL;
|
||||
int32_t el = -1;
|
||||
UnicodeString subPermuteString = source;
|
||||
|
||||
// optimization:
|
||||
// if the character is canonical combining class zero,
|
||||
// don't permute it
|
||||
if (skipZeros && i != 0 && u_getCombiningClass(cp) == 0) {
|
||||
//System.out.println("Skipping " + Utility.hex(UTF16.valueOf(source, i)));
|
||||
continue;
|
||||
}
|
||||
|
||||
subpermute->removeAll();
|
||||
|
||||
// see what the permutations of the characters before and after this one are
|
||||
//Hashtable *subpermute = permute(source.substring(0,i) + source.substring(i + UTF16.getCharCount(cp)));
|
||||
permute(subPermuteString.replace(i, UTF16_CHAR_LENGTH(cp), NULL, 0), skipZeros, subpermute, status);
|
||||
/* Test for buffer overflows */
|
||||
if(U_FAILURE(status)) {
|
||||
delete subpermute;
|
||||
return;
|
||||
}
|
||||
// The upper replace is destructive. The question is do we have to make a copy, or we don't care about the contents
|
||||
// of source at this point.
|
||||
|
||||
// prefix this character to all of them
|
||||
ne = subpermute->nextElement(el);
|
||||
while (ne != NULL) {
|
||||
UnicodeString *permRes = (UnicodeString *)(ne->value.pointer);
|
||||
UnicodeString *chStr = new UnicodeString(cp);
|
||||
//test for NULL
|
||||
if (chStr == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
delete subpermute;
|
||||
return;
|
||||
}
|
||||
chStr->append(*permRes); //*((UnicodeString *)(ne->value.pointer));
|
||||
//if (PROGRESS) printf(" Piece: %s\n", UToS(*chStr));
|
||||
result->put(*chStr, chStr, status);
|
||||
ne = subpermute->nextElement(el);
|
||||
}
|
||||
}
|
||||
delete subpermute;
|
||||
//return result;
|
||||
}
|
||||
|
||||
// privates
|
||||
|
||||
// we have a segment, in NFD. Find all the strings that are canonically equivalent to it.
|
||||
UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, int32_t &result_len, UErrorCode &status) {
|
||||
//private String[] getEquivalents(String segment)
|
||||
|
||||
Hashtable *result = new Hashtable(FALSE, status);
|
||||
/* test for NULL */
|
||||
if (result == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return 0;
|
||||
}
|
||||
if (U_SUCCESS(status)) {
|
||||
result->setValueDeleter(uhash_deleteUnicodeString);
|
||||
}
|
||||
UChar USeg[256];
|
||||
int32_t segLen = segment.extract(USeg, 256, status);
|
||||
Hashtable *basic = getEquivalents2(USeg, segLen, status);
|
||||
//Hashtable *basic = getEquivalents2(segment, segLen, status);
|
||||
|
||||
// now get all the permutations
|
||||
// add only the ones that are canonically equivalent
|
||||
// TODO: optimize by not permuting any class zero.
|
||||
|
||||
Hashtable *permutations = new Hashtable(FALSE, status);
|
||||
/* test for NULL */
|
||||
if (permutations == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
delete result;
|
||||
delete basic;
|
||||
return 0;
|
||||
}
|
||||
if (U_SUCCESS(status)) {
|
||||
permutations->setValueDeleter(uhash_deleteUnicodeString);
|
||||
}
|
||||
|
||||
const UHashElement *ne = NULL;
|
||||
int32_t el = -1;
|
||||
//Iterator it = basic.iterator();
|
||||
ne = basic->nextElement(el);
|
||||
//while (it.hasNext())
|
||||
while (ne != NULL) {
|
||||
//String item = (String) it.next();
|
||||
UnicodeString item = *((UnicodeString *)(ne->value.pointer));
|
||||
|
||||
permutations->removeAll();
|
||||
permute(item, CANITER_SKIP_ZEROES, permutations, status);
|
||||
const UHashElement *ne2 = NULL;
|
||||
int32_t el2 = -1;
|
||||
//Iterator it2 = permutations.iterator();
|
||||
ne2 = permutations->nextElement(el2);
|
||||
//while (it2.hasNext())
|
||||
while (ne2 != NULL) {
|
||||
//String possible = (String) it2.next();
|
||||
//UnicodeString *possible = new UnicodeString(*((UnicodeString *)(ne2->value.pointer)));
|
||||
UnicodeString possible(*((UnicodeString *)(ne2->value.pointer)));
|
||||
UnicodeString attempt;
|
||||
Normalizer::normalize(possible, UNORM_NFD, 0, attempt, status);
|
||||
|
||||
// TODO: check if operator == is semanticaly the same as attempt.equals(segment)
|
||||
if (attempt==segment) {
|
||||
//if (PROGRESS) printf("Adding Permutation: %s\n", UToS(Tr(*possible)));
|
||||
// TODO: use the hashtable just to catch duplicates - store strings directly (somehow).
|
||||
result->put(possible, new UnicodeString(possible), status); //add(possible);
|
||||
} else {
|
||||
//if (PROGRESS) printf("-Skipping Permutation: %s\n", UToS(Tr(*possible)));
|
||||
}
|
||||
|
||||
ne2 = permutations->nextElement(el2);
|
||||
}
|
||||
ne = basic->nextElement(el);
|
||||
}
|
||||
|
||||
/* Test for buffer overflows */
|
||||
if(U_FAILURE(status)) {
|
||||
delete result;
|
||||
delete permutations;
|
||||
delete basic;
|
||||
return 0;
|
||||
}
|
||||
// convert into a String[] to clean up storage
|
||||
//String[] finalResult = new String[result.size()];
|
||||
UnicodeString *finalResult = NULL;
|
||||
int32_t resultCount;
|
||||
if((resultCount = result->count())) {
|
||||
finalResult = new UnicodeString[resultCount];
|
||||
} else {
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
}
|
||||
/* test for NULL */
|
||||
if (finalResult == 0) {
|
||||
if(U_SUCCESS(status)) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
}
|
||||
delete result;
|
||||
delete permutations;
|
||||
delete basic;
|
||||
return 0;
|
||||
}
|
||||
//result.toArray(finalResult);
|
||||
result_len = 0;
|
||||
el = -1;
|
||||
ne = result->nextElement(el);
|
||||
while(ne != NULL) {
|
||||
UnicodeString finResult = *((UnicodeString *)(ne->value.pointer));
|
||||
finalResult[result_len++] = finResult;
|
||||
ne = result->nextElement(el);
|
||||
}
|
||||
|
||||
|
||||
delete permutations;
|
||||
delete basic;
|
||||
delete result;
|
||||
return finalResult;
|
||||
}
|
||||
|
||||
Hashtable *CanonicalIterator::getEquivalents2(const UChar *segment, int32_t segLen, UErrorCode &status) {
|
||||
//Hashtable *CanonicalIterator::getEquivalents2(const UnicodeString &segment, int32_t segLen, UErrorCode &status) {
|
||||
|
||||
Hashtable *result = new Hashtable(FALSE, status);
|
||||
/* test for NULL */
|
||||
if (result == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return 0;
|
||||
}
|
||||
if (U_SUCCESS(status)) {
|
||||
result->setValueDeleter(uhash_deleteUnicodeString);
|
||||
}
|
||||
|
||||
//if (PROGRESS) printf("Adding: %s\n", UToS(Tr(segment)));
|
||||
|
||||
UnicodeString toPut(segment, segLen);
|
||||
|
||||
result->put(toPut, new UnicodeString(toPut), status);
|
||||
|
||||
USerializedSet starts;
|
||||
|
||||
// cycle through all the characters
|
||||
UChar32 cp, end = 0;
|
||||
int32_t i = 0, j;
|
||||
for (i = 0; i < segLen; i += UTF16_CHAR_LENGTH(cp)) {
|
||||
// see if any character is at the start of some decomposition
|
||||
UTF_GET_CHAR(segment, 0, i, segLen, cp);
|
||||
if (!unorm_getCanonStartSet(cp, &starts)) {
|
||||
continue;
|
||||
}
|
||||
// if so, see which decompositions match
|
||||
for(j = 0, cp = end+1; cp <= end || uset_getSerializedRange(&starts, j++, &cp, &end); ++cp) {
|
||||
//Hashtable *remainder = extract(cp, segment, segLen, i, status);
|
||||
Hashtable *remainder = extract(cp, segment, segLen, i, status);
|
||||
if (remainder == NULL) continue;
|
||||
|
||||
// there were some matches, so add all the possibilities to the set.
|
||||
UnicodeString prefix(segment, i);
|
||||
prefix += cp;
|
||||
|
||||
const UHashElement *ne = NULL;
|
||||
int32_t el = -1;
|
||||
ne = remainder->nextElement(el);
|
||||
while (ne != NULL) {
|
||||
UnicodeString item = *((UnicodeString *)(ne->value.pointer));
|
||||
UnicodeString *toAdd = new UnicodeString(prefix);
|
||||
/* test for NULL */
|
||||
if (toAdd == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
delete result;
|
||||
delete remainder;
|
||||
return 0;
|
||||
}
|
||||
*toAdd += item;
|
||||
result->put(*toAdd, toAdd, status);
|
||||
|
||||
//if (PROGRESS) printf("Adding: %s\n", UToS(Tr(*toAdd)));
|
||||
|
||||
ne = remainder->nextElement(el);
|
||||
}
|
||||
|
||||
delete remainder;
|
||||
}
|
||||
}
|
||||
|
||||
/* Test for buffer overflows */
|
||||
if(U_FAILURE(status)) {
|
||||
return 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* See if the decomposition of cp2 is at segment starting at segmentPos
|
||||
* (with canonical rearrangment!)
|
||||
* If so, take the remainder, and return the equivalents
|
||||
*/
|
||||
Hashtable *CanonicalIterator::extract(UChar32 comp, const UChar *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) {
|
||||
//Hashtable *CanonicalIterator::extract(UChar32 comp, const UnicodeString &segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) {
|
||||
//if (PROGRESS) printf(" extract: %s, ", UToS(Tr(UnicodeString(comp))));
|
||||
//if (PROGRESS) printf("%s, %i\n", UToS(Tr(segment)), segmentPos);
|
||||
|
||||
const int32_t bufSize = 256;
|
||||
int32_t bufLen = 0;
|
||||
UChar temp[bufSize];
|
||||
|
||||
const int32_t decompSize = 64;
|
||||
int32_t inputLen = 0;
|
||||
UChar decomp[decompSize];
|
||||
|
||||
U16_APPEND_UNSAFE(temp, inputLen, comp);
|
||||
int32_t decompLen = unorm_getDecomposition(comp, FALSE, decomp, decompSize);
|
||||
if(decompLen < 0) {
|
||||
decompLen = -decompLen;
|
||||
}
|
||||
|
||||
UChar *buff = temp+inputLen;
|
||||
|
||||
// See if it matches the start of segment (at segmentPos)
|
||||
UBool ok = FALSE;
|
||||
UChar32 cp;
|
||||
int32_t decompPos = 0;
|
||||
UChar32 decompCp;
|
||||
UTF_NEXT_CHAR(decomp, decompPos, decompLen, decompCp);
|
||||
|
||||
int32_t i;
|
||||
UBool overflow = FALSE;
|
||||
|
||||
i = segmentPos;
|
||||
while(i < segLen) {
|
||||
UTF_NEXT_CHAR(segment, i, segLen, cp);
|
||||
|
||||
if (cp == decompCp) { // if equal, eat another cp from decomp
|
||||
|
||||
//if (PROGRESS) printf(" matches: %s\n", UToS(Tr(UnicodeString(cp))));
|
||||
|
||||
if (decompPos == decompLen) { // done, have all decomp characters!
|
||||
//u_strcat(buff+bufLen, segment+i);
|
||||
uprv_memcpy(buff+bufLen, segment+i, (segLen-i)*sizeof(UChar));
|
||||
bufLen+=segLen-i;
|
||||
|
||||
ok = TRUE;
|
||||
break;
|
||||
}
|
||||
UTF_NEXT_CHAR(decomp, decompPos, decompLen, decompCp);
|
||||
} else {
|
||||
//if (PROGRESS) printf(" buffer: %s\n", UToS(Tr(UnicodeString(cp))));
|
||||
|
||||
// brute force approach
|
||||
|
||||
U16_APPEND(buff, bufLen, bufSize, cp, overflow);
|
||||
|
||||
if(overflow) {
|
||||
/*
|
||||
* ### TODO handle buffer overflow
|
||||
* The buffer is large, but an overflow may still happen with
|
||||
* unusual input (many combining marks?).
|
||||
* Reallocate buffer and continue.
|
||||
* markus 20020929
|
||||
*/
|
||||
|
||||
overflow = FALSE;
|
||||
}
|
||||
|
||||
/* TODO: optimize
|
||||
// since we know that the classes are monotonically increasing, after zero
|
||||
// e.g. 0 5 7 9 0 3
|
||||
// we can do an optimization
|
||||
// there are only a few cases that work: zero, less, same, greater
|
||||
// if both classes are the same, we fail
|
||||
// if the decomp class < the segment class, we fail
|
||||
|
||||
segClass = getClass(cp);
|
||||
if (decompClass <= segClass) return null;
|
||||
*/
|
||||
}
|
||||
}
|
||||
if (!ok) return NULL; // we failed, characters left over
|
||||
|
||||
//if (PROGRESS) printf("Matches\n");
|
||||
|
||||
if (bufLen == 0) {
|
||||
Hashtable *result = new Hashtable(FALSE, status);
|
||||
/* test for NULL */
|
||||
if (result == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return 0;
|
||||
}
|
||||
result->setValueDeleter(uhash_deleteUnicodeString);
|
||||
result->put(UnicodeString(), new UnicodeString(), status);
|
||||
return result; // succeed, but no remainder
|
||||
}
|
||||
|
||||
// brute force approach
|
||||
// check to make sure result is canonically equivalent
|
||||
int32_t tempLen = inputLen + bufLen;
|
||||
|
||||
UChar trial[bufSize];
|
||||
unorm_decompose(trial, bufSize, temp, tempLen, FALSE, 0, &status);
|
||||
|
||||
/* Test for buffer overflows */
|
||||
if(U_FAILURE(status)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(uprv_memcmp(segment+segmentPos, trial, (segLen - segmentPos)*sizeof(UChar)) != 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return getEquivalents2(buff, bufLen, status);
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif /* #if !UCONFIG_NO_NORMALIZATION */
|
90
extern/icu/source/common/chariter.cpp
vendored
90
extern/icu/source/common/chariter.cpp
vendored
@ -1,90 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 1999-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/chariter.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
ForwardCharacterIterator::~ForwardCharacterIterator() {}
|
||||
|
||||
|
||||
CharacterIterator::CharacterIterator()
|
||||
: textLength(0), pos(0), begin(0), end(0) {
|
||||
}
|
||||
|
||||
CharacterIterator::CharacterIterator(int32_t length)
|
||||
: textLength(length), pos(0), begin(0), end(length) {
|
||||
if(textLength < 0) {
|
||||
textLength = end = 0;
|
||||
}
|
||||
}
|
||||
|
||||
CharacterIterator::CharacterIterator(int32_t length, int32_t position)
|
||||
: textLength(length), pos(position), begin(0), end(length) {
|
||||
if(textLength < 0) {
|
||||
textLength = end = 0;
|
||||
}
|
||||
if(pos < 0) {
|
||||
pos = 0;
|
||||
} else if(pos > end) {
|
||||
pos = end;
|
||||
}
|
||||
}
|
||||
|
||||
CharacterIterator::CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position)
|
||||
: textLength(length), pos(position), begin(textBegin), end(textEnd) {
|
||||
if(textLength < 0) {
|
||||
textLength = 0;
|
||||
}
|
||||
if(begin < 0) {
|
||||
begin = 0;
|
||||
} else if(begin > textLength) {
|
||||
begin = textLength;
|
||||
}
|
||||
if(end < begin) {
|
||||
end = begin;
|
||||
} else if(end > textLength) {
|
||||
end = textLength;
|
||||
}
|
||||
if(pos < begin) {
|
||||
pos = begin;
|
||||
} else if(pos > end) {
|
||||
pos = end;
|
||||
}
|
||||
}
|
||||
|
||||
CharacterIterator::CharacterIterator(const CharacterIterator &that) :
|
||||
ForwardCharacterIterator(that),
|
||||
textLength(that.textLength), pos(that.pos), begin(that.begin), end(that.end)
|
||||
{
|
||||
}
|
||||
|
||||
CharacterIterator &
|
||||
CharacterIterator::operator=(const CharacterIterator &that) {
|
||||
ForwardCharacterIterator::operator=(that);
|
||||
textLength = that.textLength;
|
||||
pos = that.pos;
|
||||
begin = that.begin;
|
||||
end = that.end;
|
||||
return *this;
|
||||
}
|
||||
|
||||
// implementing first[32]PostInc() directly in a subclass should be faster
|
||||
// but these implementations make subclassing a little easier
|
||||
UChar
|
||||
CharacterIterator::firstPostInc(void) {
|
||||
setToStart();
|
||||
return nextPostInc();
|
||||
}
|
||||
|
||||
UChar32
|
||||
CharacterIterator::first32PostInc(void) {
|
||||
setToStart();
|
||||
return next32PostInc();
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
63
extern/icu/source/common/charstr.h
vendored
63
extern/icu/source/common/charstr.h
vendored
@ -1,63 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (c) 2001-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
* Date Name Description
|
||||
* 11/19/2001 aliu Creation.
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/uobject.h"
|
||||
#include "unicode/unistr.h"
|
||||
#include "cmemory.h"
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// class CharString
|
||||
//
|
||||
// This is a tiny wrapper class that is used internally to make a
|
||||
// UnicodeString look like a const char*. It can be allocated on the
|
||||
// stack. It only creates a heap buffer if it needs to.
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
class U_COMMON_API CharString : public UMemory {
|
||||
public:
|
||||
// Constructor
|
||||
// @param str The unicode string to be converted to char *
|
||||
// @param codepage The char * code page. "" for invariant conversion.
|
||||
// NULL for default code page.
|
||||
inline CharString(const UnicodeString& str, const char *codepage = "");
|
||||
inline ~CharString();
|
||||
inline operator const char*() const { return ptr; }
|
||||
|
||||
private:
|
||||
char buf[128];
|
||||
char* ptr;
|
||||
|
||||
CharString(const CharString &other); // forbid copying of this class
|
||||
CharString &operator=(const CharString &other); // forbid copying of this class
|
||||
};
|
||||
|
||||
inline CharString::CharString(const UnicodeString& str, const char *codepage) {
|
||||
int32_t len;
|
||||
ptr = buf;
|
||||
len = str.extract(0, 0x7FFFFFFF, buf ,sizeof(buf)-1, codepage);
|
||||
buf[sizeof(buf)-1] = 0; // extract does not add null if it thinks there is no space for it.
|
||||
if (len >= (int32_t)(sizeof(buf)-1)) {
|
||||
ptr = (char *)uprv_malloc(len+1);
|
||||
str.extract(0, 0x7FFFFFFF, ptr, len+1, codepage);
|
||||
}
|
||||
}
|
||||
|
||||
inline CharString::~CharString() {
|
||||
if (ptr != buf) {
|
||||
uprv_free(ptr);
|
||||
}
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
//eof
|
123
extern/icu/source/common/cmemory.c
vendored
123
extern/icu/source/common/cmemory.c
vendored
@ -1,123 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2002-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
* File cmemory.c ICU Heap allocation.
|
||||
* All ICU heap allocation, both for C and C++ new of ICU
|
||||
* class types, comes through these functions.
|
||||
*
|
||||
* If you have a need to replace ICU allocation, this is the
|
||||
* place to do it.
|
||||
*
|
||||
* Note that uprv_malloc(0) returns a non-NULL pointer, and
|
||||
* that a subsequent free of that pointer value is a NOP.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "cmemory.h"
|
||||
#include "unicode/uclean.h"
|
||||
|
||||
/* uprv_malloc(0) returns a pointer to this read-only data. */
|
||||
static const int32_t zeroMem[] = {0, 0, 0, 0, 0, 0};
|
||||
|
||||
/* Function Pointers for user-supplied heap functions */
|
||||
static const void *pContext;
|
||||
static UMemAllocFn *pAlloc;
|
||||
static UMemReallocFn *pRealloc;
|
||||
static UMemFreeFn *pFree;
|
||||
|
||||
/* Flag indicating whether any heap allocations have happened.
|
||||
* Used to prevent changing out the heap functions after allocations have been made */
|
||||
static UBool gHeapInUse;
|
||||
|
||||
U_CAPI void * U_EXPORT2
|
||||
uprv_malloc(size_t s) {
|
||||
if (s > 0) {
|
||||
gHeapInUse = TRUE;
|
||||
if (pAlloc) {
|
||||
return (*pAlloc)(pContext, s);
|
||||
} else {
|
||||
return malloc(s);
|
||||
}
|
||||
} else {
|
||||
return (void *)zeroMem;
|
||||
}
|
||||
}
|
||||
|
||||
U_CAPI void * U_EXPORT2
|
||||
uprv_realloc(void * buffer, size_t size) {
|
||||
if (buffer == zeroMem) {
|
||||
return uprv_malloc(size);
|
||||
} else if (size == 0) {
|
||||
if (pFree) {
|
||||
(*pFree)(pContext, buffer);
|
||||
} else {
|
||||
free(buffer);
|
||||
}
|
||||
return (void *)zeroMem;
|
||||
} else {
|
||||
gHeapInUse = TRUE;
|
||||
if (pRealloc) {
|
||||
return (*pRealloc)(pContext, buffer, size);
|
||||
} else {
|
||||
return realloc(buffer, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
U_CAPI void U_EXPORT2
|
||||
uprv_free(void *buffer) {
|
||||
if (buffer != zeroMem) {
|
||||
if (pFree) {
|
||||
(*pFree)(pContext, buffer);
|
||||
} else {
|
||||
free(buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
U_CAPI void U_EXPORT2
|
||||
u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMemFreeFn *f, UErrorCode *status)
|
||||
{
|
||||
if (U_FAILURE(*status)) {
|
||||
return;
|
||||
}
|
||||
if (a==NULL || r==NULL || f==NULL) {
|
||||
*status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return;
|
||||
}
|
||||
if (gHeapInUse) {
|
||||
*status = U_INVALID_STATE_ERROR;
|
||||
return;
|
||||
}
|
||||
pContext = context;
|
||||
pAlloc = a;
|
||||
pRealloc = r;
|
||||
pFree = f;
|
||||
}
|
||||
|
||||
|
||||
U_CFUNC UBool cmemory_cleanup(void) {
|
||||
pContext = NULL;
|
||||
pAlloc = NULL;
|
||||
pRealloc = NULL;
|
||||
pFree = NULL;
|
||||
gHeapInUse = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* gHeapInUse
|
||||
* Return True if ICU has allocated any memory.
|
||||
* Used by u_SetMutexFunctions() and similar to verify that ICU has not
|
||||
* been used, that it is in a pristine initial state.
|
||||
*/
|
||||
U_CFUNC UBool cmemory_inUse() {
|
||||
return gHeapInUse;
|
||||
}
|
||||
|
83
extern/icu/source/common/cmemory.h
vendored
83
extern/icu/source/common/cmemory.h
vendored
@ -1,83 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 1997-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
* File CMEMORY.H
|
||||
*
|
||||
* Contains stdlib.h/string.h memory functions
|
||||
*
|
||||
* @author Bertrand A. Damiba
|
||||
*
|
||||
* Modification History:
|
||||
*
|
||||
* Date Name Description
|
||||
* 6/20/98 Bertrand Created.
|
||||
* 05/03/99 stephen Changed from functions to macros.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef CMEMORY_H
|
||||
#define CMEMORY_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#define uprv_memcpy(dst, src, size) U_STANDARD_CPP_NAMESPACE memcpy(dst, src, size)
|
||||
#define uprv_memmove(dst, src, size) U_STANDARD_CPP_NAMESPACE memmove(dst, src, size)
|
||||
#define uprv_memset(buffer, mark, size) U_STANDARD_CPP_NAMESPACE memset(buffer, mark, size)
|
||||
#define uprv_memcmp(buffer1, buffer2, size) U_STANDARD_CPP_NAMESPACE memcmp(buffer1, buffer2,size)
|
||||
|
||||
U_CAPI void * U_EXPORT2
|
||||
uprv_malloc(size_t s);
|
||||
|
||||
U_CAPI void * U_EXPORT2
|
||||
uprv_realloc(void *mem, size_t size);
|
||||
|
||||
U_CAPI void U_EXPORT2
|
||||
uprv_free(void *mem);
|
||||
|
||||
/**
|
||||
* This should align the memory properly on any machine.
|
||||
* This is very useful for the safeClone functions.
|
||||
*/
|
||||
typedef union {
|
||||
long t1;
|
||||
double t2;
|
||||
void *t3;
|
||||
} UAlignedMemory;
|
||||
|
||||
/**
|
||||
* Get the amount of bytes that a pointer is off by from
|
||||
* the previous aligned pointer
|
||||
*/
|
||||
#define U_ALIGNMENT_OFFSET(ptr) (((size_t)ptr) & (sizeof(UAlignedMemory) - 1))
|
||||
|
||||
/**
|
||||
* Get the amount of bytes to add to a pointer
|
||||
* in order to get the next aligned address
|
||||
*/
|
||||
#define U_ALIGNMENT_OFFSET_UP(ptr) (sizeof(UAlignedMemory) - U_ALIGNMENT_OFFSET(ptr))
|
||||
|
||||
/**
|
||||
* Indicate whether the ICU allocation functions have been used.
|
||||
* This is used to determine whether ICU is in an initial, unused state.
|
||||
*/
|
||||
U_CFUNC UBool
|
||||
cmemory_inUse(void);
|
||||
|
||||
/**
|
||||
* Heap clean up function, called from u_cleanup()
|
||||
* Clears any user heap functions from u_setMemoryFunctions()
|
||||
* Does NOT deallocate any remaining allocated memory.
|
||||
*/
|
||||
U_CFUNC UBool
|
||||
cmemory_cleanup(void);
|
||||
|
||||
#endif
|
3715
extern/icu/source/common/common.dsp
vendored
3715
extern/icu/source/common/common.dsp
vendored
File diff suppressed because it is too large
Load Diff
108
extern/icu/source/common/common.rc
vendored
108
extern/icu/source/common/common.rc
vendored
@ -1,108 +0,0 @@
|
||||
// Do not edit with Microsoft Developer Studio Resource Editor.
|
||||
// It will permanently substitute version numbers that are intended to be
|
||||
// picked up by the pre-processor during each build.
|
||||
// Copyright (c) 2001-2003 International Business Machines
|
||||
// Corporation and others. All Rights Reserved.
|
||||
//
|
||||
#include "msvcres.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include <winresrc.h>
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
#pragma code_page(1252)
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"msvcres.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include <winresrc.h>\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
#define STR(s) #s
|
||||
#define CommaVersionString(a, b, c, d) STR(a) ", " STR(b) ", " STR(c) ", " STR(d) "\0"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM, U_ICU_VERSION_PATCHLEVEL_NUM, 0
|
||||
PRODUCTVERSION U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM, U_ICU_VERSION_PATCHLEVEL_NUM, 0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS VOS__WINDOWS32
|
||||
FILETYPE VFT_DLL
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "00000000"
|
||||
BEGIN
|
||||
VALUE "Comments", "http://oss.software.ibm.com/icu/\0"
|
||||
VALUE "CompanyName", "IBM Corporation and others\0"
|
||||
VALUE "FileDescription", "IBM ICU Common DLL\0"
|
||||
VALUE "FileVersion", CommaVersionString(U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM, U_ICU_VERSION_PATCHLEVEL_NUM, 0)
|
||||
VALUE "LegalCopyright", U_COPYRIGHT_STRING "\0"
|
||||
#ifdef _DEBUG
|
||||
VALUE "OriginalFilename", "icuuc" U_ICU_VERSION_SHORT "d.dll\0")
|
||||
#else
|
||||
VALUE "OriginalFilename", "icuuc" U_ICU_VERSION_SHORT ".dll\0")
|
||||
#endif
|
||||
VALUE "PrivateBuild", "\0"
|
||||
VALUE "ProductName", "International Components for Unicode\0"
|
||||
VALUE "ProductVersion", CommaVersionString(U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM, U_ICU_VERSION_PATCHLEVEL_NUM, 0)
|
||||
VALUE "SpecialBuild", "\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x000, 0000
|
||||
END
|
||||
END
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
916
extern/icu/source/common/common.vcproj
vendored
916
extern/icu/source/common/common.vcproj
vendored
@ -1,916 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject ProjectType="Visual C++" Version="7.10" Name="common" ProjectGUID="{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}" RootNamespace="common">
|
||||
<Platforms>
|
||||
<Platform Name="Win32" />
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration Name="Release|Win32" OutputDirectory=".\..\..\$(PlatformName)\$(ConfigurationName)\lib" ConfigurationType="2" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)">
|
||||
<Tool Name="VCPreBuildEventTool" />
|
||||
<Tool Name="VCCustomBuildTool" />
|
||||
<Tool Name="VCXMLDataGeneratorTool" />
|
||||
<Tool Name="VCWebServiceProxyGeneratorTool" />
|
||||
<Tool Name="VCMIDLTool" PreprocessorDefinitions="NDEBUG" MkTypLibCompatible="true" TargetEnvironment="1" />
|
||||
<Tool Name="VCCLCompilerTool" PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_USRDLL;U_COMMON_IMPLEMENTATION" EnableFunctionLevelLinking="false" DisableLanguageExtensions="true" WarningLevel="3" DebugInformationFormat="3" InlineFunctionExpansion="2" />
|
||||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLinkerTool" OutputFile="..\..\$(PlatformName)\$(ConfigurationName)\bin\icuuc30.dll" LinkIncremental="1" ProgramDatabaseFile="$(IntDir)/icuuc30.pdb" BaseAddress="0x4a800000" ImportLibrary="$(OutDir)\icuuc.lib" IgnoreDefaultLibraryNames="msvcrt.lib" />
|
||||
</Configuration>
|
||||
<Configuration Name="Debug|Win32" OutputDirectory=".\..\..\$(PlatformName)\$(ConfigurationName)\lib" ConfigurationType="2" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)">
|
||||
<Tool Name="VCPreBuildEventTool" />
|
||||
<Tool Name="VCCustomBuildTool" />
|
||||
<Tool Name="VCXMLDataGeneratorTool" />
|
||||
<Tool Name="VCWebServiceProxyGeneratorTool" />
|
||||
<Tool Name="VCMIDLTool" PreprocessorDefinitions="_DEBUG" MkTypLibCompatible="true" TargetEnvironment="1" />
|
||||
<Tool Name="VCCLCompilerTool" PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_USRDLL;U_COMMON_IMPLEMENTATION;RBBI_DEBUG" DebugInformationFormat="4" EnableFunctionLevelLinking="false" DisableLanguageExtensions="true" WarningLevel="3" Optimization="0" BasicRuntimeChecks="3" RuntimeLibrary="1" BrowseInformation="1" Detect64BitPortabilityProblems="true" />
|
||||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLinkerTool" OutputFile="..\..\$(PlatformName)\$(ConfigurationName)\bin\icuuc30d.dll" LinkIncremental="2" ProgramDatabaseFile="$(IntDir)/icuuc30d.pdb" BaseAddress="0x4a800000" ImportLibrary="$(OutDir)\icuucd.lib" GenerateDebugInformation="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCManifestTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
<Tool Name="VCFxCopTool" />
|
||||
<Tool Name="VCAppVerifierTool" />
|
||||
<Tool Name="VCWebDeploymentTool" />
|
||||
<Tool Name="VCPostBuildEventTool" />
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter Name="bidi">
|
||||
<File RelativePath=".\ubidi.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\ubidi.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ubidiimp.h">
|
||||
</File>
|
||||
<File RelativePath=".\ubidiln.c">
|
||||
</File>
|
||||
<File RelativePath=".\ubidiwrt.c">
|
||||
</File>
|
||||
<File RelativePath=".\ushape.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\ushape.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="break iteration">
|
||||
<File RelativePath=".\brkdict.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\brkdict.h">
|
||||
</File>
|
||||
<File RelativePath=".\brkiter.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\brkiter.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\dbbi.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\dbbi.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\dbbi_tbl.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\dbbi_tbl.h">
|
||||
</File>
|
||||
<File RelativePath=".\rbbi.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\rbbi.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\rbbidata.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\rbbidata.h">
|
||||
</File>
|
||||
<File RelativePath=".\rbbinode.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\rbbinode.h">
|
||||
</File>
|
||||
<File RelativePath=".\rbbirb.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\rbbirb.h">
|
||||
</File>
|
||||
<File RelativePath=".\rbbirpt.h">
|
||||
</File>
|
||||
<File RelativePath=".\rbbiscan.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\rbbiscan.h">
|
||||
</File>
|
||||
<File RelativePath=".\rbbisetb.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\rbbisetb.h">
|
||||
</File>
|
||||
<File RelativePath=".\rbbistbl.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\rbbitblb.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\rbbitblb.h">
|
||||
</File>
|
||||
<File RelativePath=".\ubrk.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\ubrk.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="collation">
|
||||
<File RelativePath=".\ucol_swp.c">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\i18n" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\i18n" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ucol_swp.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="collections">
|
||||
<File RelativePath=".\hash.h">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\strenum.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uarrsort.c">
|
||||
</File>
|
||||
<File RelativePath=".\uarrsort.h">
|
||||
</File>
|
||||
<File RelativePath=".\ucmp8.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucmp8.h">
|
||||
</File>
|
||||
<File RelativePath=".\uenum.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uenum.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uenumimp.h">
|
||||
</File>
|
||||
<File RelativePath=".\uhash.c">
|
||||
</File>
|
||||
<File RelativePath=".\uhash.h">
|
||||
</File>
|
||||
<File RelativePath=".\uhash_us.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\ustack.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\ustrenum.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\ustrenum.h">
|
||||
</File>
|
||||
<File RelativePath=".\utrie.c">
|
||||
</File>
|
||||
<File RelativePath=".\utrie.h">
|
||||
</File>
|
||||
<File RelativePath=".\uvector.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\uvector.h">
|
||||
</File>
|
||||
<File RelativePath=".\uvectr32.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\uvectr32.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="configuration">
|
||||
<File RelativePath=".\common.rc">
|
||||
</File>
|
||||
<File RelativePath=".\cpputils.h">
|
||||
</File>
|
||||
<File RelativePath=".\filestrm.c">
|
||||
</File>
|
||||
<File RelativePath=".\filestrm.h">
|
||||
</File>
|
||||
<File RelativePath=".\locmap.c">
|
||||
</File>
|
||||
<File RelativePath=".\locmap.h">
|
||||
</File>
|
||||
<File RelativePath=".\mutex.h">
|
||||
</File>
|
||||
<File RelativePath=".\putil.c">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCLCompilerTool" DisableLanguageExtensions="false" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCLCompilerTool" DisableLanguageExtensions="false" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\putil.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\pwin32.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uassert.h">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uconfig.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\udeprctd.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\udraft.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\umachine.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\umemstrm.c">
|
||||
</File>
|
||||
<File RelativePath=".\umemstrm.h">
|
||||
</File>
|
||||
<File RelativePath=".\umutex.c">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCLCompilerTool" DisableLanguageExtensions="false" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCLCompilerTool" DisableLanguageExtensions="false" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\umutex.h">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uobslete.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\urename.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\utrace.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\utrace.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\utracimp.h">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\utypes.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uversion.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="conversion">
|
||||
<File RelativePath=".\ucnv.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\ucnv.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ucnv2022.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_bld.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_bld.h">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_cb.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\ucnv_cb.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_cnv.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_cnv.h">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_err.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\ucnv_err.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_ext.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_ext.h">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_imp.h">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_io.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_io.h">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_lmb.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_u16.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_u32.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_u7.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnv_u8.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnvbocu.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnvhz.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnvisci.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnvlat1.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnvmbcs.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucnvmbcs.h">
|
||||
</File>
|
||||
<File RelativePath=".\ucnvscsu.c">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="data & memory">
|
||||
<File RelativePath=".\cmemory.c">
|
||||
</File>
|
||||
<File RelativePath=".\cmemory.h">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uclean.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ucln.h">
|
||||
</File>
|
||||
<File RelativePath=".\ucln_cmn.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucln_cmn.h">
|
||||
</File>
|
||||
<File RelativePath=".\ucmndata.c">
|
||||
</File>
|
||||
<File RelativePath=".\ucmndata.h">
|
||||
</File>
|
||||
<File RelativePath=".\udata.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\udata.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\udatamem.c">
|
||||
</File>
|
||||
<File RelativePath=".\udatamem.h">
|
||||
</File>
|
||||
<File RelativePath=".\udataswp.c">
|
||||
</File>
|
||||
<File RelativePath=".\udataswp.h">
|
||||
</File>
|
||||
<File RelativePath=".\umapfile.c">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCLCompilerTool" DisableLanguageExtensions="false" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCLCompilerTool" DisableLanguageExtensions="false" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\umapfile.h">
|
||||
</File>
|
||||
<File RelativePath=".\uobject.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uobject.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="formatting">
|
||||
<File RelativePath=".\unicode\parseerr.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\parsepos.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\parsepos.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\umisc.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ustrfmt.c">
|
||||
</File>
|
||||
<File RelativePath=".\ustrfmt.h">
|
||||
</File>
|
||||
<File RelativePath=".\util.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\util.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="idna" Filter="*.c,*.h">
|
||||
<File RelativePath=".\punycode.c">
|
||||
</File>
|
||||
<File RelativePath=".\punycode.h">
|
||||
</File>
|
||||
<File RelativePath=".\uidna.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uidna.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="locales & resources">
|
||||
<File RelativePath=".\locbased.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\locbased.h">
|
||||
</File>
|
||||
<File RelativePath=".\locid.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\locid.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\resbund.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\resbund.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ucat.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\ucat.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uloc.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uloc.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ulocimp.h">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\ures.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uresbund.c">
|
||||
</File>
|
||||
<File RelativePath=".\uresdata.c">
|
||||
</File>
|
||||
<File RelativePath=".\uresdata.h">
|
||||
</File>
|
||||
<File RelativePath=".\uresimp.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="normalization">
|
||||
<File RelativePath=".\caniter.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\caniter.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\normlzr.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\normlzr.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unorm.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\unorm.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unorm_it.c">
|
||||
</File>
|
||||
<File RelativePath=".\unorm_it.h">
|
||||
</File>
|
||||
<File RelativePath=".\unormimp.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="properties & sets">
|
||||
<File RelativePath=".\propname.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\propname.h">
|
||||
</File>
|
||||
<File RelativePath=".\ruleiter.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\ruleiter.h">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\symtable.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uchar.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uchar.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unames.c">
|
||||
</File>
|
||||
<File RelativePath=".\unifilt.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\unifilt.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unifunct.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\unifunct.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\unimatch.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uniset.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uniset.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uprops.c">
|
||||
</File>
|
||||
<File RelativePath=".\uprops.h">
|
||||
</File>
|
||||
<File RelativePath=".\usc_impl.c">
|
||||
</File>
|
||||
<File RelativePath=".\usc_impl.h">
|
||||
</File>
|
||||
<File RelativePath=".\uscript.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uscript.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uset.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uset.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\usetiter.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\usetiter.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="registration">
|
||||
<File RelativePath=".\iculserv.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\iculserv.h">
|
||||
</File>
|
||||
<File RelativePath=".\icunotif.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\icunotif.h">
|
||||
</File>
|
||||
<File RelativePath=".\icuserv.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\icuserv.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="sprep">
|
||||
<File RelativePath=".\sprpimpl.h">
|
||||
</File>
|
||||
<File RelativePath=".\usprep.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\usprep.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter Name="strings">
|
||||
<File RelativePath=".\chariter.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\chariter.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\charstr.h">
|
||||
</File>
|
||||
<File RelativePath=".\cstring.c">
|
||||
</File>
|
||||
<File RelativePath=".\cstring.h">
|
||||
</File>
|
||||
<File RelativePath=".\cwchar.c">
|
||||
</File>
|
||||
<File RelativePath=".\cwchar.h">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\rep.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\schriter.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\schriter.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uchriter.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uchriter.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\uiter.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\uiter.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unistr.cpp">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\unistr.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\urep.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ustr_imp.h">
|
||||
</File>
|
||||
<File RelativePath=".\ustrcase.c">
|
||||
</File>
|
||||
<File RelativePath=".\ustring.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\ustring.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\ustrtrns.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\utf.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\utf16.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\utf32.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\unicode\utf8.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath=".\utf_impl.c">
|
||||
</File>
|
||||
<File RelativePath=".\unicode\utf_old.h">
|
||||
<FileConfiguration Name="Release|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Debug|Win32">
|
||||
<Tool Name="VCCustomBuildTool" CommandLine="copy "$(InputPath)" ..\..\include\unicode
" Outputs="..\..\include\unicode\$(InputFileName)" />
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
1241
extern/icu/source/common/common_10.vcxproj
vendored
1241
extern/icu/source/common/common_10.vcxproj
vendored
File diff suppressed because it is too large
Load Diff
740
extern/icu/source/common/common_10.vcxproj.filters
vendored
740
extern/icu/source/common/common_10.vcxproj.filters
vendored
@ -1,740 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="bidi">
|
||||
<UniqueIdentifier>{9bdc3023-209a-4c57-9c73-863dce72cdd9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="break iteration">
|
||||
<UniqueIdentifier>{99f18fbf-70f9-480f-9609-45710f59465c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="collation">
|
||||
<UniqueIdentifier>{003448f9-05ea-43af-a8bc-2668dffc6716}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="collections">
|
||||
<UniqueIdentifier>{41d047b1-d8ba-4bf3-b9aa-c68762e5013f}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="configuration">
|
||||
<UniqueIdentifier>{b2ee93d4-abbb-4883-b12f-e38e1813f355}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="conversion">
|
||||
<UniqueIdentifier>{60c1857d-2b26-468c-9e8f-c9c3b5267412}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="data & memory">
|
||||
<UniqueIdentifier>{6fec7496-19c9-4cce-bccc-c49c9391135b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="formatting">
|
||||
<UniqueIdentifier>{c7c5b5fe-61d9-49f4-a206-b24fe406c75b}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="idna">
|
||||
<UniqueIdentifier>{0abadb73-322e-4e86-80df-9a0c44b3c91c}</UniqueIdentifier>
|
||||
<Extensions>*.c,*.h</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="locales & resources">
|
||||
<UniqueIdentifier>{b6772f43-da7c-4cab-ad67-df1fb9a40882}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="normalization">
|
||||
<UniqueIdentifier>{4b4c914a-fcf6-44ba-a0bc-f07092cf7190}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="properties & sets">
|
||||
<UniqueIdentifier>{f624b3d5-3cb1-4b85-adae-c4d42337cb55}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="registration">
|
||||
<UniqueIdentifier>{69077170-ea7d-4945-a10d-5197a0847878}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="sprep">
|
||||
<UniqueIdentifier>{d37fa053-213a-4b87-9a51-0a2f26acfe15}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="strings">
|
||||
<UniqueIdentifier>{e8619ef0-99f8-405d-bd66-3aef53fd9284}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="ubidi.c">
|
||||
<Filter>bidi</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ubidiln.c">
|
||||
<Filter>bidi</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ubidiwrt.c">
|
||||
<Filter>bidi</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ushape.c">
|
||||
<Filter>bidi</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="brkdict.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="brkiter.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="dbbi.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="dbbi_tbl.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rbbi.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rbbidata.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rbbinode.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rbbirb.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rbbiscan.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rbbisetb.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rbbistbl.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rbbitblb.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ubrk.cpp">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucol_swp.c">
|
||||
<Filter>collation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uarrsort.c">
|
||||
<Filter>collections</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucmp8.c">
|
||||
<Filter>collections</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uenum.c">
|
||||
<Filter>collections</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uhash.c">
|
||||
<Filter>collections</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uhash_us.cpp">
|
||||
<Filter>collections</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ustack.cpp">
|
||||
<Filter>collections</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ustrenum.cpp">
|
||||
<Filter>collections</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="utrie.c">
|
||||
<Filter>collections</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uvector.cpp">
|
||||
<Filter>collections</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uvectr32.cpp">
|
||||
<Filter>collections</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="filestrm.c">
|
||||
<Filter>configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="locmap.c">
|
||||
<Filter>configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="putil.c">
|
||||
<Filter>configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="umemstrm.c">
|
||||
<Filter>configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="umutex.c">
|
||||
<Filter>configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="utrace.c">
|
||||
<Filter>configuration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv2022.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_bld.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_cb.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_cnv.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_err.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_ext.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_io.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_lmb.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_u16.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_u32.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_u7.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnv_u8.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnvbocu.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnvhz.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnvisci.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnvlat1.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnvmbcs.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucnvscsu.c">
|
||||
<Filter>conversion</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="cmemory.c">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucln_cmn.c">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucmndata.c">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="udata.c">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="udatamem.c">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="udataswp.c">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="umapfile.c">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uobject.cpp">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="parsepos.cpp">
|
||||
<Filter>formatting</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ustrfmt.c">
|
||||
<Filter>formatting</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="util.cpp">
|
||||
<Filter>formatting</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="punycode.c">
|
||||
<Filter>idna</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uidna.cpp">
|
||||
<Filter>idna</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="locbased.cpp">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="locid.cpp">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="resbund.cpp">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ucat.c">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uloc.c">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uresbund.c">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uresdata.c">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="caniter.cpp">
|
||||
<Filter>normalization</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="normlzr.cpp">
|
||||
<Filter>normalization</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="unorm.cpp">
|
||||
<Filter>normalization</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="unorm_it.c">
|
||||
<Filter>normalization</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="propname.cpp">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ruleiter.cpp">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uchar.c">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="unames.c">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="unifilt.cpp">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="unifunct.cpp">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uniset.cpp">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uprops.c">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="usc_impl.c">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uscript.c">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uset.cpp">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="usetiter.cpp">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="iculserv.cpp">
|
||||
<Filter>registration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="icunotif.cpp">
|
||||
<Filter>registration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="icuserv.cpp">
|
||||
<Filter>registration</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="usprep.cpp">
|
||||
<Filter>sprep</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="chariter.cpp">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="cstring.c">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="cwchar.c">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="schriter.cpp">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uchriter.cpp">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="uiter.cpp">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="unistr.cpp">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ustrcase.c">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ustring.c">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ustrtrns.c">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="utf_impl.c">
|
||||
<Filter>strings</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="ubidiimp.h">
|
||||
<Filter>bidi</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="brkdict.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="dbbi_tbl.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="rbbidata.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="rbbinode.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="rbbirb.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="rbbirpt.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="rbbiscan.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="rbbisetb.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="rbbitblb.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucol_swp.h">
|
||||
<Filter>collation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="hash.h">
|
||||
<Filter>collections</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="uarrsort.h">
|
||||
<Filter>collections</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucmp8.h">
|
||||
<Filter>collections</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="uenumimp.h">
|
||||
<Filter>collections</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="uhash.h">
|
||||
<Filter>collections</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ustrenum.h">
|
||||
<Filter>collections</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="utrie.h">
|
||||
<Filter>collections</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="uvector.h">
|
||||
<Filter>collections</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="uvectr32.h">
|
||||
<Filter>collections</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="cpputils.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="filestrm.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="locmap.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mutex.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="uassert.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="umemstrm.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="umutex.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="utracimp.h">
|
||||
<Filter>configuration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucnv_bld.h">
|
||||
<Filter>conversion</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucnv_cnv.h">
|
||||
<Filter>conversion</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucnv_ext.h">
|
||||
<Filter>conversion</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucnv_imp.h">
|
||||
<Filter>conversion</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucnv_io.h">
|
||||
<Filter>conversion</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucnvmbcs.h">
|
||||
<Filter>conversion</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="cmemory.h">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucln.h">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucln_cmn.h">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ucmndata.h">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="udatamem.h">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="udataswp.h">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="umapfile.h">
|
||||
<Filter>data & memory</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ustrfmt.h">
|
||||
<Filter>formatting</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="util.h">
|
||||
<Filter>formatting</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="punycode.h">
|
||||
<Filter>idna</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="locbased.h">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ulocimp.h">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="uresdata.h">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="uresimp.h">
|
||||
<Filter>locales & resources</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="unorm_it.h">
|
||||
<Filter>normalization</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="unormimp.h">
|
||||
<Filter>normalization</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="propname.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ruleiter.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="uprops.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="usc_impl.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="iculserv.h">
|
||||
<Filter>registration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="icunotif.h">
|
||||
<Filter>registration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="icuserv.h">
|
||||
<Filter>registration</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="sprpimpl.h">
|
||||
<Filter>sprep</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="charstr.h">
|
||||
<Filter>strings</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="cstring.h">
|
||||
<Filter>strings</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="cwchar.h">
|
||||
<Filter>strings</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ustr_imp.h">
|
||||
<Filter>strings</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="common.rc">
|
||||
<Filter>configuration</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="unicode\ubidi.h">
|
||||
<Filter>bidi</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\ushape.h">
|
||||
<Filter>bidi</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\brkiter.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\dbbi.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\rbbi.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\ubrk.h">
|
||||
<Filter>break iteration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\strenum.h">
|
||||
<Filter>collections</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uenum.h">
|
||||
<Filter>collections</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\putil.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\pwin32.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uconfig.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\udeprctd.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\udraft.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\umachine.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uobslete.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\urename.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\utrace.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\utypes.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uversion.h">
|
||||
<Filter>configuration</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\ucnv.h">
|
||||
<Filter>conversion</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\ucnv_cb.h">
|
||||
<Filter>conversion</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\ucnv_err.h">
|
||||
<Filter>conversion</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uclean.h">
|
||||
<Filter>data & memory</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\udata.h">
|
||||
<Filter>data & memory</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uobject.h">
|
||||
<Filter>data & memory</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\parseerr.h">
|
||||
<Filter>formatting</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\parsepos.h">
|
||||
<Filter>formatting</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\umisc.h">
|
||||
<Filter>formatting</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uidna.h">
|
||||
<Filter>idna</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\locid.h">
|
||||
<Filter>locales & resources</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\resbund.h">
|
||||
<Filter>locales & resources</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\ucat.h">
|
||||
<Filter>locales & resources</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uloc.h">
|
||||
<Filter>locales & resources</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\ures.h">
|
||||
<Filter>locales & resources</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\caniter.h">
|
||||
<Filter>normalization</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\normlzr.h">
|
||||
<Filter>normalization</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\unorm.h">
|
||||
<Filter>normalization</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\symtable.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uchar.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\unifilt.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\unifunct.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\unimatch.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uniset.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uscript.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uset.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\usetiter.h">
|
||||
<Filter>properties & sets</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\usprep.h">
|
||||
<Filter>sprep</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\chariter.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\rep.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\schriter.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uchriter.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\uiter.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\unistr.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\urep.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\ustring.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\utf.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\utf16.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\utf32.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\utf8.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="unicode\utf_old.h">
|
||||
<Filter>strings</Filter>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
</Project>
|
3551
extern/icu/source/common/common_8.vcproj
vendored
3551
extern/icu/source/common/common_8.vcproj
vendored
File diff suppressed because it is too large
Load Diff
3584
extern/icu/source/common/common_9.vcproj
vendored
3584
extern/icu/source/common/common_9.vcproj
vendored
File diff suppressed because it is too large
Load Diff
66
extern/icu/source/common/cpputils.h
vendored
66
extern/icu/source/common/cpputils.h
vendored
@ -1,66 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 1997-2001, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
* file name: cpputils.h
|
||||
* encoding: US-ASCII
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*/
|
||||
|
||||
#ifndef CPPUTILS_H
|
||||
#define CPPUTILS_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "cmemory.h"
|
||||
|
||||
/*==========================================================================*/
|
||||
/* Array copy utility functions */
|
||||
/*==========================================================================*/
|
||||
|
||||
static
|
||||
inline void uprv_arrayCopy(const double* src, double* dst, int32_t count)
|
||||
{ uprv_memcpy(dst, src, (size_t)(count * sizeof(*src))); }
|
||||
|
||||
static
|
||||
inline void uprv_arrayCopy(const double* src, int32_t srcStart,
|
||||
double* dst, int32_t dstStart, int32_t count)
|
||||
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); }
|
||||
|
||||
static
|
||||
inline void uprv_arrayCopy(const int8_t* src, int8_t* dst, int32_t count)
|
||||
{ uprv_memcpy(dst, src, (size_t)(count * sizeof(*src))); }
|
||||
|
||||
static
|
||||
inline void uprv_arrayCopy(const int8_t* src, int32_t srcStart,
|
||||
int8_t* dst, int32_t dstStart, int32_t count)
|
||||
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); }
|
||||
|
||||
static
|
||||
inline void uprv_arrayCopy(const int16_t* src, int16_t* dst, int32_t count)
|
||||
{ uprv_memcpy(dst, src, (size_t)(count * sizeof(*src))); }
|
||||
|
||||
static
|
||||
inline void uprv_arrayCopy(const int16_t* src, int32_t srcStart,
|
||||
int16_t* dst, int32_t dstStart, int32_t count)
|
||||
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); }
|
||||
|
||||
static
|
||||
inline void uprv_arrayCopy(const int32_t* src, int32_t* dst, int32_t count)
|
||||
{ uprv_memcpy(dst, src, (size_t)(count * sizeof(*src))); }
|
||||
|
||||
static
|
||||
inline void uprv_arrayCopy(const int32_t* src, int32_t srcStart,
|
||||
int32_t* dst, int32_t dstStart, int32_t count)
|
||||
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); }
|
||||
|
||||
static
|
||||
inline void
|
||||
uprv_arrayCopy(const UChar *src, int32_t srcStart,
|
||||
UChar *dst, int32_t dstStart, int32_t count)
|
||||
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)(count * sizeof(*src))); }
|
||||
|
||||
#endif /* _CPPUTILS */
|
310
extern/icu/source/common/cstring.c
vendored
310
extern/icu/source/common/cstring.c
vendored
@ -1,310 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 1997-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
* File CSTRING.C
|
||||
*
|
||||
* @author Helena Shih
|
||||
*
|
||||
* Modification History:
|
||||
*
|
||||
* Date Name Description
|
||||
* 6/18/98 hshih Created
|
||||
* 09/08/98 stephen Added include for ctype, for Mac Port
|
||||
* 11/15/99 helena Integrated S/390 IEEE changes.
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "unicode/utypes.h"
|
||||
#include "cmemory.h"
|
||||
#include "cstring.h"
|
||||
#include "uassert.h"
|
||||
|
||||
/*
|
||||
* We hardcode case conversion for invariant characters to match our expectation
|
||||
* and the compiler execution charset.
|
||||
* This prevents problems on systems
|
||||
* - with non-default casing behavior, like Turkish system locales where
|
||||
* tolower('I') maps to dotless i and toupper('i') maps to dotted I
|
||||
* - where there are no lowercase Latin characters at all, or using different
|
||||
* codes (some old EBCDIC codepages)
|
||||
*
|
||||
* This works because the compiler usually runs on a platform where the execution
|
||||
* charset includes all of the invariant characters at their expected
|
||||
* code positions, so that the char * string literals in ICU code match
|
||||
* the char literals here.
|
||||
*
|
||||
* Note that the set of lowercase Latin letters is discontiguous in EBCDIC
|
||||
* and the set of uppercase Latin letters is discontiguous as well.
|
||||
*/
|
||||
|
||||
U_CAPI char U_EXPORT2
|
||||
uprv_toupper(char c) {
|
||||
#if U_CHARSET_FAMILY==U_EBCDIC_FAMILY
|
||||
if(('a'<=c && c<='i') || ('j'<=c && c<='r') || ('s'<=c && c<='z')) {
|
||||
c=(char)(c+('A'-'a'));
|
||||
}
|
||||
#else
|
||||
if('a'<=c && c<='z') {
|
||||
c=(char)(c+('A'-'a'));
|
||||
}
|
||||
#endif
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* Commented out because cstring.h defines uprv_tolower() to be
|
||||
* the same as either uprv_asciitolower() or uprv_ebcdictolower()
|
||||
* to reduce the amount of code to cover with tests.
|
||||
*
|
||||
* Note that this uprv_tolower() definition is likely to work for most
|
||||
* charset families, not just ASCII and EBCDIC, because its #else branch
|
||||
* is written generically.
|
||||
*/
|
||||
U_CAPI char U_EXPORT2
|
||||
uprv_tolower(char c) {
|
||||
#if U_CHARSET_FAMILY==U_EBCDIC_FAMILY
|
||||
if(('A'<=c && c<='I') || ('J'<=c && c<='R') || ('S'<=c && c<='Z')) {
|
||||
c=(char)(c+('a'-'A'));
|
||||
}
|
||||
#else
|
||||
if('A'<=c && c<='Z') {
|
||||
c=(char)(c+('a'-'A'));
|
||||
}
|
||||
#endif
|
||||
return c;
|
||||
}
|
||||
#endif
|
||||
|
||||
U_CAPI char U_EXPORT2
|
||||
uprv_asciitolower(char c) {
|
||||
if(0x41<=c && c<=0x5a) {
|
||||
c=(char)(c+0x20);
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
U_CAPI char U_EXPORT2
|
||||
uprv_ebcdictolower(char c) {
|
||||
if( (0xc1<=(uint8_t)c && (uint8_t)c<=0xc9) ||
|
||||
(0xd1<=(uint8_t)c && (uint8_t)c<=0xd9) ||
|
||||
(0xe2<=(uint8_t)c && (uint8_t)c<=0xe9)
|
||||
) {
|
||||
c=(char)(c-0x40);
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
U_CAPI char* U_EXPORT2
|
||||
T_CString_toLowerCase(char* str)
|
||||
{
|
||||
char* origPtr = str;
|
||||
|
||||
if (str) {
|
||||
do
|
||||
*str = (char)uprv_tolower(*str);
|
||||
while (*(str++));
|
||||
}
|
||||
|
||||
return origPtr;
|
||||
}
|
||||
|
||||
U_CAPI char* U_EXPORT2
|
||||
T_CString_toUpperCase(char* str)
|
||||
{
|
||||
char* origPtr = str;
|
||||
|
||||
if (str) {
|
||||
do
|
||||
*str = (char)uprv_toupper(*str);
|
||||
while (*(str++));
|
||||
}
|
||||
|
||||
return origPtr;
|
||||
}
|
||||
|
||||
/*
|
||||
* Takes a int32_t and fills in a char* string with that number "radix"-based.
|
||||
* Does not handle negative values (makes an empty string for them).
|
||||
* Writes at most 12 chars ("-2147483647" plus NUL).
|
||||
* Returns the length of the string (not including the NUL).
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_CString_integerToString(char* buffer, int32_t v, int32_t radix)
|
||||
{
|
||||
char tbuf[30];
|
||||
int32_t tbx = sizeof(tbuf);
|
||||
uint8_t digit;
|
||||
int32_t length = 0;
|
||||
uint32_t uval;
|
||||
|
||||
U_ASSERT(radix>=2 && radix<=16);
|
||||
uval = (uint32_t) v;
|
||||
if(v<0 && radix == 10) {
|
||||
/* Only in base 10 do we conside numbers to be signed. */
|
||||
uval = (uint32_t)(-v);
|
||||
buffer[length++] = '-';
|
||||
}
|
||||
|
||||
tbx = sizeof(tbuf)-1;
|
||||
tbuf[tbx] = 0; /* We are generating the digits backwards. Null term the end. */
|
||||
do {
|
||||
digit = (uint8_t)(uval % radix);
|
||||
tbuf[--tbx] = (char)(T_CString_itosOffset(digit));
|
||||
uval = uval / radix;
|
||||
} while (uval != 0);
|
||||
|
||||
/* copy converted number into user buffer */
|
||||
uprv_strcpy(buffer+length, tbuf+tbx);
|
||||
length += sizeof(tbuf) - tbx -1;
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Takes a int64_t and fills in a char* string with that number "radix"-based.
|
||||
* Writes at most 21: chars ("-9223372036854775807" plus NUL).
|
||||
* Returns the length of the string, not including the terminating NULL.
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_CString_int64ToString(char* buffer, int64_t v, uint32_t radix)
|
||||
{
|
||||
char tbuf[30];
|
||||
int32_t tbx = sizeof(tbuf);
|
||||
uint8_t digit;
|
||||
int32_t length = 0;
|
||||
uint64_t uval;
|
||||
|
||||
U_ASSERT(radix>=2 && radix<=16);
|
||||
uval = (uint64_t) v;
|
||||
if(v<0 && radix == 10) {
|
||||
/* Only in base 10 do we conside numbers to be signed. */
|
||||
uval = (uint64_t)(-v);
|
||||
buffer[length++] = '-';
|
||||
}
|
||||
|
||||
tbx = sizeof(tbuf)-1;
|
||||
tbuf[tbx] = 0; /* We are generating the digits backwards. Null term the end. */
|
||||
do {
|
||||
digit = (uint8_t)(uval % radix);
|
||||
tbuf[--tbx] = (char)(T_CString_itosOffset(digit));
|
||||
uval = uval / radix;
|
||||
} while (uval != 0);
|
||||
|
||||
/* copy converted number into user buffer */
|
||||
uprv_strcpy(buffer+length, tbuf+tbx);
|
||||
length += sizeof(tbuf) - tbx -1;
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_CString_stringToInteger(const char *integerString, int32_t radix)
|
||||
{
|
||||
char *end;
|
||||
return uprv_strtoul(integerString, &end, radix);
|
||||
|
||||
}
|
||||
|
||||
U_CAPI int U_EXPORT2
|
||||
T_CString_stricmp(const char *str1, const char *str2) {
|
||||
if(str1==NULL) {
|
||||
if(str2==NULL) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
} else if(str2==NULL) {
|
||||
return 1;
|
||||
} else {
|
||||
/* compare non-NULL strings lexically with lowercase */
|
||||
int rc;
|
||||
unsigned char c1, c2;
|
||||
|
||||
for(;;) {
|
||||
c1=(unsigned char)*str1;
|
||||
c2=(unsigned char)*str2;
|
||||
if(c1==0) {
|
||||
if(c2==0) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
} else if(c2==0) {
|
||||
return 1;
|
||||
} else {
|
||||
/* compare non-zero characters with lowercase */
|
||||
rc=(int)(unsigned char)uprv_tolower(c1)-(int)(unsigned char)uprv_tolower(c2);
|
||||
if(rc!=0) {
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
++str1;
|
||||
++str2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
U_CAPI int U_EXPORT2
|
||||
T_CString_strnicmp(const char *str1, const char *str2, uint32_t n) {
|
||||
if(str1==NULL) {
|
||||
if(str2==NULL) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
} else if(str2==NULL) {
|
||||
return 1;
|
||||
} else {
|
||||
/* compare non-NULL strings lexically with lowercase */
|
||||
int rc;
|
||||
unsigned char c1, c2;
|
||||
|
||||
for(; n--;) {
|
||||
c1=(unsigned char)*str1;
|
||||
c2=(unsigned char)*str2;
|
||||
if(c1==0) {
|
||||
if(c2==0) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
} else if(c2==0) {
|
||||
return 1;
|
||||
} else {
|
||||
/* compare non-zero characters with lowercase */
|
||||
rc=(int)(unsigned char)uprv_tolower(c1)-(int)(unsigned char)uprv_tolower(c2);
|
||||
if(rc!=0) {
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
++str1;
|
||||
++str2;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
U_CAPI char* U_EXPORT2
|
||||
uprv_strdup(const char *src) {
|
||||
size_t len = uprv_strlen(src) + 1;
|
||||
char *dup = (char *) uprv_malloc(len);
|
||||
|
||||
if (dup) {
|
||||
uprv_memcpy(dup, src, len);
|
||||
}
|
||||
|
||||
return dup;
|
||||
}
|
105
extern/icu/source/common/cstring.h
vendored
105
extern/icu/source/common/cstring.h
vendored
@ -1,105 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 1997-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
* File CSTRING.H
|
||||
*
|
||||
* Contains CString interface
|
||||
*
|
||||
* @author Helena Shih
|
||||
*
|
||||
* Modification History:
|
||||
*
|
||||
* Date Name Description
|
||||
* 6/17/98 hshih Created.
|
||||
* 05/03/99 stephen Changed from functions to macros.
|
||||
* 06/14/99 stephen Added icu_strncat, icu_strncmp, icu_tolower
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef CSTRING_H
|
||||
#define CSTRING_H 1
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#define uprv_strcpy(dst, src) U_STANDARD_CPP_NAMESPACE strcpy(dst, src)
|
||||
#define uprv_strcpyWithSize(dst, src, size) U_STANDARD_CPP_NAMESPACE strncpy(dst, src, size)
|
||||
#define uprv_strncpy(dst, src, size) U_STANDARD_CPP_NAMESPACE strncpy(dst, src, size)
|
||||
#define uprv_strlen(str) U_STANDARD_CPP_NAMESPACE strlen(str)
|
||||
#define uprv_strcmp(s1, s2) U_STANDARD_CPP_NAMESPACE strcmp(s1, s2)
|
||||
#define uprv_strncmp(s1, s2, n) U_STANDARD_CPP_NAMESPACE strncmp(s1, s2, n)
|
||||
#define uprv_strcat(dst, src) U_STANDARD_CPP_NAMESPACE strcat(dst, src)
|
||||
#define uprv_strncat(dst, src, n) U_STANDARD_CPP_NAMESPACE strncat(dst, src, n)
|
||||
#define uprv_strchr(s, c) U_STANDARD_CPP_NAMESPACE strchr(s, c)
|
||||
#define uprv_strstr(s, c) U_STANDARD_CPP_NAMESPACE strstr(s, c)
|
||||
#define uprv_strrchr(s, c) U_STANDARD_CPP_NAMESPACE strrchr(s, c)
|
||||
|
||||
U_CAPI char U_EXPORT2
|
||||
uprv_toupper(char c);
|
||||
|
||||
|
||||
U_CAPI char U_EXPORT2
|
||||
uprv_asciitolower(char c);
|
||||
|
||||
U_CAPI char U_EXPORT2
|
||||
uprv_ebcdictolower(char c);
|
||||
|
||||
#if U_CHARSET_FAMILY==U_ASCII_FAMILY
|
||||
# define uprv_tolower uprv_asciitolower
|
||||
#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY
|
||||
# define uprv_tolower uprv_ebcdictolower
|
||||
#else
|
||||
# error U_CHARSET_FAMILY is not valid
|
||||
#endif
|
||||
|
||||
|
||||
#define uprv_strtoul(str, end, base) U_STANDARD_CPP_NAMESPACE strtoul(str, end, base)
|
||||
#define uprv_strtol(str, end, base) U_STANDARD_CPP_NAMESPACE strtol(str, end, base)
|
||||
#ifdef WIN32
|
||||
# define uprv_stricmp(str1, str2) U_STANDARD_CPP_NAMESPACE _stricmp(str1, str2)
|
||||
# define uprv_strnicmp(str1, str2, n) U_STANDARD_CPP_NAMESPACE _strnicmp(str1, str2, n)
|
||||
#elif defined(POSIX)
|
||||
# define uprv_stricmp(str1, str2) U_STANDARD_CPP_NAMESPACE strcasecmp(str1, str2)
|
||||
# define uprv_strnicmp(str1, str2, n) U_STANDARD_CPP_NAMESPACE strncasecmp(str1, str2, n)
|
||||
#else
|
||||
# define uprv_stricmp(str1, str2) T_CString_stricmp(str1, str2)
|
||||
# define uprv_strnicmp(str1, str2, n) T_CString_strnicmp(str1, str2, n)
|
||||
#endif
|
||||
|
||||
/* Conversion from a digit to the character with radix base from 2-19 */
|
||||
/* May need to use U_UPPER_ORDINAL*/
|
||||
#define T_CString_itosOffset(a) ((a)<=9?('0'+(a)):('A'+(a)-10))
|
||||
|
||||
U_CAPI char* U_EXPORT2
|
||||
uprv_strdup(const char *src);
|
||||
|
||||
U_CAPI char* U_EXPORT2
|
||||
T_CString_toLowerCase(char* str);
|
||||
|
||||
U_CAPI char* U_EXPORT2
|
||||
T_CString_toUpperCase(char* str);
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_CString_integerToString(char *buffer, int32_t n, int32_t radix);
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_CString_int64ToString(char *buffer, int64_t n, uint32_t radix);
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_CString_stringToInteger(const char *integerString, int32_t radix);
|
||||
|
||||
U_CAPI int U_EXPORT2
|
||||
T_CString_stricmp(const char *str1, const char *str2);
|
||||
|
||||
U_CAPI int U_EXPORT2
|
||||
T_CString_strnicmp(const char *str1, const char *str2, uint32_t n);
|
||||
|
||||
#endif /* ! CSTRING_H */
|
53
extern/icu/source/common/cwchar.c
vendored
53
extern/icu/source/common/cwchar.c
vendored
@ -1,53 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2001, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
* file name: cwchar.c
|
||||
* encoding: US-ASCII
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*
|
||||
* created on: 2001may25
|
||||
* created by: Markus W. Scherer
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !U_HAVE_WCSCPY
|
||||
|
||||
#include "cwchar.h"
|
||||
|
||||
U_CAPI wchar_t *uprv_wcscat(wchar_t *dst, const wchar_t *src) {
|
||||
wchar_t *start=dst;
|
||||
while(*dst!=0) {
|
||||
++dst;
|
||||
}
|
||||
while((*dst=*src)!=0) {
|
||||
++dst;
|
||||
++src;
|
||||
}
|
||||
return start;
|
||||
}
|
||||
|
||||
U_CAPI wchar_t *uprv_wcscpy(wchar_t *dst, const wchar_t *src) {
|
||||
wchar_t *start=dst;
|
||||
while((*dst=*src)!=0) {
|
||||
++dst;
|
||||
++src;
|
||||
}
|
||||
return start;
|
||||
}
|
||||
|
||||
U_CAPI size_t uprv_wcslen(const wchar_t *src) {
|
||||
const wchar_t *start=src;
|
||||
while(*src!=0) {
|
||||
++src;
|
||||
}
|
||||
return src-start;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
56
extern/icu/source/common/cwchar.h
vendored
56
extern/icu/source/common/cwchar.h
vendored
@ -1,56 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2001, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
* file name: cwchar.h
|
||||
* encoding: US-ASCII
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*
|
||||
* created on: 2001may25
|
||||
* created by: Markus W. Scherer
|
||||
*
|
||||
* This file contains ICU-internal definitions of wchar_t operations.
|
||||
* These definitions were moved here from cstring.h so that fewer
|
||||
* ICU implementation files include wchar.h.
|
||||
*/
|
||||
|
||||
#ifndef __CWCHAR_H__
|
||||
#define __CWCHAR_H__
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
/* Do this after utypes.h so that we have U_HAVE_WCHAR_H . */
|
||||
#if U_HAVE_WCHAR_H
|
||||
# include <wchar.h>
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Wide-character functions */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* The following are not available on all systems, defined in wchar.h or string.h. */
|
||||
#if U_HAVE_WCSCPY
|
||||
# define uprv_wcscpy wcscpy
|
||||
# define uprv_wcscat wcscat
|
||||
# define uprv_wcslen wcslen
|
||||
#else
|
||||
U_CAPI wchar_t* U_EXPORT2
|
||||
uprv_wcscpy(wchar_t *dst, const wchar_t *src);
|
||||
U_CAPI wchar_t* U_EXPORT2
|
||||
uprv_wcscat(wchar_t *dst, const wchar_t *src);
|
||||
U_CAPI size_t U_EXPORT2
|
||||
uprv_wcslen(const wchar_t *src);
|
||||
#endif
|
||||
|
||||
/* The following are part of the ANSI C standard, defined in stdlib.h . */
|
||||
#define uprv_wcstombs(mbstr, wcstr, count) U_STANDARD_CPP_NAMESPACE wcstombs(mbstr, wcstr, count)
|
||||
#define uprv_mbstowcs(wcstr, mbstr, count) U_STANDARD_CPP_NAMESPACE mbstowcs(wcstr, mbstr, count)
|
||||
|
||||
|
||||
#endif
|
629
extern/icu/source/common/dbbi.cpp
vendored
629
extern/icu/source/common/dbbi.cpp
vendored
@ -1,629 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 1999-2003 IBM Corp. All rights reserved.
|
||||
**********************************************************************
|
||||
* Date Name Description
|
||||
* 12/1/99 rgillam Complete port from Java.
|
||||
* 01/13/2000 helena Added UErrorCode to ctors.
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_BREAK_ITERATION
|
||||
|
||||
#include "unicode/dbbi.h"
|
||||
#include "unicode/schriter.h"
|
||||
#include "dbbi_tbl.h"
|
||||
#include "uvector.h"
|
||||
#include "cmemory.h"
|
||||
#include "uassert.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(DictionaryBasedBreakIterator)
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
// constructors
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
DictionaryBasedBreakIterator::DictionaryBasedBreakIterator() :
|
||||
RuleBasedBreakIterator() {
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
DictionaryBasedBreakIterator::DictionaryBasedBreakIterator(UDataMemory* rbbiData,
|
||||
const char* dictionaryFilename,
|
||||
UErrorCode& status)
|
||||
: RuleBasedBreakIterator(rbbiData, status)
|
||||
{
|
||||
init();
|
||||
if (U_FAILURE(status)) {return;};
|
||||
fTables = new DictionaryBasedBreakIteratorTables(dictionaryFilename, status);
|
||||
if (U_FAILURE(status)) {
|
||||
if (fTables != NULL) {
|
||||
fTables->removeReference();
|
||||
fTables = NULL;
|
||||
}
|
||||
return;
|
||||
}
|
||||
/* test for NULL */
|
||||
if(fTables == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DictionaryBasedBreakIterator::DictionaryBasedBreakIterator(const DictionaryBasedBreakIterator &other) :
|
||||
RuleBasedBreakIterator(other)
|
||||
{
|
||||
init();
|
||||
if (other.fTables != NULL) {
|
||||
fTables = other.fTables;
|
||||
fTables->addReference();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
// Destructor
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
DictionaryBasedBreakIterator::~DictionaryBasedBreakIterator()
|
||||
{
|
||||
uprv_free(cachedBreakPositions);
|
||||
cachedBreakPositions = NULL;
|
||||
if (fTables != NULL) {fTables->removeReference();};
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
// Assignment operator. Sets this iterator to have the same behavior,
|
||||
// and iterate over the same text, as the one passed in.
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
DictionaryBasedBreakIterator&
|
||||
DictionaryBasedBreakIterator::operator=(const DictionaryBasedBreakIterator& that) {
|
||||
if (this == &that) {
|
||||
return *this;
|
||||
}
|
||||
reset(); // clears out cached break positions.
|
||||
RuleBasedBreakIterator::operator=(that);
|
||||
if (this->fTables != that.fTables) {
|
||||
if (this->fTables != NULL) {this->fTables->removeReference();};
|
||||
this->fTables = that.fTables;
|
||||
if (this->fTables != NULL) {this->fTables->addReference();};
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
// Clone() Returns a newly-constructed RuleBasedBreakIterator with the same
|
||||
// behavior, and iterating over the same text, as this one.
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
BreakIterator*
|
||||
DictionaryBasedBreakIterator::clone() const {
|
||||
return new DictionaryBasedBreakIterator(*this);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// BreakIterator overrides
|
||||
//=======================================================================
|
||||
|
||||
/**
|
||||
* Advances the iterator one step backwards.
|
||||
* @return The position of the last boundary position before the
|
||||
* current iteration position
|
||||
*/
|
||||
int32_t
|
||||
DictionaryBasedBreakIterator::previous()
|
||||
{
|
||||
// if we have cached break positions and we're still in the range
|
||||
// covered by them, just move one step backward in the cache
|
||||
if (cachedBreakPositions != NULL && positionInCache > 0) {
|
||||
--positionInCache;
|
||||
fText->setIndex(cachedBreakPositions[positionInCache]);
|
||||
return cachedBreakPositions[positionInCache];
|
||||
}
|
||||
|
||||
// otherwise, dump the cache and use the inherited previous() method to move
|
||||
// backward. This may fill up the cache with new break positions, in which
|
||||
// case we have to mark our position in the cache
|
||||
else {
|
||||
reset();
|
||||
int32_t result = RuleBasedBreakIterator::previous();
|
||||
if (cachedBreakPositions != NULL) {
|
||||
for (positionInCache=0;
|
||||
cachedBreakPositions[positionInCache] != result;
|
||||
positionInCache++);
|
||||
U_ASSERT(positionInCache < numCachedBreakPositions);
|
||||
if (positionInCache >= numCachedBreakPositions) {
|
||||
// Something has gone wrong. Dump the cache.
|
||||
reset();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current iteration position to the last boundary position
|
||||
* before the specified position.
|
||||
* @param offset The position to begin searching from
|
||||
* @return The position of the last boundary before "offset"
|
||||
*/
|
||||
int32_t
|
||||
DictionaryBasedBreakIterator::preceding(int32_t offset)
|
||||
{
|
||||
// if the offset passed in is already past the end of the text,
|
||||
// just return DONE; if it's before the beginning, return the
|
||||
// text's starting offset
|
||||
if (fText == NULL || offset > fText->endIndex()) {
|
||||
return BreakIterator::DONE;
|
||||
}
|
||||
else if (offset < fText->startIndex()) {
|
||||
return fText->startIndex();
|
||||
}
|
||||
|
||||
// if we have no cached break positions, or "offset" is outside the
|
||||
// range covered by the cache, we can just call the inherited routine
|
||||
// (which will eventually call other routines in this class that may
|
||||
// refresh the cache)
|
||||
if (cachedBreakPositions == NULL || offset <= cachedBreakPositions[0] ||
|
||||
offset > cachedBreakPositions[numCachedBreakPositions - 1]) {
|
||||
reset();
|
||||
return RuleBasedBreakIterator::preceding(offset);
|
||||
}
|
||||
|
||||
// on the other hand, if "offset" is within the range covered by the cache,
|
||||
// then all we have to do is search the cache for the last break position
|
||||
// before "offset"
|
||||
else {
|
||||
positionInCache = 0;
|
||||
while (positionInCache < numCachedBreakPositions
|
||||
&& offset > cachedBreakPositions[positionInCache])
|
||||
++positionInCache;
|
||||
--positionInCache;
|
||||
fText->setIndex(cachedBreakPositions[positionInCache]);
|
||||
return fText->getIndex();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current iteration position to the first boundary position after
|
||||
* the specified position.
|
||||
* @param offset The position to begin searching forward from
|
||||
* @return The position of the first boundary after "offset"
|
||||
*/
|
||||
int32_t
|
||||
DictionaryBasedBreakIterator::following(int32_t offset)
|
||||
{
|
||||
// if the offset passed in is already past the end of the text,
|
||||
// just return DONE; if it's before the beginning, return the
|
||||
// text's starting offset
|
||||
if (fText == NULL || offset > fText->endIndex()) {
|
||||
return BreakIterator::DONE;
|
||||
}
|
||||
else if (offset < fText->startIndex()) {
|
||||
return fText->startIndex();
|
||||
}
|
||||
|
||||
// if we have no cached break positions, or if "offset" is outside the
|
||||
// range covered by the cache, then dump the cache and call our
|
||||
// inherited following() method. This will call other methods in this
|
||||
// class that may refresh the cache.
|
||||
if (cachedBreakPositions == NULL || offset < cachedBreakPositions[0] ||
|
||||
offset >= cachedBreakPositions[numCachedBreakPositions - 1]) {
|
||||
reset();
|
||||
return RuleBasedBreakIterator::following(offset);
|
||||
}
|
||||
|
||||
// on the other hand, if "offset" is within the range covered by the
|
||||
// cache, then just search the cache for the first break position
|
||||
// after "offset"
|
||||
else {
|
||||
positionInCache = 0;
|
||||
while (positionInCache < numCachedBreakPositions
|
||||
&& offset >= cachedBreakPositions[positionInCache])
|
||||
++positionInCache;
|
||||
fText->setIndex(cachedBreakPositions[positionInCache]);
|
||||
return fText->getIndex();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is the implementation function for next().
|
||||
*/
|
||||
int32_t
|
||||
DictionaryBasedBreakIterator::handleNext()
|
||||
{
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
// if there are no cached break positions, or if we've just moved
|
||||
// off the end of the range covered by the cache, we have to dump
|
||||
// and possibly regenerate the cache
|
||||
if (cachedBreakPositions == NULL || positionInCache == numCachedBreakPositions - 1) {
|
||||
|
||||
// start by using the inherited handleNext() to find a tentative return
|
||||
// value. dictionaryCharCount tells us how many dictionary characters
|
||||
// we passed over on our way to the tentative return value
|
||||
int32_t startPos = fText->getIndex();
|
||||
fDictionaryCharCount = 0;
|
||||
int32_t result = RuleBasedBreakIterator::handleNext();
|
||||
|
||||
// if we passed over more than one dictionary character, then we use
|
||||
// divideUpDictionaryRange() to regenerate the cached break positions
|
||||
// for the new range
|
||||
if (fDictionaryCharCount > 1 && result - startPos > 1) {
|
||||
divideUpDictionaryRange(startPos, result, status);
|
||||
U_ASSERT(U_SUCCESS(status));
|
||||
if (U_FAILURE(status)) {
|
||||
// Something went badly wrong, an internal error.
|
||||
// We have no way from here to report it to caller.
|
||||
// Treat as if this is if the dictionary did not apply to range.
|
||||
reset();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
// otherwise, the value we got back from the inherited fuction
|
||||
// is our return value, and we can dump the cache
|
||||
else {
|
||||
reset();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
// if the cache of break positions has been regenerated (or existed all
|
||||
// along), then just advance to the next break position in the cache
|
||||
// and return it
|
||||
if (cachedBreakPositions != NULL) {
|
||||
++positionInCache;
|
||||
fText->setIndex(cachedBreakPositions[positionInCache]);
|
||||
return cachedBreakPositions[positionInCache];
|
||||
}
|
||||
return -9999; // SHOULD NEVER GET HERE!
|
||||
}
|
||||
|
||||
void
|
||||
DictionaryBasedBreakIterator::reset()
|
||||
{
|
||||
uprv_free(cachedBreakPositions);
|
||||
cachedBreakPositions = NULL;
|
||||
numCachedBreakPositions = 0;
|
||||
fDictionaryCharCount = 0;
|
||||
positionInCache = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
// init() Common initialization routine, for use by constructors, etc.
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
void DictionaryBasedBreakIterator::init() {
|
||||
cachedBreakPositions = NULL;
|
||||
fTables = NULL;
|
||||
numCachedBreakPositions = 0;
|
||||
fDictionaryCharCount = 0;
|
||||
positionInCache = 0;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
// BufferClone
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
BreakIterator * DictionaryBasedBreakIterator::createBufferClone(void *stackBuffer,
|
||||
int32_t &bufferSize,
|
||||
UErrorCode &status)
|
||||
{
|
||||
if (U_FAILURE(status)){
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//
|
||||
// If user buffer size is zero this is a preflight operation to
|
||||
// obtain the needed buffer size, allowing for worst case misalignment.
|
||||
//
|
||||
if (bufferSize == 0) {
|
||||
bufferSize = sizeof(DictionaryBasedBreakIterator) + U_ALIGNMENT_OFFSET_UP(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//
|
||||
// Check the alignment and size of the user supplied buffer.
|
||||
// Allocate heap memory if the user supplied memory is insufficient.
|
||||
//
|
||||
char *buf = (char *)stackBuffer;
|
||||
uint32_t s = bufferSize;
|
||||
|
||||
if (stackBuffer == NULL) {
|
||||
s = 0; // Ignore size, force allocation if user didn't give us a buffer.
|
||||
}
|
||||
if (U_ALIGNMENT_OFFSET(stackBuffer) != 0) {
|
||||
int32_t offsetUp = (int32_t)U_ALIGNMENT_OFFSET_UP(buf);
|
||||
s -= offsetUp;
|
||||
buf += offsetUp;
|
||||
}
|
||||
if (s < sizeof(DictionaryBasedBreakIterator)) {
|
||||
buf = (char *) new DictionaryBasedBreakIterator();
|
||||
if (buf == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
status = U_SAFECLONE_ALLOCATED_WARNING;
|
||||
}
|
||||
|
||||
//
|
||||
// Initialize the clone object.
|
||||
// TODO: using an overloaded C++ "operator new" to directly initialize the
|
||||
// copy in the user's buffer would be better, but it doesn't seem
|
||||
// to get along with namespaces. Investigate why.
|
||||
//
|
||||
// The memcpy is only safe with an empty (default constructed)
|
||||
// break iterator. Use on others can screw up reference counts
|
||||
// to data. memcpy-ing objects is not really a good idea...
|
||||
//
|
||||
DictionaryBasedBreakIterator localIter; // Empty break iterator, source for memcpy
|
||||
DictionaryBasedBreakIterator *clone = (DictionaryBasedBreakIterator *)buf;
|
||||
uprv_memcpy(clone, &localIter, sizeof(DictionaryBasedBreakIterator)); // clone = empty, but initialized, iterator.
|
||||
*clone = *this; // clone = the real one we want.
|
||||
if (status != U_SAFECLONE_ALLOCATED_WARNING) {
|
||||
clone->fBufferClone = TRUE;
|
||||
}
|
||||
return clone;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This is the function that actually implements the dictionary-based
|
||||
* algorithm. Given the endpoints of a range of text, it uses the
|
||||
* dictionary to determine the positions of any boundaries in this
|
||||
* range. It stores all the boundary positions it discovers in
|
||||
* cachedBreakPositions so that we only have to do this work once
|
||||
* for each time we enter the range.
|
||||
*/
|
||||
void
|
||||
DictionaryBasedBreakIterator::divideUpDictionaryRange(int32_t startPos, int32_t endPos, UErrorCode &status)
|
||||
{
|
||||
// the range we're dividing may begin or end with non-dictionary characters
|
||||
// (i.e., for line breaking, we may have leading or trailing punctuation
|
||||
// that needs to be kept with the word). Seek from the beginning of the
|
||||
// range to the first dictionary character
|
||||
fText->setIndex(startPos);
|
||||
UChar c = fText->current();
|
||||
while (isDictionaryChar(c) == FALSE) {
|
||||
c = fText->next();
|
||||
}
|
||||
|
||||
if (U_FAILURE(status)) {
|
||||
return; // UStack below overwrites the status error codes
|
||||
}
|
||||
|
||||
// initialize. We maintain two stacks: currentBreakPositions contains
|
||||
// the list of break positions that will be returned if we successfully
|
||||
// finish traversing the whole range now. possibleBreakPositions lists
|
||||
// all other possible word ends we've passed along the way. (Whenever
|
||||
// we reach an error [a sequence of characters that can't begin any word
|
||||
// in the dictionary], we back up, possibly delete some breaks from
|
||||
// currentBreakPositions, move a break from possibleBreakPositions
|
||||
// to currentBreakPositions, and start over from there. This process
|
||||
// continues in this way until we either successfully make it all the way
|
||||
// across the range, or exhaust all of our combinations of break
|
||||
// positions.) wrongBreakPositions is used to keep track of paths we've
|
||||
// tried on previous iterations. As the iterator backs up further and
|
||||
// further, this saves us from having to follow each possible path
|
||||
// through the text all the way to the error (hopefully avoiding many
|
||||
// future recursive calls as well).
|
||||
// there can be only one kind of error in UStack and UVector, so we'll
|
||||
// just let the error fall through
|
||||
UStack currentBreakPositions(status);
|
||||
UStack possibleBreakPositions(status);
|
||||
UVector wrongBreakPositions(status);
|
||||
|
||||
// the dictionary is implemented as a trie, which is treated as a state
|
||||
// machine. -1 represents the end of a legal word. Every word in the
|
||||
// dictionary is represented by a path from the root node to -1. A path
|
||||
// that ends in state 0 is an illegal combination of characters.
|
||||
int16_t state = 0;
|
||||
|
||||
// these two variables are used for error handling. We keep track of the
|
||||
// farthest we've gotten through the range being divided, and the combination
|
||||
// of breaks that got us that far. If we use up all possible break
|
||||
// combinations, the text contains an error or a word that's not in the
|
||||
// dictionary. In this case, we "bless" the break positions that got us the
|
||||
// farthest as real break positions, and then start over from scratch with
|
||||
// the character where the error occurred.
|
||||
int32_t farthestEndPoint = fText->getIndex();
|
||||
UStack bestBreakPositions(status);
|
||||
UBool bestBreakPositionsInitialized = FALSE;
|
||||
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
// initialize (we always exit the loop with a break statement)
|
||||
c = fText->current();
|
||||
for (;;) {
|
||||
|
||||
// if we can transition to state "-1" from our current state, we're
|
||||
// on the last character of a legal word. Push that position onto
|
||||
// the possible-break-positions stack
|
||||
if (fTables->fDictionary->at(state, (int32_t)0) == -1) {
|
||||
possibleBreakPositions.push(fText->getIndex(), status);
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// look up the new state to transition to in the dictionary
|
||||
state = fTables->fDictionary->at(state, c);
|
||||
|
||||
// if the character we're sitting on causes us to transition to
|
||||
// the "end of word" state, then it was a non-dictionary character
|
||||
// and we've successfully traversed the whole range. Drop out
|
||||
// of the loop.
|
||||
if (state == -1) {
|
||||
currentBreakPositions.push(fText->getIndex(), status);
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// if the character we're sitting on causes us to transition to
|
||||
// the error state, or if we've gone off the end of the range
|
||||
// without transitioning to the "end of word" state, we've hit
|
||||
// an error...
|
||||
else if (state == 0 || fText->getIndex() >= endPos) {
|
||||
|
||||
// if this is the farthest we've gotten, take note of it in
|
||||
// case there's an error in the text
|
||||
if (fText->getIndex() > farthestEndPoint) {
|
||||
farthestEndPoint = fText->getIndex();
|
||||
bestBreakPositions.removeAllElements();
|
||||
bestBreakPositionsInitialized = TRUE;
|
||||
for (int32_t i = 0; i < currentBreakPositions.size(); i++) {
|
||||
bestBreakPositions.push(currentBreakPositions.elementAti(i), status);
|
||||
}
|
||||
}
|
||||
|
||||
// wrongBreakPositions is a list of all break positions we've tried starting
|
||||
// that didn't allow us to traverse all the way through the text. Every time
|
||||
// we pop a break position off of currentBreakPositions, we put it into
|
||||
// wrongBreakPositions to avoid trying it again later. If we make it to this
|
||||
// spot, we're either going to back up to a break in possibleBreakPositions
|
||||
// and try starting over from there, or we've exhausted all possible break
|
||||
// positions and are going to do the fallback procedure. This loop prevents
|
||||
// us from messing with anything in possibleBreakPositions that didn't work as
|
||||
// a starting point the last time we tried it (this is to prevent a bunch of
|
||||
// repetitive checks from slowing down some extreme cases)
|
||||
while (!possibleBreakPositions.isEmpty() && wrongBreakPositions.contains(
|
||||
possibleBreakPositions.peeki())) {
|
||||
possibleBreakPositions.popi();
|
||||
}
|
||||
|
||||
// if we've used up all possible break-position combinations, there's
|
||||
// an error or an unknown word in the text. In this case, we start
|
||||
// over, treating the farthest character we've reached as the beginning
|
||||
// of the range, and "blessing" the break positions that got us that
|
||||
// far as real break positions
|
||||
if (possibleBreakPositions.isEmpty()) {
|
||||
if (bestBreakPositionsInitialized) {
|
||||
currentBreakPositions.removeAllElements();
|
||||
for (int32_t i = 0; i < bestBreakPositions.size(); i++) {
|
||||
currentBreakPositions.push(bestBreakPositions.elementAti(i), status);
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
bestBreakPositions.removeAllElements();
|
||||
if (farthestEndPoint < endPos) {
|
||||
fText->setIndex(farthestEndPoint + 1);
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((currentBreakPositions.isEmpty()
|
||||
|| currentBreakPositions.peeki() != fText->getIndex())
|
||||
&& fText->getIndex() != startPos) {
|
||||
currentBreakPositions.push(fText->getIndex(), status);
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
fText->next();
|
||||
currentBreakPositions.push(fText->getIndex(), status);
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if we still have more break positions we can try, then promote the
|
||||
// last break in possibleBreakPositions into currentBreakPositions,
|
||||
// and get rid of all entries in currentBreakPositions that come after
|
||||
// it. Then back up to that position and start over from there (i.e.,
|
||||
// treat that position as the beginning of a new word)
|
||||
else {
|
||||
int32_t temp = possibleBreakPositions.popi();
|
||||
int32_t temp2 = 0;
|
||||
while (!currentBreakPositions.isEmpty() && temp <
|
||||
currentBreakPositions.peeki()) {
|
||||
temp2 = currentBreakPositions.popi();
|
||||
wrongBreakPositions.addElement(temp2, status);
|
||||
}
|
||||
currentBreakPositions.push(temp, status);
|
||||
fText->setIndex(currentBreakPositions.peeki());
|
||||
}
|
||||
|
||||
// re-sync "c" for the next go-round, and drop out of the loop if
|
||||
// we've made it off the end of the range
|
||||
c = fText->current();
|
||||
if (fText->getIndex() >= endPos) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// if we didn't hit any exceptional conditions on this last iteration,
|
||||
// just advance to the next character and loop
|
||||
else {
|
||||
c = fText->next();
|
||||
}
|
||||
}
|
||||
|
||||
// dump the last break position in the list, and replace it with the actual
|
||||
// end of the range (which may be the same character, or may be further on
|
||||
// because the range actually ended with non-dictionary characters we want to
|
||||
// keep with the word)
|
||||
if (!currentBreakPositions.isEmpty()) {
|
||||
currentBreakPositions.popi();
|
||||
}
|
||||
currentBreakPositions.push(endPos, status);
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// create a regular array to hold the break positions and copy
|
||||
// the break positions from the stack to the array (in addition,
|
||||
// our starting position goes into this array as a break position).
|
||||
// This array becomes the cache of break positions used by next()
|
||||
// and previous(), so this is where we actually refresh the cache.
|
||||
if (cachedBreakPositions != NULL) {
|
||||
uprv_free(cachedBreakPositions);
|
||||
}
|
||||
cachedBreakPositions = (int32_t *)uprv_malloc((currentBreakPositions.size() + 1) * sizeof(int32_t));
|
||||
/* Test for NULL */
|
||||
if(cachedBreakPositions == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
numCachedBreakPositions = currentBreakPositions.size() + 1;
|
||||
cachedBreakPositions[0] = startPos;
|
||||
|
||||
for (int32_t i = 0; i < currentBreakPositions.size(); i++) {
|
||||
cachedBreakPositions[i + 1] = currentBreakPositions.elementAti(i);
|
||||
}
|
||||
positionInCache = 0;
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
|
||||
|
||||
/* eof */
|
59
extern/icu/source/common/dbbi_tbl.cpp
vendored
59
extern/icu/source/common/dbbi_tbl.cpp
vendored
@ -1,59 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 1999-2002 IBM Corp. All rights reserved.
|
||||
**********************************************************************
|
||||
* Date Name Description
|
||||
* 12/1/99 rgillam Complete port from Java.
|
||||
* 01/13/2000 helena Added UErrorCode to ctors.
|
||||
* 06/14/2002 andy Gutted for new RBBI impl.
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_BREAK_ITERATION
|
||||
|
||||
#include "dbbi_tbl.h"
|
||||
#include "unicode/dbbi.h"
|
||||
#include "umutex.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
//=======================================================================
|
||||
// constructor
|
||||
//=======================================================================
|
||||
|
||||
DictionaryBasedBreakIteratorTables::DictionaryBasedBreakIteratorTables(
|
||||
const char* dictionaryFilename,
|
||||
UErrorCode &status) {
|
||||
fDictionary = new BreakDictionary(dictionaryFilename, status);
|
||||
fRefCount = 1;
|
||||
}
|
||||
|
||||
|
||||
void DictionaryBasedBreakIteratorTables::addReference() {
|
||||
umtx_atomic_inc(&fRefCount);
|
||||
}
|
||||
|
||||
|
||||
void DictionaryBasedBreakIteratorTables::removeReference() {
|
||||
if (umtx_atomic_dec(&fRefCount) == 0) {
|
||||
delete this;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
DictionaryBasedBreakIteratorTables::~DictionaryBasedBreakIteratorTables() {
|
||||
delete fDictionary;
|
||||
fDictionary = NULL;
|
||||
}
|
||||
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
|
||||
|
||||
/* eof */
|
90
extern/icu/source/common/dbbi_tbl.h
vendored
90
extern/icu/source/common/dbbi_tbl.h
vendored
@ -1,90 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 1999-2000 IBM Corp. All rights reserved.
|
||||
**********************************************************************
|
||||
* Date Name Description
|
||||
* 12/1/99 rgillam Complete port from Java.
|
||||
* 01/13/2000 helena Added UErrorCode to ctors.
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
#ifndef DBBI_TBL_H
|
||||
#define DBBI_TBL_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/uobject.h"
|
||||
#include "unicode/udata.h"
|
||||
#include "brkdict.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/* forward declaration */
|
||||
class DictionaryBasedBreakIterator;
|
||||
|
||||
//
|
||||
// DictionaryBasedBreakIteratorTables
|
||||
//
|
||||
// This class sits between instances of DictionaryBasedBreakIterator
|
||||
// and the dictionary data itself, which is of type BreakDictionary.
|
||||
// It provides reference counting, allowing multiple copies of a
|
||||
// DictionaryBasedBreakIterator to share a single instance of
|
||||
// BreakDictionary.
|
||||
//
|
||||
// TODO: it'd probably be cleaner to add the reference counting to
|
||||
// BreakDictionary and get rid of this class, but doing it this way
|
||||
// was a convenient transition from earlier code, and time is short...
|
||||
//
|
||||
class DictionaryBasedBreakIteratorTables : public UMemory {
|
||||
|
||||
private:
|
||||
int32_t fRefCount;
|
||||
|
||||
|
||||
public:
|
||||
//=======================================================================
|
||||
// constructor
|
||||
//=======================================================================
|
||||
/* @param dictionaryFilename The name of the dictionary file
|
||||
* @param status The error code
|
||||
* @return the newly created DictionaryBasedBreakIteratorTables
|
||||
**/
|
||||
DictionaryBasedBreakIteratorTables(const char* dictionaryFilename,
|
||||
UErrorCode& status);
|
||||
|
||||
BreakDictionary *fDictionary;
|
||||
void addReference();
|
||||
void removeReference();
|
||||
/**
|
||||
* Destructor. Should not be used directly. Use removeReference() istead.
|
||||
* (Not private to avoid compiler warnings.)
|
||||
*/
|
||||
virtual ~DictionaryBasedBreakIteratorTables();
|
||||
|
||||
private:
|
||||
/**
|
||||
* The copy constructor is declared private and not implemented.
|
||||
* THIS CLASS MAY NOT BE COPIED.
|
||||
* @param that The DictionaryBasedBreakIteratorTables to be copied.
|
||||
* @return the newly constructed DictionaryBasedBreakIteratorTables.
|
||||
*/
|
||||
DictionaryBasedBreakIteratorTables(const DictionaryBasedBreakIteratorTables& that);
|
||||
|
||||
//=======================================================================
|
||||
// boilerplate
|
||||
//=======================================================================
|
||||
|
||||
|
||||
/**
|
||||
* The assignment operator is declared private and not implemented.
|
||||
* THIS CLASS MAY NOT BE COPIED.
|
||||
* Call addReference() and share an existing copy instead.
|
||||
* @that The object to be copied
|
||||
* @return the newly created DictionaryBasedBreakIteratorTables.
|
||||
*/
|
||||
DictionaryBasedBreakIteratorTables& operator=(
|
||||
const DictionaryBasedBreakIteratorTables& that);
|
||||
};
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif
|
226
extern/icu/source/common/filestrm.c
vendored
226
extern/icu/source/common/filestrm.c
vendored
@ -1,226 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 1997-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
* File FILESTRM.C
|
||||
*
|
||||
* @author Glenn Marcy
|
||||
*
|
||||
* Modification History:
|
||||
*
|
||||
* Date Name Description
|
||||
* 5/8/98 gm Created
|
||||
* 03/02/99 stephen Reordered params in ungetc to match stdio
|
||||
* Added wopen
|
||||
* 3/29/99 helena Merged Stephen and Bertrand's changes.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "filestrm.h"
|
||||
#include "cmemory.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_open(const char* filename, const char* mode)
|
||||
{
|
||||
if(filename != NULL && *filename != 0 && mode != NULL && *mode != 0) {
|
||||
FILE *file = fopen(filename, mode);
|
||||
return (FileStream*)file;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_wopen(const wchar_t* filename, const wchar_t* mode)
|
||||
{
|
||||
// TBD: _wfopen is believed to be MS-specific?
|
||||
#if defined(WIN32) && !defined(__WINDOWS__)
|
||||
FILE* result = _wfopen(filename, mode);
|
||||
return (FileStream*)result;
|
||||
#else
|
||||
size_t fnMbsSize, mdMbsSize;
|
||||
char *fn, *md;
|
||||
FILE *result;
|
||||
|
||||
// convert from wchar_t to char
|
||||
fnMbsSize = wcstombs(NULL, filename, ((size_t)-1) >> 1);
|
||||
fn = (char*)uprv_malloc(fnMbsSize+2);
|
||||
wcstombs(fn, filename, fnMbsSize);
|
||||
fn[fnMbsSize] = 0;
|
||||
|
||||
mdMbsSize = wcstombs(NULL, mode, ((size_t)-1) >> 1);
|
||||
md = (char*)uprv_malloc(mdMbsSize+2);
|
||||
wcstombs(md, mode, mdMbsSize);
|
||||
md[mdMbsSize] = 0;
|
||||
|
||||
result = fopen(fn, md);
|
||||
uprv_free(fn);
|
||||
uprv_free(md);
|
||||
return (FileStream*)result;
|
||||
#endif
|
||||
}
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
T_FileStream_close(FileStream* fileStream)
|
||||
{
|
||||
if (fileStream != 0)
|
||||
fclose((FILE*)fileStream);
|
||||
}
|
||||
|
||||
U_CAPI UBool U_EXPORT2
|
||||
T_FileStream_file_exists(const char* filename)
|
||||
{
|
||||
FILE* temp = fopen(filename, "r");
|
||||
if (temp) {
|
||||
fclose(temp);
|
||||
return TRUE;
|
||||
} else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*static const int32_t kEOF;
|
||||
const int32_t FileStream::kEOF = EOF;*/
|
||||
|
||||
/*
|
||||
U_CAPI FileStream*
|
||||
T_FileStream_tmpfile()
|
||||
{
|
||||
FILE* file = tmpfile();
|
||||
return (FileStream*)file;
|
||||
}
|
||||
*/
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_read(FileStream* fileStream, void* addr, int32_t len)
|
||||
{
|
||||
return fread(addr, 1, len, (FILE*)fileStream);
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_write(FileStream* fileStream, const void* addr, int32_t len)
|
||||
{
|
||||
|
||||
return fwrite(addr, 1, len, (FILE*)fileStream);
|
||||
}
|
||||
|
||||
U_CAPI void U_EXPORT2
|
||||
T_FileStream_rewind(FileStream* fileStream)
|
||||
{
|
||||
rewind((FILE*)fileStream);
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_putc(FileStream* fileStream, int32_t ch)
|
||||
{
|
||||
int32_t c = fputc(ch, (FILE*)fileStream);
|
||||
return c;
|
||||
}
|
||||
|
||||
U_CAPI int U_EXPORT2
|
||||
T_FileStream_getc(FileStream* fileStream)
|
||||
{
|
||||
int c = fgetc((FILE*)fileStream);
|
||||
return c;
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_ungetc(int32_t ch, FileStream* fileStream)
|
||||
{
|
||||
|
||||
int32_t c = ungetc(ch, (FILE*)fileStream);
|
||||
return c;
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_peek(FileStream* fileStream)
|
||||
{
|
||||
int32_t c = fgetc((FILE*)fileStream);
|
||||
return ungetc(c, (FILE*)fileStream);
|
||||
}
|
||||
|
||||
U_CAPI char* U_EXPORT2
|
||||
T_FileStream_readLine(FileStream* fileStream, char* buffer, int32_t length)
|
||||
{
|
||||
return fgets(buffer, length, (FILE*)fileStream);
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_writeLine(FileStream* fileStream, const char* buffer)
|
||||
{
|
||||
return fputs(buffer, (FILE*)fileStream);
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_size(FileStream* fileStream)
|
||||
{
|
||||
int32_t savedPos = ftell((FILE*)fileStream);
|
||||
int32_t size = 0;
|
||||
|
||||
/*Changes by Bertrand A. D. doesn't affect the current position
|
||||
goes to the end of the file before ftell*/
|
||||
fseek((FILE*)fileStream, 0, SEEK_END);
|
||||
size = ftell((FILE*)fileStream);
|
||||
fseek((FILE*)fileStream, savedPos, SEEK_SET);
|
||||
return size;
|
||||
}
|
||||
|
||||
U_CAPI int U_EXPORT2
|
||||
T_FileStream_eof(FileStream* fileStream)
|
||||
{
|
||||
return feof((FILE*)fileStream);
|
||||
}
|
||||
|
||||
/*
|
||||
Warning
|
||||
This function may not work consistently on all platforms
|
||||
(e.g. HP-UX, FreeBSD and MacOSX don't return an error when
|
||||
putc is used on a file opened as readonly)
|
||||
*/
|
||||
U_CAPI int U_EXPORT2
|
||||
T_FileStream_error(FileStream* fileStream)
|
||||
{
|
||||
return (fileStream == 0 || ferror((FILE*)fileStream));
|
||||
}
|
||||
|
||||
/* This function doesn't work. */
|
||||
/* force the stream to set its error flag*/
|
||||
/*U_CAPI void U_EXPORT2
|
||||
T_FileStream_setError(FileStream* fileStream)
|
||||
{
|
||||
fseek((FILE*)fileStream, 99999, SEEK_SET);
|
||||
}
|
||||
*/
|
||||
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_stdin(void)
|
||||
{
|
||||
return (FileStream*)stdin;
|
||||
}
|
||||
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_stdout(void)
|
||||
{
|
||||
return (FileStream*)stdout;
|
||||
}
|
||||
|
||||
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_stderr(void)
|
||||
{
|
||||
return (FileStream*)stderr;
|
||||
}
|
||||
|
||||
U_CAPI UBool U_EXPORT2
|
||||
T_FileStream_remove(const char* fileName){
|
||||
return (remove(fileName) == 0);
|
||||
}
|
||||
|
||||
|
109
extern/icu/source/common/filestrm.h
vendored
109
extern/icu/source/common/filestrm.h
vendored
@ -1,109 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 1997-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
*
|
||||
* File FILESTRM.H
|
||||
*
|
||||
* Contains FileStream interface
|
||||
*
|
||||
* @author Glenn Marcy
|
||||
*
|
||||
* Modification History:
|
||||
*
|
||||
* Date Name Description
|
||||
* 5/8/98 gm Created.
|
||||
* 03/02/99 stephen Reordered params in ungetc to match stdio
|
||||
* Added wopen
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef FILESTRM_H
|
||||
#define FILESTRM_H
|
||||
|
||||
#ifndef _UTYPES
|
||||
#include "unicode/utypes.h"
|
||||
#endif
|
||||
|
||||
typedef struct _FileStream FileStream;
|
||||
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_open(const char* filename, const char* mode);
|
||||
|
||||
/*
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_wopen(const wchar_t* filename, const wchar_t* mode);
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
T_FileStream_close(FileStream* fileStream);
|
||||
|
||||
U_CAPI UBool U_EXPORT2
|
||||
T_FileStream_file_exists(const char* filename);
|
||||
|
||||
/*
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_tmpfile(void);
|
||||
*/
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_read(FileStream* fileStream, void* addr, int32_t len);
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_write(FileStream* fileStream, const void* addr, int32_t len);
|
||||
|
||||
U_CAPI void U_EXPORT2
|
||||
T_FileStream_rewind(FileStream* fileStream);
|
||||
|
||||
/*Added by Bertrand A. D. */
|
||||
U_CAPI char * U_EXPORT2
|
||||
T_FileStream_readLine(FileStream* fileStream, char* buffer, int32_t length);
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_writeLine(FileStream* fileStream, const char* buffer);
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_putc(FileStream* fileStream, int32_t ch);
|
||||
|
||||
U_CAPI int U_EXPORT2
|
||||
T_FileStream_getc(FileStream* fileStream);
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_ungetc(int32_t ch, FileStream *fileStream);
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_peek(FileStream* fileStream);
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
T_FileStream_size(FileStream* fileStream);
|
||||
|
||||
U_CAPI int U_EXPORT2
|
||||
T_FileStream_eof(FileStream* fileStream);
|
||||
|
||||
U_CAPI int U_EXPORT2
|
||||
T_FileStream_error(FileStream* fileStream);
|
||||
|
||||
/*
|
||||
U_CAPI void U_EXPORT2
|
||||
T_FileStream_setError(FileStream* fileStream);
|
||||
*/
|
||||
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_stdin(void);
|
||||
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_stdout(void);
|
||||
|
||||
U_CAPI FileStream* U_EXPORT2
|
||||
T_FileStream_stderr(void);
|
||||
|
||||
U_CAPI UBool U_EXPORT2
|
||||
T_FileStream_remove(const char* fileName);
|
||||
#endif /* _FILESTRM*/
|
||||
|
||||
|
||||
|
||||
|
162
extern/icu/source/common/hash.h
vendored
162
extern/icu/source/common/hash.h
vendored
@ -1,162 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
* Copyright (C) 1997-2001, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
******************************************************************************
|
||||
* Date Name Description
|
||||
* 03/28/00 aliu Creation.
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef HASH_H
|
||||
#define HASH_H
|
||||
|
||||
#include "unicode/unistr.h"
|
||||
#include "unicode/uobject.h"
|
||||
#include "uhash.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* Hashtable is a thin C++ wrapper around UHashtable, a general-purpose void*
|
||||
* hashtable implemented in C. Hashtable is designed to be idiomatic and
|
||||
* easy-to-use in C++.
|
||||
*
|
||||
* Hashtable is an INTERNAL CLASS.
|
||||
*/
|
||||
class U_COMMON_API Hashtable : public UMemory {
|
||||
UHashtable* hash;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Construct a hashtable
|
||||
* @param ignoreKeyCase If true, keys are case insensitive.
|
||||
* @param status Error code
|
||||
*/
|
||||
Hashtable(UBool ignoreKeyCase, UErrorCode& status);
|
||||
|
||||
/**
|
||||
* Construct a hashtable, _disregarding any error_. Use this constructor
|
||||
* with caution.
|
||||
* @param ignoreKeyCase if TRUE, keys are case insensitive
|
||||
*/
|
||||
Hashtable(UBool ignoreKeyCase = FALSE);
|
||||
|
||||
/**
|
||||
* Non-virtual destructor; make this virtual if Hashtable is subclassed
|
||||
* in the future.
|
||||
*/
|
||||
~Hashtable();
|
||||
|
||||
UObjectDeleter *setValueDeleter(UObjectDeleter *fn);
|
||||
|
||||
int32_t count() const;
|
||||
|
||||
void* put(const UnicodeString& key, void* value, UErrorCode& status);
|
||||
|
||||
int32_t puti(const UnicodeString& key, int32_t value, UErrorCode& status);
|
||||
|
||||
void* get(const UnicodeString& key) const;
|
||||
|
||||
int32_t geti(const UnicodeString& key) const;
|
||||
|
||||
void* remove(const UnicodeString& key);
|
||||
|
||||
int32_t removei(const UnicodeString& key);
|
||||
|
||||
void removeAll(void);
|
||||
|
||||
const UHashElement* find(const UnicodeString& key) const;
|
||||
|
||||
const UHashElement* nextElement(int32_t& pos) const;
|
||||
|
||||
private:
|
||||
Hashtable(const Hashtable &other); // forbid copying of this class
|
||||
Hashtable &operator=(const Hashtable &other); // forbid copying of this class
|
||||
};
|
||||
|
||||
/*********************************************************************
|
||||
* Implementation
|
||||
********************************************************************/
|
||||
|
||||
inline Hashtable::Hashtable(UBool ignoreKeyCase, UErrorCode& status) :
|
||||
hash(0) {
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
hash = uhash_open(ignoreKeyCase ? uhash_hashCaselessUnicodeString
|
||||
: uhash_hashUnicodeString,
|
||||
ignoreKeyCase ? uhash_compareCaselessUnicodeString
|
||||
: uhash_compareUnicodeString,
|
||||
&status);
|
||||
if (U_SUCCESS(status)) {
|
||||
uhash_setKeyDeleter(hash, uhash_deleteUnicodeString);
|
||||
}
|
||||
}
|
||||
|
||||
inline Hashtable::Hashtable(UBool ignoreKeyCase) : hash(0) {
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
hash = uhash_open(ignoreKeyCase ? uhash_hashCaselessUnicodeString
|
||||
: uhash_hashUnicodeString,
|
||||
ignoreKeyCase ? uhash_compareCaselessUnicodeString
|
||||
: uhash_compareUnicodeString,
|
||||
&status);
|
||||
if (U_SUCCESS(status)) {
|
||||
uhash_setKeyDeleter(hash, uhash_deleteUnicodeString);
|
||||
}
|
||||
}
|
||||
|
||||
inline Hashtable::~Hashtable() {
|
||||
if (hash != 0) {
|
||||
uhash_close(hash);
|
||||
hash = 0;
|
||||
}
|
||||
}
|
||||
|
||||
inline UObjectDeleter *Hashtable::setValueDeleter(UObjectDeleter *fn) {
|
||||
return uhash_setValueDeleter(hash, fn);
|
||||
}
|
||||
|
||||
inline int32_t Hashtable::count() const {
|
||||
return uhash_count(hash);
|
||||
}
|
||||
|
||||
inline void* Hashtable::put(const UnicodeString& key, void* value, UErrorCode& status) {
|
||||
return uhash_put(hash, new UnicodeString(key), value, &status);
|
||||
}
|
||||
|
||||
inline int32_t Hashtable::puti(const UnicodeString& key, int32_t value, UErrorCode& status) {
|
||||
return uhash_puti(hash, new UnicodeString(key), value, &status);
|
||||
}
|
||||
|
||||
inline void* Hashtable::get(const UnicodeString& key) const {
|
||||
return uhash_get(hash, &key);
|
||||
}
|
||||
|
||||
inline int32_t Hashtable::geti(const UnicodeString& key) const {
|
||||
return uhash_geti(hash, &key);
|
||||
}
|
||||
|
||||
inline void* Hashtable::remove(const UnicodeString& key) {
|
||||
return uhash_remove(hash, &key);
|
||||
}
|
||||
|
||||
inline int32_t Hashtable::removei(const UnicodeString& key) {
|
||||
return uhash_removei(hash, &key);
|
||||
}
|
||||
|
||||
inline const UHashElement* Hashtable::find(const UnicodeString& key) const {
|
||||
return uhash_find(hash, &key);
|
||||
}
|
||||
|
||||
inline const UHashElement* Hashtable::nextElement(int32_t& pos) const {
|
||||
return uhash_nextElement(hash, &pos);
|
||||
}
|
||||
|
||||
inline void Hashtable::removeAll(void) {
|
||||
uhash_removeAll(hash);
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif
|
61
extern/icu/source/common/icucfg.h.in
vendored
61
extern/icu/source/common/icucfg.h.in
vendored
@ -1,61 +0,0 @@
|
||||
/* common/icucfg.h.in. Generated automatically from configure.in by autoheader. */
|
||||
|
||||
/* Define if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define if your processor stores words with the most significant
|
||||
byte first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||
#undef WORDS_BIGENDIAN
|
||||
|
||||
/* Copyright (c) 1999-2000, International Business Machines Corporation and
|
||||
others. All Rights Reserved. */
|
||||
/* Define to signed char if not in <sys/types.h> */
|
||||
#undef int8_t
|
||||
|
||||
/* Define to unsigned char if not in <sys/types.h> */
|
||||
#undef uint8_t
|
||||
|
||||
/* Define to signed short if not in <sys/types.h> */
|
||||
#undef int16_t
|
||||
|
||||
/* Define to unsigned short if not in <sys/types.h> */
|
||||
#undef uint16_t
|
||||
|
||||
/* Define to signed long if not in <sys/types.h> */
|
||||
#undef int32_t
|
||||
|
||||
/* Define to unsigned long if not in <sys/types.h> */
|
||||
#undef uint32_t
|
||||
|
||||
/* Define to signed char if not in <sys/types.h> */
|
||||
#undef bool_t
|
||||
|
||||
/* Define if your system has <wchar.h> */
|
||||
#undef HAVE_WCHAR_H
|
||||
|
||||
/* Define to the size of wchar_t */
|
||||
#undef SIZEOF_WCHAR_T
|
||||
|
||||
/* Define if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define if you have the cma library (-lcma). */
|
||||
#undef HAVE_LIBCMA
|
||||
|
||||
/* Define if you have the dl library (-ldl). */
|
||||
#undef HAVE_LIBDL
|
||||
|
||||
/* Define if you have the dld library (-ldld). */
|
||||
#undef HAVE_LIBDLD
|
||||
|
||||
/* Define if you have the m library (-lm). */
|
||||
#undef HAVE_LIBM
|
||||
|
||||
/* Define if you have the pthread library (-lpthread). */
|
||||
#undef HAVE_LIBPTHREAD
|
||||
|
||||
/* Define if you have the pthreads library (-lpthreads). */
|
||||
#undef HAVE_LIBPTHREADS
|
||||
|
||||
/* Define if you have the wcs library (-lwcs). */
|
||||
#undef HAVE_LIBWCS
|
927
extern/icu/source/common/iculserv.cpp
vendored
927
extern/icu/source/common/iculserv.cpp
vendored
@ -1,927 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2001-2004, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_SERVICE
|
||||
|
||||
#include "unicode/resbund.h"
|
||||
#include "cmemory.h"
|
||||
#include "iculserv.h"
|
||||
#include "ustrfmt.h"
|
||||
#include "uhash.h"
|
||||
#include "charstr.h"
|
||||
#include "uassert.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
// see LocaleUtility::getAvailableLocaleNames
|
||||
static Hashtable * LocaleUtility_cache = NULL;
|
||||
|
||||
#define UNDERSCORE_CHAR ((UChar)0x005f)
|
||||
#define AT_SIGN_CHAR ((UChar)64)
|
||||
#define PERIOD_CHAR ((UChar)46)
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
UnicodeString&
|
||||
LocaleUtility::canonicalLocaleString(const UnicodeString* id, UnicodeString& result)
|
||||
{
|
||||
if (id == NULL) {
|
||||
result.setToBogus();
|
||||
} else {
|
||||
// Fix case only (no other changes) up to the first '@' or '.' or
|
||||
// end of string, whichever comes first. In 3.0 I changed this to
|
||||
// stop at first '@' or '.'. It used to run out to the end of
|
||||
// string. My fix makes the tests pass but is probably
|
||||
// structurally incorrect. See below. [alan 3.0]
|
||||
|
||||
// TODO: Doug, you might want to revise this...
|
||||
result = *id;
|
||||
int32_t i = 0;
|
||||
int32_t end = result.indexOf(AT_SIGN_CHAR);
|
||||
int32_t n = result.indexOf(PERIOD_CHAR);
|
||||
if (n >= 0 && n < end) {
|
||||
end = n;
|
||||
}
|
||||
if (end < 0) {
|
||||
end = result.length();
|
||||
}
|
||||
n = result.indexOf(UNDERSCORE_CHAR);
|
||||
if (n < 0) {
|
||||
n = end;
|
||||
}
|
||||
for (; i < n; ++i) {
|
||||
UChar c = result.charAt(i);
|
||||
if (c >= 0x0041 && c <= 0x005a) {
|
||||
c += 0x20;
|
||||
result.setCharAt(i, c);
|
||||
}
|
||||
}
|
||||
for (n = end; i < n; ++i) {
|
||||
UChar c = result.charAt(i);
|
||||
if (c >= 0x0061 && c <= 0x007a) {
|
||||
c -= 0x20;
|
||||
result.setCharAt(i, c);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
#if 0
|
||||
// This code does a proper full level 2 canonicalization of id.
|
||||
// It's nasty to go from UChar to char to char to UChar -- but
|
||||
// that's what you have to do to use the uloc_canonicalize
|
||||
// function on UnicodeStrings.
|
||||
|
||||
// I ended up doing the alternate fix (see above) not for
|
||||
// performance reasons, although performance will certainly be
|
||||
// better, but because doing a full level 2 canonicalization
|
||||
// causes some tests to fail. [alan 3.0]
|
||||
|
||||
// TODO: Doug, you might want to revisit this...
|
||||
result.setToBogus();
|
||||
if (id != 0) {
|
||||
int32_t buflen = id->length() + 8; // space for NUL
|
||||
char* buf = (char*) uprv_malloc(buflen);
|
||||
char* canon = (buf == 0) ? 0 : (char*) uprv_malloc(buflen);
|
||||
if (buf != 0 && canon != 0) {
|
||||
U_ASSERT(id->extract(0, INT32_MAX, buf, buflen) < buflen);
|
||||
UErrorCode ec = U_ZERO_ERROR;
|
||||
uloc_canonicalize(buf, canon, buflen, &ec);
|
||||
if (U_SUCCESS(ec)) {
|
||||
result = UnicodeString(canon);
|
||||
}
|
||||
}
|
||||
uprv_free(buf);
|
||||
uprv_free(canon);
|
||||
}
|
||||
return result;
|
||||
#endif
|
||||
}
|
||||
|
||||
Locale&
|
||||
LocaleUtility::initLocaleFromName(const UnicodeString& id, Locale& result)
|
||||
{
|
||||
if (id.isBogus()) {
|
||||
result.setToBogus();
|
||||
} else {
|
||||
const int32_t BUFLEN = 128; // larger than ever needed
|
||||
char buffer[BUFLEN];
|
||||
int len = id.extract(0, BUFLEN, buffer);
|
||||
if (len >= BUFLEN) {
|
||||
result.setToBogus();
|
||||
} else {
|
||||
buffer[len] = '\0';
|
||||
result = Locale::createFromName(buffer);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
LocaleUtility::initNameFromLocale(const Locale& locale, UnicodeString& result)
|
||||
{
|
||||
if (locale.isBogus()) {
|
||||
result.setToBogus();
|
||||
} else {
|
||||
result.append(locale.getName());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
const Hashtable*
|
||||
LocaleUtility::getAvailableLocaleNames(const UnicodeString& bundleID)
|
||||
{
|
||||
// LocaleUtility_cache is a hash-of-hashes. The top-level keys
|
||||
// are path strings ('bundleID') passed to
|
||||
// ures_openAvailableLocales. The top-level values are
|
||||
// second-level hashes. The second-level keys are result strings
|
||||
// from ures_openAvailableLocales. The second-level values are
|
||||
// garbage ((void*)1 or other random pointer).
|
||||
|
||||
Hashtable* cache;
|
||||
umtx_lock(NULL);
|
||||
cache = LocaleUtility_cache;
|
||||
umtx_unlock(NULL);
|
||||
|
||||
if (cache == NULL) {
|
||||
cache = new Hashtable();
|
||||
if (cache == NULL) {
|
||||
return NULL; // catastrophic failure; e.g. out of memory
|
||||
}
|
||||
cache->setValueDeleter(uhash_deleteHashtable);
|
||||
Hashtable* h; // set this to final LocaleUtility_cache value
|
||||
umtx_lock(NULL);
|
||||
h = LocaleUtility_cache;
|
||||
if (h == NULL) {
|
||||
LocaleUtility_cache = h = cache;
|
||||
cache = NULL;
|
||||
}
|
||||
umtx_unlock(NULL);
|
||||
delete cache;
|
||||
cache = h;
|
||||
}
|
||||
|
||||
U_ASSERT(cache != NULL);
|
||||
|
||||
Hashtable* htp;
|
||||
umtx_lock(NULL);
|
||||
htp = (Hashtable*) cache->get(bundleID);
|
||||
umtx_unlock(NULL);
|
||||
|
||||
if (htp == NULL) {
|
||||
htp = new Hashtable();
|
||||
if (htp) {
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
CharString cbundleID(bundleID);
|
||||
const char* path = (const char*) cbundleID;
|
||||
if (*path == 0) path = NULL; // empty string => NULL
|
||||
UEnumeration *uenum = ures_openAvailableLocales(path, &status);
|
||||
for (;;) {
|
||||
const UChar* id = uenum_unext(uenum, NULL, &status);
|
||||
if (id == NULL) {
|
||||
break;
|
||||
}
|
||||
htp->put(UnicodeString(id), (void*)htp, status);
|
||||
}
|
||||
uenum_close(uenum);
|
||||
if (U_FAILURE(status)) {
|
||||
delete htp;
|
||||
return NULL;
|
||||
}
|
||||
umtx_lock(NULL);
|
||||
cache->put(bundleID, (void*)htp, status);
|
||||
umtx_unlock(NULL);
|
||||
}
|
||||
}
|
||||
return htp;
|
||||
}
|
||||
|
||||
UBool
|
||||
LocaleUtility::isFallbackOf(const UnicodeString& root, const UnicodeString& child)
|
||||
{
|
||||
return child.indexOf(root) == 0 &&
|
||||
(child.length() == root.length() ||
|
||||
child.charAt(root.length()) == UNDERSCORE_CHAR);
|
||||
}
|
||||
|
||||
UBool
|
||||
LocaleUtility::cleanup(void) {
|
||||
if (LocaleUtility_cache) {
|
||||
delete LocaleUtility_cache;
|
||||
LocaleUtility_cache = NULL;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
const int32_t LocaleKey::KIND_ANY = -1;
|
||||
|
||||
LocaleKey*
|
||||
LocaleKey::createWithCanonicalFallback(const UnicodeString* primaryID,
|
||||
const UnicodeString* canonicalFallbackID,
|
||||
UErrorCode& status)
|
||||
{
|
||||
return LocaleKey::createWithCanonicalFallback(primaryID, canonicalFallbackID, KIND_ANY, status);
|
||||
}
|
||||
|
||||
LocaleKey*
|
||||
LocaleKey::createWithCanonicalFallback(const UnicodeString* primaryID,
|
||||
const UnicodeString* canonicalFallbackID,
|
||||
int32_t kind,
|
||||
UErrorCode& status)
|
||||
{
|
||||
if (primaryID == NULL || U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
UnicodeString canonicalPrimaryID;
|
||||
LocaleUtility::canonicalLocaleString(primaryID, canonicalPrimaryID);
|
||||
return new LocaleKey(*primaryID, canonicalPrimaryID, canonicalFallbackID, kind);
|
||||
}
|
||||
|
||||
LocaleKey::LocaleKey(const UnicodeString& primaryID,
|
||||
const UnicodeString& canonicalPrimaryID,
|
||||
const UnicodeString* canonicalFallbackID,
|
||||
int32_t kind)
|
||||
: ICUServiceKey(primaryID)
|
||||
, _kind(kind)
|
||||
, _primaryID(canonicalPrimaryID)
|
||||
, _fallbackID()
|
||||
, _currentID()
|
||||
{
|
||||
_fallbackID.setToBogus();
|
||||
if (_primaryID.length() != 0) {
|
||||
if (canonicalFallbackID != NULL && _primaryID != *canonicalFallbackID) {
|
||||
_fallbackID = *canonicalFallbackID;
|
||||
}
|
||||
}
|
||||
|
||||
_currentID = _primaryID;
|
||||
}
|
||||
|
||||
LocaleKey::~LocaleKey() {}
|
||||
|
||||
UnicodeString&
|
||||
LocaleKey::prefix(UnicodeString& result) const {
|
||||
if (_kind != KIND_ANY) {
|
||||
UChar buffer[64];
|
||||
uprv_itou(buffer, 64, _kind, 10, 0);
|
||||
UnicodeString temp(buffer);
|
||||
result.append(temp);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int32_t
|
||||
LocaleKey::kind() const {
|
||||
return _kind;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
LocaleKey::canonicalID(UnicodeString& result) const {
|
||||
return result.append(_primaryID);
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
LocaleKey::currentID(UnicodeString& result) const {
|
||||
if (!_currentID.isBogus()) {
|
||||
result.append(_currentID);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
LocaleKey::currentDescriptor(UnicodeString& result) const {
|
||||
if (!_currentID.isBogus()) {
|
||||
prefix(result).append(PREFIX_DELIMITER).append(_currentID);
|
||||
} else {
|
||||
result.setToBogus();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Locale&
|
||||
LocaleKey::canonicalLocale(Locale& result) const {
|
||||
return LocaleUtility::initLocaleFromName(_primaryID, result);
|
||||
}
|
||||
|
||||
Locale&
|
||||
LocaleKey::currentLocale(Locale& result) const {
|
||||
return LocaleUtility::initLocaleFromName(_currentID, result);
|
||||
}
|
||||
|
||||
UBool
|
||||
LocaleKey::fallback() {
|
||||
if (!_currentID.isBogus()) {
|
||||
int x = _currentID.lastIndexOf(UNDERSCORE_CHAR);
|
||||
if (x != -1) {
|
||||
_currentID.remove(x); // truncate current or fallback, whichever we're pointing to
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!_fallbackID.isBogus()) {
|
||||
_currentID = _fallbackID;
|
||||
_fallbackID.setToBogus();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (_currentID.length() > 0) {
|
||||
_currentID.remove(0); // completely truncate
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
_currentID.setToBogus();
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
UBool
|
||||
LocaleKey::isFallbackOf(const UnicodeString& id) const {
|
||||
UnicodeString temp(id);
|
||||
parseSuffix(temp);
|
||||
return temp.indexOf(_primaryID) == 0 &&
|
||||
(temp.length() == _primaryID.length() ||
|
||||
temp.charAt(_primaryID.length()) == UNDERSCORE_CHAR);
|
||||
}
|
||||
|
||||
#ifdef SERVICE_DEBUG
|
||||
UnicodeString&
|
||||
LocaleKey::debug(UnicodeString& result) const
|
||||
{
|
||||
ICUServiceKey::debug(result);
|
||||
result.append(" kind: ");
|
||||
result.append(_kind);
|
||||
result.append(" primaryID: ");
|
||||
result.append(_primaryID);
|
||||
result.append(" fallbackID: ");
|
||||
result.append(_fallbackID);
|
||||
result.append(" currentID: ");
|
||||
result.append(_currentID);
|
||||
return result;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
LocaleKey::debugClass(UnicodeString& result) const
|
||||
{
|
||||
return result.append("LocaleKey ");
|
||||
}
|
||||
#endif
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(LocaleKey)
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
LocaleKeyFactory::LocaleKeyFactory(int32_t coverage)
|
||||
: _name()
|
||||
, _coverage(coverage)
|
||||
{
|
||||
}
|
||||
|
||||
LocaleKeyFactory::LocaleKeyFactory(int32_t coverage, const UnicodeString& name)
|
||||
: _name(name)
|
||||
, _coverage(coverage)
|
||||
{
|
||||
}
|
||||
|
||||
LocaleKeyFactory::~LocaleKeyFactory() {
|
||||
}
|
||||
|
||||
UObject*
|
||||
LocaleKeyFactory::create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const {
|
||||
if (handlesKey(key, status)) {
|
||||
const LocaleKey& lkey = (const LocaleKey&)key;
|
||||
int32_t kind = lkey.kind();
|
||||
Locale loc;
|
||||
lkey.currentLocale(loc);
|
||||
|
||||
return handleCreate(loc, kind, service, status);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UBool
|
||||
LocaleKeyFactory::handlesKey(const ICUServiceKey& key, UErrorCode& status) const {
|
||||
const Hashtable* supported = getSupportedIDs(status);
|
||||
if (supported) {
|
||||
UnicodeString id;
|
||||
key.currentID(id);
|
||||
return supported->get(id) != NULL;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
LocaleKeyFactory::updateVisibleIDs(Hashtable& result, UErrorCode& status) const {
|
||||
const Hashtable* supported = getSupportedIDs(status);
|
||||
if (supported) {
|
||||
UBool visible = (_coverage & 0x1) == 0;
|
||||
|
||||
const UHashElement* elem = NULL;
|
||||
int32_t pos = 0;
|
||||
while ((elem = supported->nextElement(pos)) != NULL) {
|
||||
const UnicodeString& id = *((const UnicodeString*)elem->key.pointer);
|
||||
if (!visible) {
|
||||
result.remove(id);
|
||||
} else {
|
||||
result.put(id, (void*)this, status); // this is dummy non-void marker used for set semantics
|
||||
if (U_FAILURE(status)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
LocaleKeyFactory::getDisplayName(const UnicodeString& id, const Locale& locale, UnicodeString& result) const {
|
||||
if ((_coverage & 0x1) == 0) {
|
||||
//UErrorCode status = U_ZERO_ERROR;
|
||||
// assume if this is called on us, we support some fallback of this id
|
||||
// if (isSupportedID(id, status)) {
|
||||
Locale loc;
|
||||
LocaleUtility::initLocaleFromName(id, loc);
|
||||
return loc.getDisplayName(locale, result);
|
||||
// }
|
||||
}
|
||||
result.setToBogus();
|
||||
return result;
|
||||
}
|
||||
|
||||
UObject*
|
||||
LocaleKeyFactory::handleCreate(const Locale& /* loc */,
|
||||
int32_t /* kind */,
|
||||
const ICUService* /* service */,
|
||||
UErrorCode& /* status */) const {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UBool
|
||||
LocaleKeyFactory::isSupportedID(const UnicodeString& id, UErrorCode& status) const {
|
||||
const Hashtable* ids = getSupportedIDs(status);
|
||||
return ids && ids->get(id);
|
||||
}
|
||||
|
||||
const Hashtable*
|
||||
LocaleKeyFactory::getSupportedIDs(UErrorCode& /* status */) const {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef SERVICE_DEBUG
|
||||
UnicodeString&
|
||||
LocaleKeyFactory::debug(UnicodeString& result) const
|
||||
{
|
||||
debugClass(result);
|
||||
result.append(", name: ");
|
||||
result.append(_name);
|
||||
result.append(", coverage: ");
|
||||
result.append(_coverage);
|
||||
return result;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
LocaleKeyFactory::debugClass(UnicodeString& result) const
|
||||
{
|
||||
return result.append("LocaleKeyFactory");
|
||||
}
|
||||
#endif
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(LocaleKeyFactory)
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
SimpleLocaleKeyFactory::SimpleLocaleKeyFactory(UObject* objToAdopt,
|
||||
const UnicodeString& locale,
|
||||
int32_t kind,
|
||||
int32_t coverage)
|
||||
: LocaleKeyFactory(coverage)
|
||||
, _obj(objToAdopt)
|
||||
, _id(locale)
|
||||
, _kind(kind)
|
||||
{
|
||||
}
|
||||
|
||||
SimpleLocaleKeyFactory::SimpleLocaleKeyFactory(UObject* objToAdopt,
|
||||
const Locale& locale,
|
||||
int32_t kind,
|
||||
int32_t coverage)
|
||||
: LocaleKeyFactory(coverage)
|
||||
, _obj(objToAdopt)
|
||||
, _id()
|
||||
, _kind(kind)
|
||||
{
|
||||
LocaleUtility::initNameFromLocale(locale, _id);
|
||||
}
|
||||
|
||||
SimpleLocaleKeyFactory::~SimpleLocaleKeyFactory()
|
||||
{
|
||||
delete _obj;
|
||||
_obj = NULL;
|
||||
}
|
||||
|
||||
UObject*
|
||||
SimpleLocaleKeyFactory::create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const
|
||||
{
|
||||
if (U_SUCCESS(status)) {
|
||||
const LocaleKey& lkey = (const LocaleKey&)key;
|
||||
if (_kind == LocaleKey::KIND_ANY || _kind == lkey.kind()) {
|
||||
UnicodeString keyID;
|
||||
lkey.currentID(keyID);
|
||||
if (_id == keyID) {
|
||||
return service->cloneInstance(_obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UBool
|
||||
SimpleLocaleKeyFactory::isSupportedID(const UnicodeString& id, UErrorCode& /* status */) const
|
||||
{
|
||||
return id == _id;
|
||||
}
|
||||
|
||||
void
|
||||
SimpleLocaleKeyFactory::updateVisibleIDs(Hashtable& result, UErrorCode& status) const
|
||||
{
|
||||
if (U_SUCCESS(status)) {
|
||||
if (_coverage & 0x1) {
|
||||
result.remove(_id);
|
||||
} else {
|
||||
result.put(_id, (void*)this, status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef SERVICE_DEBUG
|
||||
UnicodeString&
|
||||
SimpleLocaleKeyFactory::debug(UnicodeString& result) const
|
||||
{
|
||||
LocaleKeyFactory::debug(result);
|
||||
result.append(", id: ");
|
||||
result.append(_id);
|
||||
result.append(", kind: ");
|
||||
result.append(_kind);
|
||||
return result;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
SimpleLocaleKeyFactory::debugClass(UnicodeString& result) const
|
||||
{
|
||||
return result.append("SimpleLocaleKeyFactory");
|
||||
}
|
||||
#endif
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SimpleLocaleKeyFactory)
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
ICUResourceBundleFactory::ICUResourceBundleFactory()
|
||||
: LocaleKeyFactory(VISIBLE)
|
||||
, _bundleName()
|
||||
{
|
||||
}
|
||||
|
||||
ICUResourceBundleFactory::ICUResourceBundleFactory(const UnicodeString& bundleName)
|
||||
: LocaleKeyFactory(VISIBLE)
|
||||
, _bundleName(bundleName)
|
||||
{
|
||||
}
|
||||
|
||||
ICUResourceBundleFactory::~ICUResourceBundleFactory() {}
|
||||
|
||||
const Hashtable*
|
||||
ICUResourceBundleFactory::getSupportedIDs(UErrorCode& status) const
|
||||
{
|
||||
if (U_SUCCESS(status)) {
|
||||
return LocaleUtility::getAvailableLocaleNames(_bundleName);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UObject*
|
||||
ICUResourceBundleFactory::handleCreate(const Locale& loc, int32_t /* kind */, const ICUService* /* service */, UErrorCode& status) const
|
||||
{
|
||||
if (U_SUCCESS(status)) {
|
||||
return new ResourceBundle(_bundleName, loc, status);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef SERVICE_DEBUG
|
||||
UnicodeString&
|
||||
ICUResourceBundleFactory::debug(UnicodeString& result) const
|
||||
{
|
||||
LocaleKeyFactory::debug(result);
|
||||
result.append(", bundle: ");
|
||||
return result.append(_bundleName);
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
ICUResourceBundleFactory::debugClass(UnicodeString& result) const
|
||||
{
|
||||
return result.append("ICUResourceBundleFactory");
|
||||
}
|
||||
#endif
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ICUResourceBundleFactory)
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
ICULocaleService::ICULocaleService()
|
||||
: fallbackLocale(Locale::getDefault())
|
||||
, llock(0)
|
||||
{
|
||||
umtx_init(&llock);
|
||||
}
|
||||
|
||||
ICULocaleService::ICULocaleService(const UnicodeString& dname)
|
||||
: ICUService(dname)
|
||||
, fallbackLocale(Locale::getDefault())
|
||||
, llock(0)
|
||||
{
|
||||
umtx_init(&llock);
|
||||
}
|
||||
|
||||
ICULocaleService::~ICULocaleService()
|
||||
{
|
||||
umtx_destroy(&llock);
|
||||
}
|
||||
|
||||
UObject*
|
||||
ICULocaleService::get(const Locale& locale, UErrorCode& status) const
|
||||
{
|
||||
return get(locale, LocaleKey::KIND_ANY, NULL, status);
|
||||
}
|
||||
|
||||
UObject*
|
||||
ICULocaleService::get(const Locale& locale, int32_t kind, UErrorCode& status) const
|
||||
{
|
||||
return get(locale, kind, NULL, status);
|
||||
}
|
||||
|
||||
UObject*
|
||||
ICULocaleService::get(const Locale& locale, Locale* actualReturn, UErrorCode& status) const
|
||||
{
|
||||
return get(locale, LocaleKey::KIND_ANY, actualReturn, status);
|
||||
}
|
||||
|
||||
UObject*
|
||||
ICULocaleService::get(const Locale& locale, int32_t kind, Locale* actualReturn, UErrorCode& status) const
|
||||
{
|
||||
UObject* result = NULL;
|
||||
if (U_FAILURE(status)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
UnicodeString locName(locale.getName(), "");
|
||||
if (locName.isBogus()) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
} else {
|
||||
ICUServiceKey* key = createKey(&locName, kind, status);
|
||||
if (key) {
|
||||
if (actualReturn == NULL) {
|
||||
result = getKey(*key, status);
|
||||
} else {
|
||||
UnicodeString temp;
|
||||
result = getKey(*key, &temp, status);
|
||||
|
||||
if (result != NULL) {
|
||||
key->parseSuffix(temp);
|
||||
LocaleUtility::initLocaleFromName(temp, *actualReturn);
|
||||
}
|
||||
}
|
||||
delete key;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
URegistryKey
|
||||
ICULocaleService::registerInstance(UObject* objToAdopt, const UnicodeString& locale,
|
||||
UBool visible, UErrorCode& status)
|
||||
{
|
||||
Locale loc;
|
||||
LocaleUtility::initLocaleFromName(locale, loc);
|
||||
return registerInstance(objToAdopt, loc, LocaleKey::KIND_ANY,
|
||||
visible ? LocaleKeyFactory::VISIBLE : LocaleKeyFactory::INVISIBLE, status);
|
||||
}
|
||||
|
||||
URegistryKey
|
||||
ICULocaleService::registerInstance(UObject* objToAdopt, const Locale& locale, UErrorCode& status)
|
||||
{
|
||||
return registerInstance(objToAdopt, locale, LocaleKey::KIND_ANY, LocaleKeyFactory::VISIBLE, status);
|
||||
}
|
||||
|
||||
URegistryKey
|
||||
ICULocaleService::registerInstance(UObject* objToAdopt, const Locale& locale, int32_t kind, UErrorCode& status)
|
||||
{
|
||||
return registerInstance(objToAdopt, locale, kind, LocaleKeyFactory::VISIBLE, status);
|
||||
}
|
||||
|
||||
URegistryKey
|
||||
ICULocaleService::registerInstance(UObject* objToAdopt, const Locale& locale, int32_t kind, int32_t coverage, UErrorCode& status)
|
||||
{
|
||||
ICUServiceFactory * factory = new SimpleLocaleKeyFactory(objToAdopt, locale, kind, coverage);
|
||||
if (factory != NULL) {
|
||||
return registerFactory(factory, status);
|
||||
}
|
||||
delete objToAdopt;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if 0
|
||||
URegistryKey
|
||||
ICULocaleService::registerInstance(UObject* objToAdopt, const UnicodeString& locale, UErrorCode& status)
|
||||
{
|
||||
return registerInstance(objToAdopt, locale, LocaleKey::KIND_ANY, LocaleKeyFactory::VISIBLE, status);
|
||||
}
|
||||
|
||||
URegistryKey
|
||||
ICULocaleService::registerInstance(UObject* objToAdopt, const UnicodeString& locale, UBool visible, UErrorCode& status)
|
||||
{
|
||||
return registerInstance(objToAdopt, locale, LocaleKey::KIND_ANY,
|
||||
visible ? LocaleKeyFactory::VISIBLE : LocaleKeyFactory::INVISIBLE,
|
||||
status);
|
||||
}
|
||||
|
||||
URegistryKey
|
||||
ICULocaleService::registerInstance(UObject* objToAdopt, const UnicodeString& locale, int32_t kind, int32_t coverage, UErrorCode& status)
|
||||
{
|
||||
ICUServiceFactory * factory = new SimpleLocaleKeyFactory(objToAdopt, locale, kind, coverage);
|
||||
if (factory != NULL) {
|
||||
return registerFactory(factory, status);
|
||||
}
|
||||
delete objToAdopt;
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
class ServiceEnumeration : public StringEnumeration {
|
||||
private:
|
||||
const ICULocaleService* _service;
|
||||
int32_t _timestamp;
|
||||
UVector _ids;
|
||||
int32_t _pos;
|
||||
|
||||
private:
|
||||
ServiceEnumeration(const ICULocaleService* service, UErrorCode &status)
|
||||
: _service(service)
|
||||
, _timestamp(service->getTimestamp())
|
||||
, _ids(uhash_deleteUnicodeString, NULL, status)
|
||||
, _pos(0)
|
||||
{
|
||||
_service->getVisibleIDs(_ids, status);
|
||||
}
|
||||
|
||||
ServiceEnumeration(const ServiceEnumeration &other, UErrorCode &status)
|
||||
: _service(other._service)
|
||||
, _timestamp(other._timestamp)
|
||||
, _ids(uhash_deleteUnicodeString, NULL, status)
|
||||
, _pos(0)
|
||||
{
|
||||
if(U_SUCCESS(status)) {
|
||||
int32_t i, length;
|
||||
|
||||
length = other._ids.size();
|
||||
for(i = 0; i < length; ++i) {
|
||||
_ids.addElement(((UnicodeString *)other._ids.elementAt(i))->clone(), status);
|
||||
}
|
||||
|
||||
if(U_SUCCESS(status)) {
|
||||
_pos = other._pos;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
static ServiceEnumeration* create(const ICULocaleService* service) {
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
ServiceEnumeration* result = new ServiceEnumeration(service, status);
|
||||
if (U_SUCCESS(status)) {
|
||||
return result;
|
||||
}
|
||||
delete result;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
virtual ~ServiceEnumeration() {}
|
||||
|
||||
virtual StringEnumeration *clone() const {
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
ServiceEnumeration *cl = new ServiceEnumeration(*this, status);
|
||||
if(U_FAILURE(status)) {
|
||||
delete cl;
|
||||
cl = NULL;
|
||||
}
|
||||
return cl;
|
||||
}
|
||||
|
||||
virtual int32_t count(UErrorCode& status) const {
|
||||
return upToDate(status) ? _ids.size() : 0;
|
||||
}
|
||||
|
||||
const UnicodeString* snext(UErrorCode& status) {
|
||||
if (upToDate(status) && (_pos < _ids.size())) {
|
||||
return (const UnicodeString*)_ids[_pos++];
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UBool upToDate(UErrorCode& status) const {
|
||||
if (U_SUCCESS(status)) {
|
||||
if (_timestamp == _service->getTimestamp()) {
|
||||
return TRUE;
|
||||
}
|
||||
status = U_ENUM_OUT_OF_SYNC_ERROR;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void reset(UErrorCode& status) {
|
||||
if (status == U_ENUM_OUT_OF_SYNC_ERROR) {
|
||||
status = U_ZERO_ERROR;
|
||||
}
|
||||
if (U_SUCCESS(status)) {
|
||||
_timestamp = _service->getTimestamp();
|
||||
_pos = 0;
|
||||
_service->getVisibleIDs(_ids, status);
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
static UClassID getStaticClassID(void);
|
||||
virtual UClassID getDynamicClassID(void) const;
|
||||
};
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ServiceEnumeration)
|
||||
|
||||
StringEnumeration*
|
||||
ICULocaleService::getAvailableLocales(void) const
|
||||
{
|
||||
return ServiceEnumeration::create(this);
|
||||
}
|
||||
|
||||
const UnicodeString&
|
||||
ICULocaleService::validateFallbackLocale() const
|
||||
{
|
||||
const Locale& loc = Locale::getDefault();
|
||||
ICULocaleService* ncThis = (ICULocaleService*)this;
|
||||
{
|
||||
Mutex mutex(&ncThis->llock);
|
||||
if (loc != fallbackLocale) {
|
||||
ncThis->fallbackLocale = loc;
|
||||
LocaleUtility::initNameFromLocale(loc, ncThis->fallbackLocaleName);
|
||||
ncThis->clearServiceCache();
|
||||
}
|
||||
}
|
||||
return fallbackLocaleName;
|
||||
}
|
||||
|
||||
ICUServiceKey*
|
||||
ICULocaleService::createKey(const UnicodeString* id, UErrorCode& status) const
|
||||
{
|
||||
return LocaleKey::createWithCanonicalFallback(id, &validateFallbackLocale(), status);
|
||||
}
|
||||
|
||||
ICUServiceKey*
|
||||
ICULocaleService::createKey(const UnicodeString* id, int32_t kind, UErrorCode& status) const
|
||||
{
|
||||
return LocaleKey::createWithCanonicalFallback(id, &validateFallbackLocale(), kind, status);
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
// defined in ucln_cmn.h
|
||||
|
||||
/**
|
||||
* Release all static memory held by Locale Utility.
|
||||
*/
|
||||
U_CFUNC UBool service_cleanup(void) {
|
||||
return LocaleUtility::cleanup();
|
||||
}
|
||||
|
||||
/* !UCONFIG_NO_SERVICE */
|
||||
#endif
|
||||
|
||||
|
560
extern/icu/source/common/iculserv.h
vendored
560
extern/icu/source/common/iculserv.h
vendored
@ -1,560 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2001-2004, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef ICULSERV_H
|
||||
#define ICULSERV_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if UCONFIG_NO_SERVICE
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/*
|
||||
* Allow the declaration of APIs with pointers to ICUService
|
||||
* even when service is removed from the build.
|
||||
*/
|
||||
class ICULocaleService;
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#else
|
||||
|
||||
#include "unicode/unistr.h"
|
||||
#include "unicode/locid.h"
|
||||
#include "unicode/strenum.h"
|
||||
|
||||
#include "hash.h"
|
||||
#include "uvector.h"
|
||||
|
||||
#include "icuserv.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
class ICULocaleService;
|
||||
|
||||
class LocaleKey;
|
||||
class LocaleKeyFactory;
|
||||
class SimpleLocaleKeyFactory;
|
||||
class ServiceListener;
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* A subclass of Key that implements a locale fallback mechanism.
|
||||
* The first locale to search for is the locale provided by the
|
||||
* client, and the fallback locale to search for is the current
|
||||
* default locale. If a prefix is present, the currentDescriptor
|
||||
* includes it before the locale proper, separated by "/". This
|
||||
* is the default key instantiated by ICULocaleService.</p>
|
||||
*
|
||||
* <p>Canonicalization adjusts the locale string so that the
|
||||
* section before the first understore is in lower case, and the rest
|
||||
* is in upper case, with no trailing underscores.</p>
|
||||
*/
|
||||
|
||||
class U_COMMON_API LocaleKey : public ICUServiceKey {
|
||||
private:
|
||||
int32_t _kind;
|
||||
UnicodeString _primaryID;
|
||||
UnicodeString _fallbackID;
|
||||
UnicodeString _currentID;
|
||||
|
||||
public:
|
||||
static const int32_t KIND_ANY; // = -1;
|
||||
|
||||
/**
|
||||
* Create a LocaleKey with canonical primary and fallback IDs.
|
||||
*/
|
||||
static LocaleKey* createWithCanonicalFallback(const UnicodeString* primaryID,
|
||||
const UnicodeString* canonicalFallbackID,
|
||||
UErrorCode& status);
|
||||
|
||||
/**
|
||||
* Create a LocaleKey with canonical primary and fallback IDs.
|
||||
*/
|
||||
static LocaleKey* createWithCanonicalFallback(const UnicodeString* primaryID,
|
||||
const UnicodeString* canonicalFallbackID,
|
||||
int32_t kind,
|
||||
UErrorCode& status);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* PrimaryID is the user's requested locale string,
|
||||
* canonicalPrimaryID is this string in canonical form,
|
||||
* fallbackID is the current default locale's string in
|
||||
* canonical form.
|
||||
*/
|
||||
LocaleKey(const UnicodeString& primaryID,
|
||||
const UnicodeString& canonicalPrimaryID,
|
||||
const UnicodeString* canonicalFallbackID,
|
||||
int32_t kind);
|
||||
|
||||
public:
|
||||
/**
|
||||
* Append the prefix associated with the kind, or nothing if the kind is KIND_ANY.
|
||||
*/
|
||||
virtual UnicodeString& prefix(UnicodeString& result) const;
|
||||
|
||||
/**
|
||||
* Return the kind code associated with this key.
|
||||
*/
|
||||
virtual int32_t kind() const;
|
||||
|
||||
/**
|
||||
* Return the canonicalID.
|
||||
*/
|
||||
virtual UnicodeString& canonicalID(UnicodeString& result) const;
|
||||
|
||||
/**
|
||||
* Return the currentID.
|
||||
*/
|
||||
virtual UnicodeString& currentID(UnicodeString& result) const;
|
||||
|
||||
/**
|
||||
* Return the (canonical) current descriptor, or null if no current id.
|
||||
*/
|
||||
virtual UnicodeString& currentDescriptor(UnicodeString& result) const;
|
||||
|
||||
/**
|
||||
* Convenience method to return the locale corresponding to the (canonical) original ID.
|
||||
*/
|
||||
virtual Locale& canonicalLocale(Locale& result) const;
|
||||
|
||||
/**
|
||||
* Convenience method to return the locale corresponding to the (canonical) current ID.
|
||||
*/
|
||||
virtual Locale& currentLocale(Locale& result) const;
|
||||
|
||||
/**
|
||||
* If the key has a fallback, modify the key and return true,
|
||||
* otherwise return false.</p>
|
||||
*
|
||||
* <p>First falls back through the primary ID, then through
|
||||
* the fallbackID. The final fallback is the empty string,
|
||||
* unless the primary id was the empty string, in which case
|
||||
* there is no fallback.
|
||||
*/
|
||||
virtual UBool fallback();
|
||||
|
||||
/**
|
||||
* Return true if a key created from id matches, or would eventually
|
||||
* fallback to match, the canonical ID of this key.
|
||||
*/
|
||||
virtual UBool isFallbackOf(const UnicodeString& id) const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* UObject boilerplate.
|
||||
*/
|
||||
static UClassID getStaticClassID();
|
||||
|
||||
virtual UClassID getDynamicClassID() const;
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual ~LocaleKey();
|
||||
|
||||
#ifdef SERVICE_DEBUG
|
||||
public:
|
||||
virtual UnicodeString& debug(UnicodeString& result) const;
|
||||
virtual UnicodeString& debugClass(UnicodeString& result) const;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* A subclass of ICUServiceFactory that uses LocaleKeys, and is able to
|
||||
* 'cover' more specific locales with more general locales that it
|
||||
* supports.
|
||||
*
|
||||
* <p>Coverage may be either of the values VISIBLE or INVISIBLE.
|
||||
*
|
||||
* <p>'Visible' indicates that the specific locale(s) supported by
|
||||
* the factory are registered in getSupportedIDs, 'Invisible'
|
||||
* indicates that they are not.
|
||||
*
|
||||
* <p>Localization of visible ids is handled
|
||||
* by the handling factory, regardless of kind.
|
||||
*/
|
||||
class U_COMMON_API LocaleKeyFactory : public ICUServiceFactory {
|
||||
protected:
|
||||
const UnicodeString _name;
|
||||
const int32_t _coverage;
|
||||
|
||||
public:
|
||||
enum {
|
||||
/**
|
||||
* Coverage value indicating that the factory makes
|
||||
* its locales visible, and does not cover more specific
|
||||
* locales.
|
||||
*/
|
||||
VISIBLE = 0,
|
||||
|
||||
/**
|
||||
* Coverage value indicating that the factory does not make
|
||||
* its locales visible, and does not cover more specific
|
||||
* locales.
|
||||
*/
|
||||
INVISIBLE = 1
|
||||
};
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual ~LocaleKeyFactory();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Constructor used by subclasses.
|
||||
*/
|
||||
LocaleKeyFactory(int32_t coverage);
|
||||
|
||||
/**
|
||||
* Constructor used by subclasses.
|
||||
*/
|
||||
LocaleKeyFactory(int32_t coverage, const UnicodeString& name);
|
||||
|
||||
/**
|
||||
* Implement superclass abstract method. This checks the currentID of
|
||||
* the key against the supported IDs, and passes the canonicalLocale and
|
||||
* kind off to handleCreate (which subclasses must implement).
|
||||
*/
|
||||
public:
|
||||
virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const;
|
||||
|
||||
protected:
|
||||
virtual UBool handlesKey(const ICUServiceKey& key, UErrorCode& status) const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Override of superclass method. This adjusts the result based
|
||||
* on the coverage rule for this factory.
|
||||
*/
|
||||
void updateVisibleIDs(Hashtable& result, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Return a localized name for the locale represented by id.
|
||||
*/
|
||||
UnicodeString& getDisplayName(const UnicodeString& id, const Locale& locale, UnicodeString& result) const;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Utility method used by create(ICUServiceKey, ICUService). Subclasses can implement
|
||||
* this instead of create. The default returns NULL.
|
||||
*/
|
||||
virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* service, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Return true if this id is one the factory supports (visible or
|
||||
* otherwise).
|
||||
*/
|
||||
virtual UBool isSupportedID(const UnicodeString& id, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Return the set of ids that this factory supports (visible or
|
||||
* otherwise). This can be called often and might need to be
|
||||
* cached if it is expensive to create.
|
||||
*/
|
||||
virtual const Hashtable* getSupportedIDs(UErrorCode& status) const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* UObject boilerplate.
|
||||
*/
|
||||
static UClassID getStaticClassID();
|
||||
|
||||
virtual UClassID getDynamicClassID() const;
|
||||
|
||||
#ifdef SERVICE_DEBUG
|
||||
public:
|
||||
virtual UnicodeString& debug(UnicodeString& result) const;
|
||||
virtual UnicodeString& debugClass(UnicodeString& result) const;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* A LocaleKeyFactory that just returns a single object for a kind/locale.
|
||||
*/
|
||||
|
||||
class U_COMMON_API SimpleLocaleKeyFactory : public LocaleKeyFactory {
|
||||
private:
|
||||
UObject* _obj;
|
||||
UnicodeString _id;
|
||||
const int32_t _kind;
|
||||
|
||||
public:
|
||||
SimpleLocaleKeyFactory(UObject* objToAdopt,
|
||||
const UnicodeString& locale,
|
||||
int32_t kind,
|
||||
int32_t coverage);
|
||||
|
||||
SimpleLocaleKeyFactory(UObject* objToAdopt,
|
||||
const Locale& locale,
|
||||
int32_t kind,
|
||||
int32_t coverage);
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual ~SimpleLocaleKeyFactory();
|
||||
|
||||
/**
|
||||
* Override of superclass method. Returns the service object if kind/locale match. Service is not used.
|
||||
*/
|
||||
UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Override of superclass method. This adjusts the result based
|
||||
* on the coverage rule for this factory.
|
||||
*/
|
||||
void updateVisibleIDs(Hashtable& result, UErrorCode& status) const;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Return true if this id is equal to the locale name.
|
||||
*/
|
||||
virtual UBool isSupportedID(const UnicodeString& id, UErrorCode& status) const;
|
||||
|
||||
|
||||
public:
|
||||
/**
|
||||
* UObject boilerplate.
|
||||
*/
|
||||
static UClassID getStaticClassID();
|
||||
|
||||
virtual UClassID getDynamicClassID() const;
|
||||
|
||||
#ifdef SERVICE_DEBUG
|
||||
public:
|
||||
virtual UnicodeString& debug(UnicodeString& result) const;
|
||||
virtual UnicodeString& debugClass(UnicodeString& result) const;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* A LocaleKeyFactory that creates a service based on the ICU locale data.
|
||||
* This is a base class for most ICU factories. Subclasses instantiate it
|
||||
* with a constructor that takes a bundle name, which determines the supported
|
||||
* IDs. Subclasses then override handleCreate to create the actual service
|
||||
* object. The default implementation returns a resource bundle.
|
||||
*/
|
||||
class U_COMMON_API ICUResourceBundleFactory : public LocaleKeyFactory
|
||||
{
|
||||
protected:
|
||||
UnicodeString _bundleName;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Convenience constructor that uses the main ICU bundle name.
|
||||
*/
|
||||
ICUResourceBundleFactory();
|
||||
|
||||
/**
|
||||
* A service factory based on ICU resource data in resources with
|
||||
* the given name. This should be a 'path' that can be passed to
|
||||
* ures_openAvailableLocales, such as U_ICUDATA or U_ICUDATA_COLL.
|
||||
* The empty string is equivalent to U_ICUDATA.
|
||||
*/
|
||||
ICUResourceBundleFactory(const UnicodeString& bundleName);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~ICUResourceBundleFactory();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Return the supported IDs. This is the set of all locale names in ICULocaleData.
|
||||
*/
|
||||
virtual const Hashtable* getSupportedIDs(UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Create the service. The default implementation returns the resource bundle
|
||||
* for the locale, ignoring kind, and service.
|
||||
*/
|
||||
virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* service, UErrorCode& status) const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* UObject boilerplate.
|
||||
*/
|
||||
static UClassID getStaticClassID();
|
||||
virtual UClassID getDynamicClassID() const;
|
||||
|
||||
|
||||
#ifdef SERVICE_DEBUG
|
||||
public:
|
||||
virtual UnicodeString& debug(UnicodeString& result) const;
|
||||
virtual UnicodeString& debugClass(UnicodeString& result) const;
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
class U_COMMON_API ICULocaleService : public ICUService
|
||||
{
|
||||
private:
|
||||
Locale fallbackLocale;
|
||||
UnicodeString fallbackLocaleName;
|
||||
UMTX llock;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Construct an ICULocaleService.
|
||||
*/
|
||||
ICULocaleService();
|
||||
|
||||
/**
|
||||
* Construct an ICULocaleService with a name (useful for debugging).
|
||||
*/
|
||||
ICULocaleService(const UnicodeString& name);
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual ~ICULocaleService();
|
||||
|
||||
#if 0
|
||||
// redeclare because of overload resolution rules?
|
||||
// no, causes ambiguities since both UnicodeString and Locale have constructors that take a const char*
|
||||
// need some compiler flag to remove warnings
|
||||
UObject* get(const UnicodeString& descriptor, UErrorCode& status) const {
|
||||
return ICUService::get(descriptor, status);
|
||||
}
|
||||
|
||||
UObject* get(const UnicodeString& descriptor, UnicodeString* actualReturn, UErrorCode& status) const {
|
||||
return ICUService::get(descriptor, actualReturn, status);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Convenience override for callers using locales. This calls
|
||||
* get(Locale, int, Locale[]) with KIND_ANY for kind and null for
|
||||
* actualReturn.
|
||||
*/
|
||||
UObject* get(const Locale& locale, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Convenience override for callers using locales. This calls
|
||||
* get(Locale, int, Locale[]) with a null actualReturn.
|
||||
*/
|
||||
UObject* get(const Locale& locale, int32_t kind, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Convenience override for callers using locales. This calls
|
||||
* get(Locale, String, Locale[]) with a null kind.
|
||||
*/
|
||||
UObject* get(const Locale& locale, Locale* actualReturn, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Convenience override for callers using locales. This uses
|
||||
* createKey(Locale.toString(), kind) to create a key, calls getKey, and then
|
||||
* if actualReturn is not null, returns the actualResult from
|
||||
* getKey (stripping any prefix) into a Locale.
|
||||
*/
|
||||
UObject* get(const Locale& locale, int32_t kind, Locale* actualReturn, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Convenience override for callers using locales. This calls
|
||||
* registerObject(Object, Locale, int32_t kind, int coverage)
|
||||
* passing KIND_ANY for the kind, and VISIBLE for the coverage.
|
||||
*/
|
||||
virtual URegistryKey registerInstance(UObject* objToAdopt, const Locale& locale, UErrorCode& status);
|
||||
|
||||
/**
|
||||
* Convenience function for callers using locales. This calls
|
||||
* registerObject(Object, Locale, int kind, int coverage)
|
||||
* passing VISIBLE for the coverage.
|
||||
*/
|
||||
virtual URegistryKey registerInstance(UObject* objToAdopt, const Locale& locale, int32_t kind, UErrorCode& status);
|
||||
|
||||
/**
|
||||
* Convenience function for callers using locales. This instantiates
|
||||
* a SimpleLocaleKeyFactory, and registers the factory.
|
||||
*/
|
||||
virtual URegistryKey registerInstance(UObject* objToAdopt, const Locale& locale, int32_t kind, int32_t coverage, UErrorCode& status);
|
||||
|
||||
|
||||
/**
|
||||
* (Stop compiler from complaining about hidden overrides.)
|
||||
* Since both UnicodeString and Locale have constructors that take const char*, adding a public
|
||||
* method that takes UnicodeString causes ambiguity at call sites that use const char*.
|
||||
* We really need a flag that is understood by all compilers that will suppress the warning about
|
||||
* hidden overrides.
|
||||
*/
|
||||
virtual URegistryKey registerInstance(UObject* objToAdopt, const UnicodeString& locale, UBool visible, UErrorCode& status);
|
||||
|
||||
/**
|
||||
* Convenience method for callers using locales. This returns the standard
|
||||
* service ID enumeration.
|
||||
*/
|
||||
virtual StringEnumeration* getAvailableLocales(void) const;
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* Return the name of the current fallback locale. If it has changed since this was
|
||||
* last accessed, the service cache is cleared.
|
||||
*/
|
||||
const UnicodeString& validateFallbackLocale() const;
|
||||
|
||||
/**
|
||||
* Override superclass createKey method.
|
||||
*/
|
||||
virtual ICUServiceKey* createKey(const UnicodeString* id, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Additional createKey that takes a kind.
|
||||
*/
|
||||
virtual ICUServiceKey* createKey(const UnicodeString* id, int32_t kind, UErrorCode& status) const;
|
||||
|
||||
friend class ServiceEnumeration;
|
||||
};
|
||||
|
||||
// temporary utility functions, till I know where to find them
|
||||
// in header so tests can also access them
|
||||
|
||||
class U_COMMON_API LocaleUtility {
|
||||
public:
|
||||
static UnicodeString& canonicalLocaleString(const UnicodeString* id, UnicodeString& result);
|
||||
static Locale& initLocaleFromName(const UnicodeString& id, Locale& result);
|
||||
static UnicodeString& initNameFromLocale(const Locale& locale, UnicodeString& result);
|
||||
static const Hashtable* getAvailableLocaleNames(const UnicodeString& bundleID);
|
||||
static UBool isFallbackOf(const UnicodeString& root, const UnicodeString& child);
|
||||
static UBool cleanup(void);
|
||||
};
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
/* UCONFIG_NO_SERVICE */
|
||||
#endif
|
||||
|
||||
/* ICULSERV_H */
|
||||
#endif
|
||||
|
116
extern/icu/source/common/icunotif.cpp
vendored
116
extern/icu/source/common/icunotif.cpp
vendored
@ -1,116 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2001-2003, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_SERVICE
|
||||
|
||||
#include "icunotif.h"
|
||||
#if DEBUG
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
EventListener::~EventListener() {}
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(EventListener)
|
||||
|
||||
ICUNotifier::ICUNotifier(void)
|
||||
: notifyLock(0), listeners(NULL)
|
||||
{
|
||||
umtx_init(¬ifyLock);
|
||||
}
|
||||
|
||||
ICUNotifier::~ICUNotifier(void) {
|
||||
{
|
||||
Mutex lmx(¬ifyLock);
|
||||
delete listeners;
|
||||
listeners = NULL;
|
||||
}
|
||||
umtx_destroy(¬ifyLock);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ICUNotifier::addListener(const EventListener* l, UErrorCode& status)
|
||||
{
|
||||
if (U_SUCCESS(status)) {
|
||||
if (l == NULL) {
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
}
|
||||
|
||||
if (acceptsListener(*l)) {
|
||||
Mutex lmx(¬ifyLock);
|
||||
if (listeners == NULL) {
|
||||
listeners = new UVector(5, status);
|
||||
} else {
|
||||
for (int i = 0, e = listeners->size(); i < e; ++i) {
|
||||
const EventListener* el = (const EventListener*)(listeners->elementAt(i));
|
||||
if (l == el) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
listeners->addElement((void*)l, status); // cast away const
|
||||
} else {
|
||||
#if DEBUG
|
||||
fprintf(stderr, "Listener invalid for this notifier.");
|
||||
exit(1);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ICUNotifier::removeListener(const EventListener *l, UErrorCode& status)
|
||||
{
|
||||
if (U_SUCCESS(status)) {
|
||||
if (l == NULL) {
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
Mutex lmx(¬ifyLock);
|
||||
if (listeners != NULL) {
|
||||
// identity equality check
|
||||
for (int i = 0, e = listeners->size(); i < e; ++i) {
|
||||
const EventListener* el = (const EventListener*)listeners->elementAt(i);
|
||||
if (l == el) {
|
||||
listeners->removeElementAt(i);
|
||||
if (listeners->size() == 0) {
|
||||
delete listeners;
|
||||
listeners = NULL;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ICUNotifier::notifyChanged(void)
|
||||
{
|
||||
if (listeners != NULL) {
|
||||
Mutex lmx(¬ifyLock);
|
||||
if (listeners != NULL) {
|
||||
for (int i = 0, e = listeners->size(); i < e; ++i) {
|
||||
EventListener* el = (EventListener*)listeners->elementAt(i);
|
||||
notifyListener(*el);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
/* UCONFIG_NO_SERVICE */
|
||||
#endif
|
||||
|
124
extern/icu/source/common/icunotif.h
vendored
124
extern/icu/source/common/icunotif.h
vendored
@ -1,124 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2001-2003, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef ICUNOTIF_H
|
||||
#define ICUNOTIF_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if UCONFIG_NO_SERVICE
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/*
|
||||
* Allow the declaration of APIs with pointers to BreakIterator
|
||||
* even when break iteration is removed from the build.
|
||||
*/
|
||||
class ICUNotifier;
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#else
|
||||
|
||||
#include "unicode/uobject.h"
|
||||
#include "unicode/unistr.h"
|
||||
|
||||
#include "mutex.h"
|
||||
#include "uvector.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
class U_COMMON_API EventListener : public UObject {
|
||||
public:
|
||||
virtual ~EventListener();
|
||||
|
||||
public:
|
||||
static UClassID getStaticClassID();
|
||||
|
||||
virtual UClassID getDynamicClassID() const;
|
||||
|
||||
public:
|
||||
#ifdef SERVICE_DEBUG
|
||||
virtual UnicodeString& debug(UnicodeString& result) const {
|
||||
return debugClass(result);
|
||||
}
|
||||
|
||||
virtual UnicodeString& debugClass(UnicodeString& result) const {
|
||||
return result.append("Key");
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
* <p>Abstract implementation of a notification facility. Clients add
|
||||
* EventListeners with addListener and remove them with removeListener.
|
||||
* Notifiers call notifyChanged when they wish to notify listeners.
|
||||
* This queues the listener list on the notification thread, which
|
||||
* eventually dequeues the list and calls notifyListener on each
|
||||
* listener in the list.</p>
|
||||
*
|
||||
* <p>Subclasses override acceptsListener and notifyListener
|
||||
* to add type-safe notification. AcceptsListener should return
|
||||
* true if the listener is of the appropriate type; ICUNotifier
|
||||
* itself will ensure the listener is non-null and that the
|
||||
* identical listener is not already registered with the Notifier.
|
||||
* NotifyListener should cast the listener to the appropriate
|
||||
* type and call the appropriate method on the listener.
|
||||
*/
|
||||
|
||||
class U_COMMON_API ICUNotifier : public UMemory {
|
||||
private: UMTX notifyLock;
|
||||
private: UVector* listeners;
|
||||
|
||||
public:
|
||||
ICUNotifier(void);
|
||||
|
||||
virtual ~ICUNotifier(void);
|
||||
|
||||
/**
|
||||
* Add a listener to be notified when notifyChanged is called.
|
||||
* The listener must not be null. AcceptsListener must return
|
||||
* true for the listener. Attempts to concurrently
|
||||
* register the identical listener more than once will be
|
||||
* silently ignored.
|
||||
*/
|
||||
virtual void addListener(const EventListener* l, UErrorCode& status);
|
||||
|
||||
/**
|
||||
* Stop notifying this listener. The listener must
|
||||
* not be null. Attemps to remove a listener that is
|
||||
* not registered will be silently ignored.
|
||||
*/
|
||||
virtual void removeListener(const EventListener* l, UErrorCode& status);
|
||||
|
||||
/**
|
||||
* ICU doesn't spawn its own threads. All listeners are notified in
|
||||
* the thread of the caller. Misbehaved listeners can therefore
|
||||
* indefinitely block the calling thread. Callers should beware of
|
||||
* deadlock situations.
|
||||
*/
|
||||
virtual void notifyChanged(void);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Subclasses implement this to return TRUE if the listener is
|
||||
* of the appropriate type.
|
||||
*/
|
||||
virtual UBool acceptsListener(const EventListener& l) const = 0;
|
||||
|
||||
/**
|
||||
* Subclasses implement this to notify the listener.
|
||||
*/
|
||||
virtual void notifyListener(EventListener& l) const = 0;
|
||||
};
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
/* UCONFIG_NO_SERVICE */
|
||||
#endif
|
||||
|
||||
/* ICUNOTIF_H */
|
||||
#endif
|
971
extern/icu/source/common/icuserv.cpp
vendored
971
extern/icu/source/common/icuserv.cpp
vendored
@ -1,971 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2001-2004, International Business Machines Corporation. *
|
||||
* All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_SERVICE
|
||||
|
||||
#include "icuserv.h"
|
||||
#include "umutex.h"
|
||||
|
||||
#undef SERVICE_REFCOUNT
|
||||
|
||||
// in case we use the refcount stuff
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
const UChar ICUServiceKey::PREFIX_DELIMITER = 0x002F; /* '/' */
|
||||
|
||||
ICUServiceKey::ICUServiceKey(const UnicodeString& id)
|
||||
: _id(id) {
|
||||
}
|
||||
|
||||
ICUServiceKey::~ICUServiceKey()
|
||||
{
|
||||
}
|
||||
|
||||
const UnicodeString&
|
||||
ICUServiceKey::getID() const
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
ICUServiceKey::canonicalID(UnicodeString& result) const
|
||||
{
|
||||
return result.append(_id);
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
ICUServiceKey::currentID(UnicodeString& result) const
|
||||
{
|
||||
return canonicalID(result);
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
ICUServiceKey::currentDescriptor(UnicodeString& result) const
|
||||
{
|
||||
prefix(result);
|
||||
result.append(PREFIX_DELIMITER);
|
||||
return currentID(result);
|
||||
}
|
||||
|
||||
UBool
|
||||
ICUServiceKey::fallback()
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
UBool
|
||||
ICUServiceKey::isFallbackOf(const UnicodeString& id) const
|
||||
{
|
||||
return id == _id;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
ICUServiceKey::prefix(UnicodeString& result) const
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
ICUServiceKey::parsePrefix(UnicodeString& result)
|
||||
{
|
||||
int32_t n = result.indexOf(PREFIX_DELIMITER);
|
||||
if (n < 0) {
|
||||
n = 0;
|
||||
}
|
||||
result.remove(n);
|
||||
return result;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
ICUServiceKey::parseSuffix(UnicodeString& result)
|
||||
{
|
||||
int32_t n = result.indexOf(PREFIX_DELIMITER);
|
||||
if (n >= 0) {
|
||||
result.remove(0, n+1);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#ifdef SERVICE_DEBUG
|
||||
UnicodeString&
|
||||
ICUServiceKey::debug(UnicodeString& result) const
|
||||
{
|
||||
debugClass(result);
|
||||
result.append(" id: ");
|
||||
result.append(_id);
|
||||
return result;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
ICUServiceKey::debugClass(UnicodeString& result) const
|
||||
{
|
||||
return result.append("ICUServiceKey");
|
||||
}
|
||||
#endif
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ICUServiceKey)
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
SimpleFactory::SimpleFactory(UObject* instanceToAdopt, const UnicodeString& id, UBool visible)
|
||||
: _instance(instanceToAdopt), _id(id), _visible(visible)
|
||||
{
|
||||
}
|
||||
|
||||
SimpleFactory::~SimpleFactory()
|
||||
{
|
||||
delete _instance;
|
||||
}
|
||||
|
||||
UObject*
|
||||
SimpleFactory::create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const
|
||||
{
|
||||
if (U_SUCCESS(status)) {
|
||||
UnicodeString temp;
|
||||
if (_id == key.currentID(temp)) {
|
||||
return service->cloneInstance(_instance);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
SimpleFactory::updateVisibleIDs(Hashtable& result, UErrorCode& status) const
|
||||
{
|
||||
if (_visible) {
|
||||
result.put(_id, (void*)this, status); // cast away const
|
||||
} else {
|
||||
result.remove(_id);
|
||||
}
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
SimpleFactory::getDisplayName(const UnicodeString& id, const Locale& /* locale */, UnicodeString& result) const
|
||||
{
|
||||
if (_visible && _id == id) {
|
||||
result = _id;
|
||||
} else {
|
||||
result.setToBogus();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#ifdef SERVICE_DEBUG
|
||||
UnicodeString&
|
||||
SimpleFactory::debug(UnicodeString& toAppendTo) const
|
||||
{
|
||||
debugClass(toAppendTo);
|
||||
toAppendTo.append(" id: ");
|
||||
toAppendTo.append(_id);
|
||||
toAppendTo.append(", visible: ");
|
||||
toAppendTo.append(_visible ? "T" : "F");
|
||||
return toAppendTo;
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
SimpleFactory::debugClass(UnicodeString& toAppendTo) const
|
||||
{
|
||||
return toAppendTo.append("SimpleFactory");
|
||||
}
|
||||
#endif
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SimpleFactory)
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ServiceListener)
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
// Record the actual id for this service in the cache, so we can return it
|
||||
// even if we succeed later with a different id.
|
||||
class CacheEntry : public UMemory {
|
||||
private:
|
||||
int32_t refcount;
|
||||
|
||||
public:
|
||||
UnicodeString actualDescriptor;
|
||||
UObject* service;
|
||||
|
||||
/**
|
||||
* Releases a reference to the shared resource.
|
||||
*/
|
||||
~CacheEntry() {
|
||||
delete service;
|
||||
}
|
||||
|
||||
CacheEntry(const UnicodeString& _actualDescriptor, UObject* _service)
|
||||
: refcount(1), actualDescriptor(_actualDescriptor), service(_service) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiation creates an initial reference, so don't call this
|
||||
* unless you're creating a new pointer to this. Management of
|
||||
* that pointer will have to know how to deal with refcounts.
|
||||
* Return true if the resource has not already been released.
|
||||
*/
|
||||
CacheEntry* ref() {
|
||||
++refcount;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructions removes a reference, so don't call this unless
|
||||
* you're removing pointer to this somewhere. Management of that
|
||||
* pointer will have to know how to deal with refcounts. Once
|
||||
* the refcount drops to zero, the resource is released. Return
|
||||
* false if the resouce has been released.
|
||||
*/
|
||||
CacheEntry* unref() {
|
||||
if ((--refcount) == 0) {
|
||||
delete this;
|
||||
return NULL;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return TRUE if there is at least one reference to this and the
|
||||
* resource has not been released.
|
||||
*/
|
||||
UBool isShared() const {
|
||||
return refcount > 1;
|
||||
}
|
||||
};
|
||||
|
||||
// UObjectDeleter for serviceCache
|
||||
U_CDECL_BEGIN
|
||||
static void U_CALLCONV
|
||||
cacheDeleter(void* obj) {
|
||||
U_NAMESPACE_USE
|
||||
((CacheEntry*)obj)->unref();
|
||||
}
|
||||
|
||||
/**
|
||||
* Deleter for UObjects
|
||||
*/
|
||||
static void U_CALLCONV
|
||||
deleteUObject(void *obj) {
|
||||
U_NAMESPACE_USE
|
||||
delete (UObject*) obj;
|
||||
}
|
||||
U_CDECL_END
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
class DNCache : public UMemory {
|
||||
public:
|
||||
Hashtable cache;
|
||||
const Locale locale;
|
||||
|
||||
DNCache(const Locale& _locale)
|
||||
: cache(FALSE), locale(_locale)
|
||||
{
|
||||
// cache.setKeyDeleter(uhash_deleteUnicodeString);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
StringPair*
|
||||
StringPair::create(const UnicodeString& displayName,
|
||||
const UnicodeString& id,
|
||||
UErrorCode& status)
|
||||
{
|
||||
if (U_SUCCESS(status)) {
|
||||
StringPair* sp = new StringPair(displayName, id);
|
||||
if (sp == NULL || sp->isBogus()) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
delete sp;
|
||||
return NULL;
|
||||
}
|
||||
return sp;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UBool
|
||||
StringPair::isBogus() const {
|
||||
return displayName.isBogus() || id.isBogus();
|
||||
}
|
||||
|
||||
StringPair::StringPair(const UnicodeString& _displayName,
|
||||
const UnicodeString& _id)
|
||||
: displayName(_displayName)
|
||||
, id(_id)
|
||||
{
|
||||
}
|
||||
|
||||
U_CAPI void U_EXPORT2
|
||||
userv_deleteStringPair(void *obj) {
|
||||
U_NAMESPACE_USE
|
||||
delete (StringPair*) obj;
|
||||
}
|
||||
|
||||
/*
|
||||
******************************************************************
|
||||
*/
|
||||
|
||||
ICUService::ICUService()
|
||||
: name()
|
||||
, lock(0)
|
||||
, timestamp(0)
|
||||
, factories(NULL)
|
||||
, serviceCache(NULL)
|
||||
, idCache(NULL)
|
||||
, dnCache(NULL)
|
||||
{
|
||||
umtx_init(&lock);
|
||||
}
|
||||
|
||||
ICUService::ICUService(const UnicodeString& newName)
|
||||
: name(newName)
|
||||
, lock(0)
|
||||
, timestamp(0)
|
||||
, factories(NULL)
|
||||
, serviceCache(NULL)
|
||||
, idCache(NULL)
|
||||
, dnCache(NULL) {
|
||||
umtx_init(&lock);
|
||||
}
|
||||
|
||||
ICUService::~ICUService()
|
||||
{
|
||||
{
|
||||
Mutex mutex(&lock);
|
||||
clearCaches();
|
||||
delete factories;
|
||||
factories = NULL;
|
||||
}
|
||||
umtx_destroy(&lock);
|
||||
}
|
||||
|
||||
UObject*
|
||||
ICUService::get(const UnicodeString& descriptor, UErrorCode& status) const
|
||||
{
|
||||
return get(descriptor, NULL, status);
|
||||
}
|
||||
|
||||
UObject*
|
||||
ICUService::get(const UnicodeString& descriptor, UnicodeString* actualReturn, UErrorCode& status) const
|
||||
{
|
||||
UObject* result = NULL;
|
||||
ICUServiceKey* key = createKey(&descriptor, status);
|
||||
if (key) {
|
||||
result = getKey(*key, actualReturn, status);
|
||||
delete key;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
UObject*
|
||||
ICUService::getKey(ICUServiceKey& key, UErrorCode& status) const
|
||||
{
|
||||
return getKey(key, NULL, status);
|
||||
}
|
||||
|
||||
// this is a vector that subclasses of ICUService can override to further customize the result object
|
||||
// before returning it. All other public get functions should call this one.
|
||||
|
||||
UObject*
|
||||
ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, UErrorCode& status) const
|
||||
{
|
||||
return getKey(key, actualReturn, NULL, status);
|
||||
}
|
||||
|
||||
// make it possible to call reentrantly on systems that don't have reentrant mutexes.
|
||||
// we can use this simple approach since we know the situation where we're calling
|
||||
// reentrantly even without knowing the thread.
|
||||
class XMutex : public UMemory {
|
||||
public:
|
||||
inline XMutex(UMTX *mutex, UBool reentering)
|
||||
: fMutex(mutex)
|
||||
, fActive(!reentering)
|
||||
{
|
||||
if (fActive) umtx_lock(fMutex);
|
||||
}
|
||||
inline ~XMutex() {
|
||||
if (fActive) umtx_unlock(fMutex);
|
||||
}
|
||||
|
||||
private:
|
||||
UMTX *fMutex;
|
||||
UBool fActive;
|
||||
};
|
||||
|
||||
struct UVectorDeleter {
|
||||
UVector* _obj;
|
||||
UVectorDeleter() : _obj(NULL) {}
|
||||
~UVectorDeleter() { delete _obj; }
|
||||
};
|
||||
|
||||
// called only by factories, treat as private
|
||||
UObject*
|
||||
ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUServiceFactory* factory, UErrorCode& status) const
|
||||
{
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (isDefault()) {
|
||||
return handleDefault(key, actualReturn, status);
|
||||
}
|
||||
|
||||
ICUService* ncthis = (ICUService*)this; // cast away semantic const
|
||||
|
||||
CacheEntry* result = NULL;
|
||||
{
|
||||
// The factory list can't be modified until we're done,
|
||||
// otherwise we might update the cache with an invalid result.
|
||||
// The cache has to stay in synch with the factory list.
|
||||
// ICU doesn't have monitors so we can't use rw locks, so
|
||||
// we single-thread everything using this service, for now.
|
||||
|
||||
// if factory is not null, we're calling from within the mutex,
|
||||
// and since some unix machines don't have reentrant mutexes we
|
||||
// need to make sure not to try to lock it again.
|
||||
XMutex(&ncthis->lock, factory != NULL);
|
||||
|
||||
if (serviceCache == NULL) {
|
||||
ncthis->serviceCache = new Hashtable(FALSE, status);
|
||||
if (U_FAILURE(status)) {
|
||||
delete serviceCache;
|
||||
return NULL;
|
||||
}
|
||||
serviceCache->setValueDeleter(cacheDeleter);
|
||||
}
|
||||
|
||||
UnicodeString currentDescriptor;
|
||||
UVectorDeleter cacheDescriptorList;
|
||||
UBool putInCache = FALSE;
|
||||
|
||||
int32_t startIndex = 0;
|
||||
int32_t limit = factories->size();
|
||||
UBool cacheResult = TRUE;
|
||||
|
||||
if (factory != NULL) {
|
||||
for (int32_t i = 0; i < limit; ++i) {
|
||||
if (factory == (const ICUServiceFactory*)factories->elementAt(i)) {
|
||||
startIndex = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (startIndex == 0) {
|
||||
// throw new InternalError("Factory " + factory + "not registered with service: " + this);
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
cacheResult = FALSE;
|
||||
}
|
||||
|
||||
do {
|
||||
currentDescriptor.remove();
|
||||
key.currentDescriptor(currentDescriptor);
|
||||
result = (CacheEntry*)serviceCache->get(currentDescriptor);
|
||||
if (result != NULL) {
|
||||
break;
|
||||
}
|
||||
|
||||
// first test of cache failed, so we'll have to update
|
||||
// the cache if we eventually succeed-- that is, if we're
|
||||
// going to update the cache at all.
|
||||
putInCache = TRUE;
|
||||
|
||||
int32_t index = startIndex;
|
||||
while (index < limit) {
|
||||
ICUServiceFactory* f = (ICUServiceFactory*)factories->elementAt(index++);
|
||||
UObject* service = f->create(key, this, status);
|
||||
if (U_FAILURE(status)) {
|
||||
delete service;
|
||||
return NULL;
|
||||
}
|
||||
if (service != NULL) {
|
||||
result = new CacheEntry(currentDescriptor, service);
|
||||
if (result == NULL) {
|
||||
delete service;
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
goto outerEnd;
|
||||
}
|
||||
}
|
||||
|
||||
// prepare to load the cache with all additional ids that
|
||||
// will resolve to result, assuming we'll succeed. We
|
||||
// don't want to keep querying on an id that's going to
|
||||
// fallback to the one that succeeded, we want to hit the
|
||||
// cache the first time next goaround.
|
||||
if (cacheDescriptorList._obj == NULL) {
|
||||
cacheDescriptorList._obj = new UVector(uhash_deleteUnicodeString, NULL, 5, status);
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
UnicodeString* idToCache = new UnicodeString(currentDescriptor);
|
||||
if (idToCache == NULL || idToCache->isBogus()) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cacheDescriptorList._obj->addElement(idToCache, status);
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
} while (key.fallback());
|
||||
outerEnd:
|
||||
|
||||
if (result != NULL) {
|
||||
if (putInCache && cacheResult) {
|
||||
serviceCache->put(result->actualDescriptor, result, status);
|
||||
if (U_FAILURE(status)) {
|
||||
delete result;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (cacheDescriptorList._obj != NULL) {
|
||||
for (int32_t i = cacheDescriptorList._obj->size(); --i >= 0;) {
|
||||
UnicodeString* desc = (UnicodeString*)cacheDescriptorList._obj->elementAt(i);
|
||||
serviceCache->put(*desc, result, status);
|
||||
if (U_FAILURE(status)) {
|
||||
delete result;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
result->ref();
|
||||
cacheDescriptorList._obj->removeElementAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (actualReturn != NULL) {
|
||||
// strip null prefix
|
||||
if (result->actualDescriptor.indexOf("/") == 0) {
|
||||
actualReturn->remove();
|
||||
actualReturn->append(result->actualDescriptor,
|
||||
1,
|
||||
result->actualDescriptor.length() - 1);
|
||||
} else {
|
||||
*actualReturn = result->actualDescriptor;
|
||||
}
|
||||
|
||||
if (actualReturn->isBogus()) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
delete result;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
UObject* service = cloneInstance(result->service);
|
||||
if (putInCache && !cacheResult) {
|
||||
delete result;
|
||||
}
|
||||
return service;
|
||||
}
|
||||
}
|
||||
|
||||
return handleDefault(key, actualReturn, status);
|
||||
}
|
||||
|
||||
UObject*
|
||||
ICUService::handleDefault(const ICUServiceKey& /* key */, UnicodeString* /* actualIDReturn */, UErrorCode& /* status */) const
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UVector&
|
||||
ICUService::getVisibleIDs(UVector& result, UErrorCode& status) const {
|
||||
return getVisibleIDs(result, NULL, status);
|
||||
}
|
||||
|
||||
UVector&
|
||||
ICUService::getVisibleIDs(UVector& result, const UnicodeString* matchID, UErrorCode& status) const
|
||||
{
|
||||
result.removeAllElements();
|
||||
|
||||
if (U_FAILURE(status)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
ICUService * ncthis = (ICUService*)this; // cast away semantic const
|
||||
{
|
||||
Mutex mutex(&ncthis->lock);
|
||||
const Hashtable* map = getVisibleIDMap(status);
|
||||
if (map != NULL) {
|
||||
ICUServiceKey* fallbackKey = createKey(matchID, status);
|
||||
|
||||
for (int32_t pos = 0;;) {
|
||||
const UHashElement* e = map->nextElement(pos);
|
||||
if (e == NULL) {
|
||||
break;
|
||||
}
|
||||
|
||||
const UnicodeString* id = (const UnicodeString*)e->key.pointer;
|
||||
if (fallbackKey != NULL) {
|
||||
if (!fallbackKey->isFallbackOf(*id)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
UnicodeString* idClone = new UnicodeString(*id);
|
||||
if (idClone == NULL || idClone->isBogus()) {
|
||||
delete idClone;
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
break;
|
||||
}
|
||||
result.addElement(idClone, status);
|
||||
if (U_FAILURE(status)) {
|
||||
delete idClone;
|
||||
break;
|
||||
}
|
||||
}
|
||||
delete fallbackKey;
|
||||
}
|
||||
}
|
||||
if (U_FAILURE(status)) {
|
||||
result.removeAllElements();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
const Hashtable*
|
||||
ICUService::getVisibleIDMap(UErrorCode& status) const {
|
||||
if (U_FAILURE(status)) return NULL;
|
||||
|
||||
// must only be called when lock is already held
|
||||
|
||||
ICUService* ncthis = (ICUService*)this; // cast away semantic const
|
||||
if (idCache == NULL) {
|
||||
ncthis->idCache = new Hashtable();
|
||||
if (idCache == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
} else if (factories != NULL) {
|
||||
for (int32_t pos = factories->size(); --pos >= 0;) {
|
||||
ICUServiceFactory* f = (ICUServiceFactory*)factories->elementAt(pos);
|
||||
f->updateVisibleIDs(*idCache, status);
|
||||
}
|
||||
if (U_FAILURE(status)) {
|
||||
delete idCache;
|
||||
ncthis->idCache = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return idCache;
|
||||
}
|
||||
|
||||
|
||||
UnicodeString&
|
||||
ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result) const
|
||||
{
|
||||
return getDisplayName(id, result, Locale::getDefault());
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result, const Locale& locale) const
|
||||
{
|
||||
{
|
||||
ICUService* ncthis = (ICUService*)this; // cast away semantic const
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
Mutex mutex(&ncthis->lock);
|
||||
const Hashtable* map = getVisibleIDMap(status);
|
||||
if (map != NULL) {
|
||||
ICUServiceFactory* f = (ICUServiceFactory*)map->get(id);
|
||||
if (f != NULL) {
|
||||
f->getDisplayName(id, locale, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
// fallback
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
ICUServiceKey* fallbackKey = createKey(&id, status);
|
||||
while (fallbackKey->fallback()) {
|
||||
UnicodeString us;
|
||||
fallbackKey->currentID(us);
|
||||
f = (ICUServiceFactory*)map->get(us);
|
||||
if (f != NULL) {
|
||||
f->getDisplayName(id, locale, result);
|
||||
delete fallbackKey;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
delete fallbackKey;
|
||||
}
|
||||
}
|
||||
result.setToBogus();
|
||||
return result;
|
||||
}
|
||||
|
||||
UVector&
|
||||
ICUService::getDisplayNames(UVector& result, UErrorCode& status) const
|
||||
{
|
||||
return getDisplayNames(result, Locale::getDefault(), NULL, status);
|
||||
}
|
||||
|
||||
|
||||
UVector&
|
||||
ICUService::getDisplayNames(UVector& result, const Locale& locale, UErrorCode& status) const
|
||||
{
|
||||
return getDisplayNames(result, locale, NULL, status);
|
||||
}
|
||||
|
||||
UVector&
|
||||
ICUService::getDisplayNames(UVector& result,
|
||||
const Locale& locale,
|
||||
const UnicodeString* matchID,
|
||||
UErrorCode& status) const
|
||||
{
|
||||
result.removeAllElements();
|
||||
if (U_SUCCESS(status)) {
|
||||
ICUService* ncthis = (ICUService*)this; // cast away semantic const
|
||||
Mutex mutex(&ncthis->lock);
|
||||
|
||||
if (dnCache != NULL && dnCache->locale != locale) {
|
||||
delete dnCache;
|
||||
ncthis->dnCache = NULL;
|
||||
}
|
||||
|
||||
if (dnCache == NULL) {
|
||||
const Hashtable* m = getVisibleIDMap(status);
|
||||
if (m != NULL) {
|
||||
ncthis->dnCache = new DNCache(locale);
|
||||
if (dnCache == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return result;
|
||||
}
|
||||
|
||||
int32_t pos = 0;
|
||||
const UHashElement* entry = NULL;
|
||||
while ((entry = m->nextElement(pos)) != NULL) {
|
||||
const UnicodeString* id = (const UnicodeString*)entry->key.pointer;
|
||||
ICUServiceFactory* f = (ICUServiceFactory*)entry->value.pointer;
|
||||
UnicodeString dname;
|
||||
f->getDisplayName(*id, locale, dname);
|
||||
if (dname.isBogus()) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
} else {
|
||||
dnCache->cache.put(dname, (void*)id, status); // share pointer with visibleIDMap
|
||||
if (U_SUCCESS(status)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
delete dnCache;
|
||||
ncthis->dnCache = NULL;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ICUServiceKey* matchKey = createKey(matchID, status);
|
||||
int32_t pos = 0;
|
||||
const UHashElement *entry = NULL;
|
||||
while ((entry = dnCache->cache.nextElement(pos)) != NULL) {
|
||||
const UnicodeString* id = (const UnicodeString*)entry->value.pointer;
|
||||
if (matchKey != NULL && !matchKey->isFallbackOf(*id)) {
|
||||
continue;
|
||||
}
|
||||
const UnicodeString* dn = (const UnicodeString*)entry->key.pointer;
|
||||
StringPair* sp = StringPair::create(*id, *dn, status);
|
||||
result.addElement(sp, status);
|
||||
if (U_FAILURE(status)) {
|
||||
result.removeAllElements();
|
||||
break;
|
||||
}
|
||||
}
|
||||
delete matchKey;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
URegistryKey
|
||||
ICUService::registerInstance(UObject* objToAdopt, const UnicodeString& id, UErrorCode& status)
|
||||
{
|
||||
return registerInstance(objToAdopt, id, TRUE, status);
|
||||
}
|
||||
|
||||
URegistryKey
|
||||
ICUService::registerInstance(UObject* objToAdopt, const UnicodeString& id, UBool visible, UErrorCode& status)
|
||||
{
|
||||
ICUServiceKey* key = createKey(&id, status);
|
||||
if (key != NULL) {
|
||||
UnicodeString canonicalID;
|
||||
key->canonicalID(canonicalID);
|
||||
delete key;
|
||||
|
||||
ICUServiceFactory* f = createSimpleFactory(objToAdopt, canonicalID, visible, status);
|
||||
if (f != NULL) {
|
||||
return registerFactory(f, status);
|
||||
}
|
||||
}
|
||||
delete objToAdopt;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ICUServiceFactory*
|
||||
ICUService::createSimpleFactory(UObject* objToAdopt, const UnicodeString& id, UBool visible, UErrorCode& status)
|
||||
{
|
||||
if (U_SUCCESS(status)) {
|
||||
if ((objToAdopt != NULL) && (!id.isBogus())) {
|
||||
return new SimpleFactory(objToAdopt, id, visible);
|
||||
}
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
URegistryKey
|
||||
ICUService::registerFactory(ICUServiceFactory* factoryToAdopt, UErrorCode& status)
|
||||
{
|
||||
if (U_SUCCESS(status) && factoryToAdopt != NULL) {
|
||||
Mutex mutex(&lock);
|
||||
|
||||
if (factories == NULL) {
|
||||
factories = new UVector(deleteUObject, NULL, status);
|
||||
if (U_FAILURE(status)) {
|
||||
delete factories;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
factories->insertElementAt(factoryToAdopt, 0, status);
|
||||
if (U_SUCCESS(status)) {
|
||||
clearCaches();
|
||||
} else {
|
||||
delete factoryToAdopt;
|
||||
factoryToAdopt = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (factoryToAdopt != NULL) {
|
||||
notifyChanged();
|
||||
}
|
||||
|
||||
return (URegistryKey)factoryToAdopt;
|
||||
}
|
||||
|
||||
UBool
|
||||
ICUService::unregister(URegistryKey rkey, UErrorCode& status)
|
||||
{
|
||||
ICUServiceFactory *factory = (ICUServiceFactory*)rkey;
|
||||
UBool result = FALSE;
|
||||
if (factory != NULL && factories != NULL) {
|
||||
Mutex mutex(&lock);
|
||||
|
||||
if (factories->removeElement(factory)) {
|
||||
clearCaches();
|
||||
result = TRUE;
|
||||
} else {
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
delete factory;
|
||||
}
|
||||
}
|
||||
if (result) {
|
||||
notifyChanged();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
ICUService::reset()
|
||||
{
|
||||
{
|
||||
Mutex mutex(&lock);
|
||||
reInitializeFactories();
|
||||
clearCaches();
|
||||
}
|
||||
notifyChanged();
|
||||
}
|
||||
|
||||
void
|
||||
ICUService::reInitializeFactories()
|
||||
{
|
||||
if (factories != NULL) {
|
||||
factories->removeAllElements();
|
||||
}
|
||||
}
|
||||
|
||||
UBool
|
||||
ICUService::isDefault() const
|
||||
{
|
||||
return countFactories() == 0;
|
||||
}
|
||||
|
||||
ICUServiceKey*
|
||||
ICUService::createKey(const UnicodeString* id, UErrorCode& status) const
|
||||
{
|
||||
return (U_FAILURE(status) || id == NULL) ? NULL : new ICUServiceKey(*id);
|
||||
}
|
||||
|
||||
void
|
||||
ICUService::clearCaches()
|
||||
{
|
||||
// callers synchronize before use
|
||||
++timestamp;
|
||||
delete dnCache; dnCache = NULL;
|
||||
delete idCache; idCache = NULL;
|
||||
delete serviceCache; serviceCache = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
ICUService::clearServiceCache()
|
||||
{
|
||||
// callers synchronize before use
|
||||
delete serviceCache; serviceCache = NULL;
|
||||
}
|
||||
|
||||
UBool
|
||||
ICUService::acceptsListener(const EventListener& l) const
|
||||
{
|
||||
return l.getDynamicClassID() == ServiceListener::getStaticClassID();
|
||||
}
|
||||
|
||||
void
|
||||
ICUService::notifyListener(EventListener& l) const
|
||||
{
|
||||
((ServiceListener&)l).serviceChanged(*this);
|
||||
}
|
||||
|
||||
UnicodeString&
|
||||
ICUService::getName(UnicodeString& result) const
|
||||
{
|
||||
return result.append(name);
|
||||
}
|
||||
|
||||
int32_t
|
||||
ICUService::countFactories() const
|
||||
{
|
||||
return factories == NULL ? 0 : factories->size();
|
||||
}
|
||||
|
||||
int32_t
|
||||
ICUService::getTimestamp() const
|
||||
{
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
/* UCONFIG_NO_SERVICE */
|
||||
#endif
|
1005
extern/icu/source/common/icuserv.h
vendored
1005
extern/icu/source/common/icuserv.h
vendored
File diff suppressed because it is too large
Load Diff
46
extern/icu/source/common/locbased.cpp
vendored
46
extern/icu/source/common/locbased.cpp
vendored
@ -1,46 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (c) 2004, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
* Author: Alan Liu
|
||||
* Created: January 16 2004
|
||||
* Since: ICU 2.8
|
||||
**********************************************************************
|
||||
*/
|
||||
#include "locbased.h"
|
||||
#include "cstring.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
Locale LocaleBased::getLocale(ULocDataLocaleType type, UErrorCode& status) const {
|
||||
const char* id = getLocaleID(type, status);
|
||||
return Locale((id != 0) ? id : "");
|
||||
}
|
||||
|
||||
const char* LocaleBased::getLocaleID(ULocDataLocaleType type, UErrorCode& status) const {
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
switch(type) {
|
||||
case ULOC_VALID_LOCALE:
|
||||
return valid;
|
||||
case ULOC_ACTUAL_LOCALE:
|
||||
return actual;
|
||||
default:
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void LocaleBased::setLocaleIDs(const char* validID, const char* actualID) {
|
||||
if (validID != 0) {
|
||||
uprv_strcpy(valid, validID);
|
||||
}
|
||||
if (actualID != 0) {
|
||||
uprv_strcpy(actual, actualID);
|
||||
}
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
97
extern/icu/source/common/locbased.h
vendored
97
extern/icu/source/common/locbased.h
vendored
@ -1,97 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (c) 2004, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
* Author: Alan Liu
|
||||
* Created: January 16 2004
|
||||
* Since: ICU 2.8
|
||||
**********************************************************************
|
||||
*/
|
||||
#ifndef LOCBASED_H
|
||||
#define LOCBASED_H
|
||||
|
||||
#include "unicode/locid.h"
|
||||
#include "unicode/uobject.h"
|
||||
|
||||
/**
|
||||
* Macro to declare a locale LocaleBased wrapper object for the given
|
||||
* object, which must have two members named `validLocale' and
|
||||
* `actualLocale'.
|
||||
*/
|
||||
#define U_LOCALE_BASED(varname, objname) \
|
||||
LocaleBased varname((objname).validLocale, (objname).actualLocale);
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* A utility class that unifies the implementation of getLocale() by
|
||||
* various ICU services. This class is likely to be removed in the
|
||||
* ICU 3.0 time frame in favor of an integrated approach with the
|
||||
* services framework.
|
||||
* @since ICU 2.8
|
||||
*/
|
||||
class U_COMMON_API LocaleBased : public UMemory {
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Construct a LocaleBased wrapper around the two pointers. These
|
||||
* will be aliased for the lifetime of this object.
|
||||
*/
|
||||
inline LocaleBased(char* validAlias, char* actualAlias);
|
||||
|
||||
/**
|
||||
* Construct a LocaleBased wrapper around the two const pointers.
|
||||
* These will be aliased for the lifetime of this object.
|
||||
*/
|
||||
inline LocaleBased(const char* validAlias, const char* actualAlias);
|
||||
|
||||
/**
|
||||
* Return locale meta-data for the service object wrapped by this
|
||||
* object. Either the valid or the actual locale may be
|
||||
* retrieved.
|
||||
* @param type either ULOC_VALID_LOCALE or ULOC_ACTUAL_LOCALE
|
||||
* @param status input-output error code
|
||||
* @return the indicated locale
|
||||
*/
|
||||
Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Return the locale ID for the service object wrapped by this
|
||||
* object. Either the valid or the actual locale may be
|
||||
* retrieved.
|
||||
* @param type either ULOC_VALID_LOCALE or ULOC_ACTUAL_LOCALE
|
||||
* @param status input-output error code
|
||||
* @return the indicated locale ID
|
||||
*/
|
||||
const char* getLocaleID(ULocDataLocaleType type, UErrorCode& status) const;
|
||||
|
||||
/**
|
||||
* Set the locale meta-data for the service object wrapped by this
|
||||
* object. If either parameter is zero, it is ignored.
|
||||
* @param valid the ID of the valid locale
|
||||
* @param actual the ID of the actual locale
|
||||
*/
|
||||
void setLocaleIDs(const char* valid, const char* actual);
|
||||
|
||||
private:
|
||||
|
||||
char* valid;
|
||||
|
||||
char* actual;
|
||||
};
|
||||
|
||||
inline LocaleBased::LocaleBased(char* validAlias, char* actualAlias) :
|
||||
valid(validAlias), actual(actualAlias) {
|
||||
}
|
||||
|
||||
inline LocaleBased::LocaleBased(const char* validAlias,
|
||||
const char* actualAlias) :
|
||||
// ugh: cast away const
|
||||
valid((char*)validAlias), actual((char*)actualAlias) {
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif
|
1319
extern/icu/source/common/locid.cpp
vendored
1319
extern/icu/source/common/locid.cpp
vendored
File diff suppressed because it is too large
Load Diff
888
extern/icu/source/common/locmap.c
vendored
888
extern/icu/source/common/locmap.c
vendored
@ -1,888 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 1996-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* Provides functionality for mapping between
|
||||
* LCID and Posix IDs or ICU locale to codepage
|
||||
*
|
||||
* Note: All classes and code in this file are
|
||||
* intended for internal use only.
|
||||
*
|
||||
* Methods of interest:
|
||||
* unsigned long convertToLCID(const int8_t*);
|
||||
* const int8_t* convertToPosix(unsigned long);
|
||||
*
|
||||
* Kathleen Wilson, 4/30/96
|
||||
*
|
||||
* Date Name Description
|
||||
* 3/11/97 aliu Fixed off-by-one bug in assignment operator. Added
|
||||
* setId() method and safety check against
|
||||
* MAX_ID_LENGTH.
|
||||
* 04/23/99 stephen Added C wrapper for convertToPosix.
|
||||
* 09/18/00 george Removed the memory leaks.
|
||||
* 08/23/01 george Convert to C
|
||||
*/
|
||||
|
||||
#include "unicode/uloc.h"
|
||||
#include "locmap.h"
|
||||
#include "cstring.h"
|
||||
|
||||
static struct
|
||||
{
|
||||
const char *loc;
|
||||
const char *charmap;
|
||||
}
|
||||
const _localeToDefaultCharmapTable [] =
|
||||
{
|
||||
/*
|
||||
See: http://czyborra.com/charsets/iso8859.html
|
||||
*/
|
||||
|
||||
/* xx_XX locales first, so they will match: */
|
||||
{ "zh_CN", "gb2312" }, /* Chinese (Simplified) */
|
||||
{ "zh_TW", "Big5" }, /* Chinese (Traditional) */
|
||||
|
||||
{ "af", "iso-8859-1" }, /* Afrikaans */
|
||||
{ "ar", "iso-8859-6" }, /* Arabic */
|
||||
{ "be", "iso-8859-5" }, /* Byelorussian */
|
||||
{ "bg", "iso-8859-5" }, /* Bulgarian */
|
||||
{ "ca", "iso-8859-1" }, /* Catalan */
|
||||
{ "cs", "iso-8859-2" }, /* Czech */
|
||||
{ "da", "iso-8859-1" }, /* Danish */
|
||||
{ "de", "iso-8859-1" }, /* German */
|
||||
{ "el", "iso-8859-7" }, /* Greek */
|
||||
{ "en", "iso-8859-1" }, /* English */
|
||||
{ "eo", "iso-8859-3" }, /* Esperanto */
|
||||
{ "es", "iso-8859-1" }, /* Spanish */
|
||||
{ "et", "iso-8859-4" }, /* Estonian */
|
||||
{ "eu", "iso-8859-1" }, /* basque */
|
||||
{ "fi", "iso-8859-1" }, /* Finnish */
|
||||
{ "fo", "iso-8859-1" }, /* faroese */
|
||||
{ "fr", "iso-8859-1" }, /* French */
|
||||
{ "ga", "iso-8859-1" }, /* Irish (Gaelic) */
|
||||
{ "gd", "iso-8859-1" }, /* Scottish */
|
||||
{ "he", "iso-8859-8" }, /* hebrew */
|
||||
{ "hr", "iso-8859-2" }, /* Croatian */
|
||||
{ "hu", "iso-8859-2" }, /* Hungarian */
|
||||
{ "in", "iso-8859-1" }, /* Indonesian */
|
||||
{ "is", "iso-8859-1" }, /* Icelandic */
|
||||
{ "it", "iso-8859-1" }, /* Italian */
|
||||
{ "ja", "Shift_JIS" }, /* Japanese [was: ja_JP ] */
|
||||
{ "ji", "iso-8859-8" }, /* Yiddish */
|
||||
{ "kl", "iso-8859-4" }, /* Greenlandic */
|
||||
{ "ko", "euc-kr" }, /* korean [was: ko_KR ] */
|
||||
{ "lt", "iso-8859-4" }, /* Lithuanian */
|
||||
{ "lv", "iso-8859-4" }, /* latvian (lettish) */
|
||||
{ "mk", "iso-8859-5" }, /* Macedonian */
|
||||
{ "mt", "iso-8859-3" }, /* Maltese */
|
||||
{ "nb", "iso-8859-1" }, /* Norwegian Bokmal */
|
||||
{ "nl", "iso-8859-1" }, /* dutch */
|
||||
{ "no", "iso-8859-1" }, /* Norwegian old ISO name*/
|
||||
{ "nn", "iso-8859-1" }, /* Norwegian Nynorsk */
|
||||
{ "pl", "iso-8859-2" }, /* Polish */
|
||||
{ "pt", "iso-8859-1" }, /* Portugese */
|
||||
{ "rm", "iso-8859-1" }, /* Rhaeto-romance */
|
||||
{ "ro", "iso-8859-2" }, /* Romanian */
|
||||
{ "ru", "iso-8859-5" }, /* Russian */
|
||||
{ "sk", "iso-8859-2" }, /* Slovak */
|
||||
{ "sl", "iso-8859-2" }, /* Slovenian */
|
||||
{ "sq", "iso-8859-1" }, /* albanian */
|
||||
{ "sr", "iso-8859-5" }, /* Serbian */
|
||||
{ "sv", "iso-8859-1" }, /* Swedish */
|
||||
{ "sw", "iso-8859-1" }, /* Swahili */
|
||||
{ "th", "tis-620" }, /* Thai [windows-874] */
|
||||
{ "tr", "iso-8859-9" }, /* Turkish */
|
||||
{ "uk", "iso-8859-5" }, /* pre 1990 Ukranian... see: <http://czyborra.com/charsets/cyrillic.html#KOI8-U> */
|
||||
{ "zh", "Big-5" }, /* Chinese (Traditional) */
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
U_CAPI const char* U_EXPORT2
|
||||
uprv_defaultCodePageForLocale(const char *locale)
|
||||
{
|
||||
int32_t i;
|
||||
int32_t locale_len;
|
||||
|
||||
if (locale == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
locale_len = (int32_t)uprv_strlen(locale);
|
||||
|
||||
if(locale_len < 2)
|
||||
{
|
||||
return NULL; /* non existent. Not a complete check, but it will
|
||||
* make sure that 'c' doesn't match catalan, etc.
|
||||
*/
|
||||
}
|
||||
|
||||
for(i=0; _localeToDefaultCharmapTable[i].loc; i++)
|
||||
{
|
||||
if(uprv_strncmp(locale, _localeToDefaultCharmapTable[i].loc,
|
||||
uprv_min(locale_len,
|
||||
(int32_t)uprv_strlen(_localeToDefaultCharmapTable[i].loc)))
|
||||
== 0)
|
||||
{
|
||||
return _localeToDefaultCharmapTable[i].charmap;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Note:
|
||||
* The mapping from Win32 locale ID numbers to POSIX locale strings should
|
||||
* be the faster one.
|
||||
*
|
||||
* Many LCID values come from winnt.h
|
||||
* Some also come from http://www.microsoft.com/globaldev/reference/lcid-all.mspx
|
||||
*/
|
||||
|
||||
/*
|
||||
////////////////////////////////////////////////
|
||||
//
|
||||
// Internal Classes for LCID <--> POSIX Mapping
|
||||
//
|
||||
/////////////////////////////////////////////////
|
||||
*/
|
||||
|
||||
typedef struct ILcidPosixElement
|
||||
{
|
||||
const uint32_t hostID;
|
||||
const char * const posixID;
|
||||
} ILcidPosixElement;
|
||||
|
||||
typedef struct ILcidPosixMap
|
||||
{
|
||||
const uint32_t numRegions;
|
||||
const struct ILcidPosixElement* const regionMaps;
|
||||
} ILcidPosixMap;
|
||||
|
||||
|
||||
/*
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// Easy macros to make the LCID <--> POSIX Mapping
|
||||
//
|
||||
/////////////////////////////////////////////////
|
||||
*/
|
||||
|
||||
/*
|
||||
The standard one language/one country mapping for LCID.
|
||||
The first element must be the language, and the following
|
||||
elements are the language with the country.
|
||||
*/
|
||||
#define ILCID_POSIX_ELEMENT_ARRAY(hostID, languageID, posixID) \
|
||||
static const ILcidPosixElement languageID[] = { \
|
||||
{LANGUAGE_LCID(hostID), #languageID}, /* parent locale */ \
|
||||
{hostID, #posixID}, \
|
||||
};
|
||||
|
||||
/*
|
||||
Create the map for the posixID. This macro supposes that the language string
|
||||
name is the same as the global variable name, and that the first element
|
||||
in the ILcidPosixElement is just the language.
|
||||
*/
|
||||
#define ILCID_POSIX_MAP(_posixID) \
|
||||
{sizeof(_posixID)/sizeof(ILcidPosixElement), _posixID}
|
||||
|
||||
/*
|
||||
////////////////////////////////////////////
|
||||
//
|
||||
// Create the table of LCID to POSIX Mapping
|
||||
// None of it should be dynamically created.
|
||||
//
|
||||
// Keep static locale variables inside the function so that
|
||||
// it can be created properly during static init.
|
||||
//
|
||||
////////////////////////////////////////////
|
||||
*/
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0436, af, af_ZA)
|
||||
|
||||
static const ILcidPosixElement ar[] = {
|
||||
{0x01, "ar"},
|
||||
{0x3801, "ar_AE"},
|
||||
{0x3c01, "ar_BH"},
|
||||
{0x1401, "ar_DZ"},
|
||||
{0x0c01, "ar_EG"},
|
||||
{0x0801, "ar_IQ"},
|
||||
{0x2c01, "ar_JO"},
|
||||
{0x3401, "ar_KW"},
|
||||
{0x3001, "ar_LB"},
|
||||
{0x1001, "ar_LY"},
|
||||
{0x1801, "ar_MA"},
|
||||
{0x2001, "ar_OM"},
|
||||
{0x4001, "ar_QA"},
|
||||
{0x0401, "ar_SA"},
|
||||
{0x2801, "ar_SY"},
|
||||
{0x1c01, "ar_TN"},
|
||||
{0x2401, "ar_YE"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x044d, as, as_IN)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x045e, am, am_ET)
|
||||
|
||||
static const ILcidPosixElement az[] = {
|
||||
{0x2c, "az"},
|
||||
{0x082c, "az_AZ"}, /* Cyrillic based */
|
||||
{0x042c, "az_Latn_AZ"} /* Latin based */
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0423, be, be_BY)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0402, bg, bg_BG)
|
||||
|
||||
static const ILcidPosixElement bn[] = {
|
||||
{0x45, "bn"},
|
||||
{0x0845, "bn_BD"},
|
||||
{0x0445, "bn_IN"}
|
||||
};
|
||||
|
||||
|
||||
static const ILcidPosixElement bo[] = {
|
||||
{0x51, "bo"},
|
||||
{0x0851, "bo_BT"},
|
||||
{0x0451, "bo_CN"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0403, ca, ca_ES)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x045c, chr,chr_US)
|
||||
|
||||
/* Declared as cs_CZ to get around compiler errors on z/OS, which defines cs as a function */
|
||||
static const ILcidPosixElement cs_CZ[] = {
|
||||
{0x05, "cs"},
|
||||
{0x0405, "cs_CZ"},
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0452, cy, cy_GB)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0406, da, da_DK)
|
||||
|
||||
static const ILcidPosixElement de[] = {
|
||||
{0x07, "de"},
|
||||
{0x0c07, "de_AT"},
|
||||
{0x0807, "de_CH"},
|
||||
{0x0407, "de_DE"},
|
||||
{0x1407, "de_LI"},
|
||||
{0x1007, "de_LU"},
|
||||
{0x10407,"de__PHONEBOOK"} /*This is really de_DE_PHONEBOOK on Windows, maybe 10007*/
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0465, dv, dv_MV)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0408, el, el_GR)
|
||||
|
||||
static const ILcidPosixElement en[] = {
|
||||
{0x09, "en"},
|
||||
{0x0c09, "en_AU"},
|
||||
{0x2809, "en_BZ"},
|
||||
{0x1009, "en_CA"},
|
||||
{0x0809, "en_GB"},
|
||||
{0x1809, "en_IE"},
|
||||
{0x2009, "en_JM"},
|
||||
{0x1409, "en_NZ"},
|
||||
{0x3409, "en_PH"},
|
||||
{0x2C09, "en_TT"},
|
||||
{0x0409, "en_US"},
|
||||
{0x007f, "en_US_POSIX"}, /* duplicate for roundtripping */
|
||||
{0x2409, "en_VI"}, /* Virgin Islands AKA Caribbean Islands (en_CB). */
|
||||
{0x1c09, "en_ZA"},
|
||||
{0x3009, "en_ZW"},
|
||||
{0x0409, "en_AS"}, /* Alias for en_US. Leave last. */
|
||||
{0x0409, "en_GU"}, /* Alias for en_US. Leave last. */
|
||||
{0x0409, "en_MH"}, /* Alias for en_US. Leave last. */
|
||||
{0x0409, "en_MP"}, /* Alias for en_US. Leave last. */
|
||||
{0x0409, "en_UM"} /* Alias for en_US. Leave last. */
|
||||
};
|
||||
|
||||
static const ILcidPosixElement en_US_POSIX[] = {
|
||||
{0x007f, "en_US_POSIX"}, /* duplicate for roundtripping */
|
||||
};
|
||||
|
||||
static const ILcidPosixElement es[] = {
|
||||
{0x0a, "es"},
|
||||
{0x2c0a, "es_AR"},
|
||||
{0x400a, "es_BO"},
|
||||
{0x340a, "es_CL"},
|
||||
{0x240a, "es_CO"},
|
||||
{0x140a, "es_CR"},
|
||||
{0x1c0a, "es_DO"},
|
||||
{0x300a, "es_EC"},
|
||||
{0x0c0a, "es_ES"}, /*Modern sort.*/
|
||||
{0x100a, "es_GT"},
|
||||
{0x480a, "es_HN"},
|
||||
{0x080a, "es_MX"},
|
||||
{0x4c0a, "es_NI"},
|
||||
{0x180a, "es_PA"},
|
||||
{0x280a, "es_PE"},
|
||||
{0x500a, "es_PR"},
|
||||
{0x3c0a, "es_PY"},
|
||||
{0x440a, "es_SV"},
|
||||
{0x380a, "es_UY"},
|
||||
{0x200a, "es_VE"},
|
||||
{0x040a, "es__TRADITIONAL"} /*This is really es_ES_TRADITIONAL on Windows */
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0425, et, et_EE)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x042d, eu, eu_ES)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0429, fa, fa_IR)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x040b, fi, fi_FI)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0438, fo, fo_FO)
|
||||
|
||||
static const ILcidPosixElement fr[] = {
|
||||
{0x0c, "fr"},
|
||||
{0x080c, "fr_BE"},
|
||||
{0x0c0c, "fr_CA"},
|
||||
{0x240c, "fr_CD"},
|
||||
{0x100c, "fr_CH"},
|
||||
{0x300c, "fr_CI"},
|
||||
{0x2c0c, "fr_CM"},
|
||||
{0x040c, "fr_FR"},
|
||||
{0x3c0c, "fr_HT"},
|
||||
{0x140c, "fr_LU"},
|
||||
{0x380c, "fr_MA"},
|
||||
{0x180c, "fr_MC"},
|
||||
{0x340c, "fr_ML"},
|
||||
{0x200c, "fr_RE"},
|
||||
{0x280c, "fr_SN"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0462, fy, fy_NL)
|
||||
|
||||
/* This LCID is really two different locales.*/
|
||||
static const ILcidPosixElement ga[] = {
|
||||
{0x3c, "ga"},
|
||||
{0x3c, "gd"},
|
||||
{0x083c, "ga_IE"}, /* Gaelic (Ireland) */
|
||||
{0x043c, "gd_GB"} /* Gaelic (Scotland) */
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0456, gl, gl_ES)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0447, gu, gu_IN)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0474, gn, gn_PY)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0468, ha, ha_NG)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0475, haw,haw_US)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x040d, he, he_IL)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0439, hi, hi_IN)
|
||||
|
||||
/* This LCID is really four different locales.*/
|
||||
static const ILcidPosixElement hr[] = {
|
||||
{0x1a, "hr"},
|
||||
{0x141a, "bs_BA"}, /* Bosnian, Bosnia and Herzegovina */
|
||||
{0x141a, "bs"}, /* Bosnian */
|
||||
{0x041a, "hr_HR"}, /* Croatian*/
|
||||
{0x081a, "sh_YU"}, /* Serbo-Croatian*/
|
||||
{0x081a, "sh"}, /* It's 0x1a or 0x081a, pick one to make the test program happy. */
|
||||
{0x0c1a, "sr_YU"}, /* Serbian*/
|
||||
{0x0c1a, "sr"}, /* It's 0x1a or 0x0c1a, pick one to make the test program happy. */
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x040e, hu, hu_HU)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x042b, hy, hy_AM)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0421, id, id_ID)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0470, ig, ig_NG)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x040f, is, is_IS)
|
||||
|
||||
static const ILcidPosixElement it[] = {
|
||||
{0x10, "it"},
|
||||
{0x0810, "it_CH"},
|
||||
{0x0410, "it_IT"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x045d, iu, iu_CA) /* TODO: verify country */
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x040d, iw, iw_IL) /*Left in for compatibility*/
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0411, ja, ja_JP)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0437, ka, ka_GE)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x043f, kk, kk_KZ)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0453, km, km_KH)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x044b, kn, kn_IN)
|
||||
|
||||
static const ILcidPosixElement ko[] = {
|
||||
{0x12, "ko"},
|
||||
{0x0812, "ko_KP"},
|
||||
{0x0412, "ko_KR"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0457, kok, kok_IN)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0471, kr, kr_NG)
|
||||
|
||||
static const ILcidPosixElement ks[] = { /* We could add PK and CN too */
|
||||
{0x60, "ks"},
|
||||
{0x0860, "ks_IN"}, /* Documentation doesn't mention script */
|
||||
{0x0460, "ks_Arab_IN"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0440, ky, ky_KG) /* Kyrgyz is spoken in Kyrgyzstan */
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0476, la, la_IT) /* TODO: Verify the country */
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0454, lo, lo_LA)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0427, lt, lt_LT)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0426, lv, lv_LV)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0481, mi, mi_NZ)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x042f, mk, mk_MK)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x044c, ml, ml_IN)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0450, mn, mn_MN)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0458, mni,mni_IN)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x044e, mr, mr_IN)
|
||||
|
||||
static const ILcidPosixElement ms[] = {
|
||||
{0x3e, "ms"},
|
||||
{0x083e, "ms_BN"}, /* Brunei Darussalam*/
|
||||
{0x043e, "ms_MY"} /* Malaysia*/
|
||||
};
|
||||
|
||||
/* The MSJDK documentation says this is maltese, but it's not supported.*/
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x043a, mt, mt_MT)
|
||||
|
||||
static const ILcidPosixElement ne[] = {
|
||||
{0x61, "ne"},
|
||||
{0x0861, "ne_IN"}, /* India*/
|
||||
{0x0461, "ne_NP"} /* Nepal*/
|
||||
};
|
||||
|
||||
static const ILcidPosixElement nl[] = {
|
||||
{0x13, "nl"},
|
||||
{0x0813, "nl_BE"},
|
||||
{0x0413, "nl_NL"}
|
||||
};
|
||||
|
||||
/* The "no" locale split into nb and nn. By default in ICU, "no" is nb.*/
|
||||
static const ILcidPosixElement no[] = {
|
||||
{0x14, "nb"}, /* really nb */
|
||||
{0x0414, "nb_NO"}, /* really nb_NO. Keep first in the 414 list. */
|
||||
{0x0414, "no"}, /* really nb_NO */
|
||||
{0x0414, "no_NO"}, /* really nb_NO */
|
||||
{0x0814, "nn_NO"}, /* really nn_NO. Keep first in the 814 list. */
|
||||
{0x0814, "nn"}, /* It's 0x14 or 0x814, pick one to make the test program happy. */
|
||||
{0x0814, "no_NO_NY"}/* really nn_NO */
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x046c, nso,nso_ZA) /* TODO: Verify the country */
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0472, om, om_ET) /* TODO: Verify the country */
|
||||
|
||||
/* Declared as or_IN to get around compiler errors*/
|
||||
static const ILcidPosixElement or_IN[] = {
|
||||
{0x48, "or"},
|
||||
{0x0448, "or_IN"},
|
||||
};
|
||||
|
||||
static const ILcidPosixElement pa[] = {
|
||||
{0x46, "pa"},
|
||||
{0x0446, "pa_IN"},
|
||||
{0x0846, "pa_PK"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0415, pl, pl_PL)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0463, ps, ps_AF)
|
||||
|
||||
static const ILcidPosixElement pt[] = {
|
||||
{0x16, "pt"},
|
||||
{0x0416, "pt_BR"},
|
||||
{0x0816, "pt_PT"}
|
||||
};
|
||||
|
||||
static const ILcidPosixElement qu[] = {
|
||||
{0x6B, "qu"},
|
||||
{0x046B, "qu_BO"},
|
||||
{0x086B, "qu_EC"},
|
||||
{0x0C6B, "qu_PE"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0418, ro, ro_RO)
|
||||
|
||||
static const ILcidPosixElement root[] = {
|
||||
{0x00, "root"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0419, ru, ru_RU)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x044f, sa, sa_IN)
|
||||
|
||||
static const ILcidPosixElement sd[] = {
|
||||
{0x59, "sd"},
|
||||
{0x0459, "sd_IN"},
|
||||
{0x0859, "sd_PK"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x045b, si, si_LK)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x041b, sk, sk_SK)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0424, sl, sl_SI)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0477, so, so_ET) /* TODO: Verify the country */
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x041c, sq, sq_AL)
|
||||
|
||||
static const ILcidPosixElement sv[] = {
|
||||
{0x1d, "sv"},
|
||||
{0x081d, "sv_FI"},
|
||||
{0x041d, "sv_SE"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0441, sw, sw_KE)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x045A, syr, syr_SY)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0449, ta, ta_IN)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x044a, te, te_IN)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x041e, th, th_TH)
|
||||
|
||||
static const ILcidPosixElement ti[] = {
|
||||
{0x73, "ti"},
|
||||
{0x0873, "ti_ER"},
|
||||
{0x0473, "ti_ET"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0442, tk, tk_TM)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0464, tl, tl_PH)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0432, tn, tn_BW)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x041f, tr, tr_TR)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0444, tt, tt_RU)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0480, ug, ug_CN)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0422, uk, uk_UA)
|
||||
|
||||
static const ILcidPosixElement ur[] = {
|
||||
{0x20, "ur"},
|
||||
{0x0820, "ur_IN"},
|
||||
{0x0420, "ur_PK"}
|
||||
};
|
||||
|
||||
static const ILcidPosixElement uz[] = {
|
||||
{0x43, "uz"},
|
||||
{0x0843, "uz_UZ"}, /* Cyrillic based */
|
||||
{0x0443, "uz_Latn_UZ"} /* Latin based */
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0433, ve, ve_ZA) /* TODO: Verify the country */
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x042a, vi, vi_VN)
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0434, xh, xh_ZA) /* TODO: Verify the country */
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x046a, yo, yo_NG) /* TODO: Verify the country */
|
||||
|
||||
/* TODO: Make the locales with the script the primary locale once the names are implemented in the resources. */
|
||||
static const ILcidPosixElement zh[] = {
|
||||
{0x04, "zh"},
|
||||
{0x0804, "zh_CN"},
|
||||
{0x0804, "zh_Hans_CN"},
|
||||
{0x0c04, "zh_HK"},
|
||||
{0x0c04, "zh_Hant_HK"},
|
||||
{0x1404, "zh_MO"},
|
||||
{0x1404, "zh_Hant_MO"},
|
||||
{0x1004, "zh_SG"},
|
||||
{0x1004, "zh_Hans_SG"},
|
||||
{0x0404, "zh_TW"},
|
||||
{0x0404, "zh_Hant_TW"},
|
||||
{0x30404,"zh_TW"}, /* Bopomofo order */
|
||||
{0x30404,"zh_Hant_TW"},
|
||||
{0x20404,"zh_TW@collation=STROKE"},
|
||||
{0x20404,"zh_TW_STROKE"}, /* remove? */
|
||||
{0x20404,"zh_Hant_TW_STROKE"}
|
||||
};
|
||||
|
||||
ILCID_POSIX_ELEMENT_ARRAY(0x0435, zu, zu_ZA) /* TODO: Verify the country */
|
||||
|
||||
/* This must be static and grouped by LCID. */
|
||||
|
||||
/* non-existent ISO-639 codes */
|
||||
/*
|
||||
0x466 Edo
|
||||
0x467 Fulfulde - Nigeria
|
||||
0x43b Sami (Lappish)
|
||||
0x42e Sorbian (iso639 = dsb, hsb, wen)
|
||||
0x430 Sutu
|
||||
0x45f Tamazight (Arabic script)
|
||||
0x85f Tamazight (Latin script)
|
||||
0x478 Yi
|
||||
*/
|
||||
static const ILcidPosixMap gPosixIDmap[] = {
|
||||
ILCID_POSIX_MAP(af), /* af Afrikaans 0x36 */
|
||||
ILCID_POSIX_MAP(am), /* am Amharic 0x5e */
|
||||
ILCID_POSIX_MAP(ar), /* ar Arabic 0x01 */
|
||||
ILCID_POSIX_MAP(as), /* as Assamese 0x4d */
|
||||
ILCID_POSIX_MAP(az), /* az Azerbaijani 0x2c */
|
||||
ILCID_POSIX_MAP(be), /* be Belarusian 0x23 */
|
||||
ILCID_POSIX_MAP(bg), /* bg Bulgarian 0x02 */
|
||||
ILCID_POSIX_MAP(bn), /* bn Bengali; Bangla 0x45 */
|
||||
ILCID_POSIX_MAP(bo), /* bo Tibetan 0x51 */
|
||||
ILCID_POSIX_MAP(ca), /* ca Catalan 0x03 */
|
||||
ILCID_POSIX_MAP(chr), /* chr Cherokee 0x5c */
|
||||
ILCID_POSIX_MAP(cs_CZ), /* cs Czech 0x05 */
|
||||
ILCID_POSIX_MAP(cy), /* cy Welsh 0x52 */
|
||||
ILCID_POSIX_MAP(da), /* da Danish 0x06 */
|
||||
ILCID_POSIX_MAP(de), /* de German 0x07 */
|
||||
ILCID_POSIX_MAP(dv), /* dv Divehi 0x65 */
|
||||
ILCID_POSIX_MAP(el), /* el Greek 0x08 */
|
||||
ILCID_POSIX_MAP(en), /* en English 0x09 */
|
||||
ILCID_POSIX_MAP(en_US_POSIX), /* invariant 0x7f */
|
||||
ILCID_POSIX_MAP(es), /* es Spanish 0x0a */
|
||||
ILCID_POSIX_MAP(et), /* et Estonian 0x25 */
|
||||
ILCID_POSIX_MAP(eu), /* eu Basque 0x2d */
|
||||
ILCID_POSIX_MAP(fa), /* fa Farsi 0x29 */
|
||||
ILCID_POSIX_MAP(fi), /* fi Finnish 0x0b */
|
||||
ILCID_POSIX_MAP(fo), /* fo Faroese 0x38 */
|
||||
ILCID_POSIX_MAP(fr), /* fr French 0x0c */
|
||||
ILCID_POSIX_MAP(fy), /* fy Frisian 0x62 */
|
||||
ILCID_POSIX_MAP(ga), /* * Gaelic (Ireland,Scotland) 0x3c */
|
||||
ILCID_POSIX_MAP(gl), /* gl Galician 0x56 */
|
||||
ILCID_POSIX_MAP(gn), /* gn Guarani 0x74 */
|
||||
ILCID_POSIX_MAP(gu), /* gu Gujarati 0x47 */
|
||||
ILCID_POSIX_MAP(ha), /* ha Hausa 0x68 */
|
||||
ILCID_POSIX_MAP(haw), /* haw Hawaiian 0x75 */
|
||||
ILCID_POSIX_MAP(he), /* he Hebrew (formerly iw) 0x0d */
|
||||
ILCID_POSIX_MAP(hi), /* hi Hindi 0x39 */
|
||||
ILCID_POSIX_MAP(hr), /* * Croatian and others 0x1a */
|
||||
ILCID_POSIX_MAP(hu), /* hu Hungarian 0x0e */
|
||||
ILCID_POSIX_MAP(hy), /* hy Armenian 0x2b */
|
||||
ILCID_POSIX_MAP(id), /* id Indonesian (formerly in) 0x21 */
|
||||
ILCID_POSIX_MAP(ig), /* ig Igbo 0x70 */
|
||||
ILCID_POSIX_MAP(is), /* is Icelandic 0x0f */
|
||||
ILCID_POSIX_MAP(it), /* it Italian 0x10 */
|
||||
ILCID_POSIX_MAP(iu), /* iu Inuktitut 0x5d */
|
||||
ILCID_POSIX_MAP(iw), /* iw Hebrew 0x0d */
|
||||
ILCID_POSIX_MAP(ja), /* ja Japanese 0x11 */
|
||||
ILCID_POSIX_MAP(ka), /* ka Georgian 0x37 */
|
||||
ILCID_POSIX_MAP(kk), /* kk Kazakh 0x3f */
|
||||
ILCID_POSIX_MAP(km), /* km Khmer 0x53 */
|
||||
ILCID_POSIX_MAP(kn), /* kn Kannada 0x4b */
|
||||
ILCID_POSIX_MAP(ko), /* ko Korean 0x12 */
|
||||
ILCID_POSIX_MAP(kok), /* kok Konkani 0x57 */
|
||||
ILCID_POSIX_MAP(kr), /* kr Kanuri 0x71 */
|
||||
ILCID_POSIX_MAP(ks), /* ks Kashmiri 0x60 */
|
||||
ILCID_POSIX_MAP(ky), /* ky Kyrgyz 0x40 */
|
||||
ILCID_POSIX_MAP(la), /* la Latin 0x76 */
|
||||
ILCID_POSIX_MAP(lo), /* lo Lao 0x54 */
|
||||
ILCID_POSIX_MAP(lt), /* lt Lithuanian 0x27 */
|
||||
ILCID_POSIX_MAP(lv), /* lv Latvian, Lettish 0x26 */
|
||||
ILCID_POSIX_MAP(mi), /* mi Maori 0x81 */
|
||||
ILCID_POSIX_MAP(mk), /* mk Macedonian 0x2f */
|
||||
ILCID_POSIX_MAP(ml), /* ml Malayalam 0x4c */
|
||||
ILCID_POSIX_MAP(mn), /* mn Mongolian 0x50 */
|
||||
ILCID_POSIX_MAP(mni), /* mni Manipuri 0x58 */
|
||||
ILCID_POSIX_MAP(mr), /* mr Marathi 0x4e */
|
||||
ILCID_POSIX_MAP(ms), /* ms Malay 0x3e */
|
||||
ILCID_POSIX_MAP(mt), /* mt Maltese 0x3a */
|
||||
/* ILCID_POSIX_MAP(nb), // no Norwegian 0x14 */
|
||||
ILCID_POSIX_MAP(ne), /* ne Nepali 0x61 */
|
||||
ILCID_POSIX_MAP(nl), /* nl Dutch 0x13 */
|
||||
/* ILCID_POSIX_MAP(nn), // no Norwegian 0x14 */
|
||||
ILCID_POSIX_MAP(no), /* * Norwegian 0x14 */
|
||||
ILCID_POSIX_MAP(nso), /* nso Sotho, Northern (Sepedi dialect) 0x6c */
|
||||
ILCID_POSIX_MAP(om), /* om Oromo 0x72 */
|
||||
ILCID_POSIX_MAP(or_IN), /* or Oriya 0x48 */
|
||||
ILCID_POSIX_MAP(pa), /* pa Punjabi 0x46 */
|
||||
ILCID_POSIX_MAP(pl), /* pl Polish 0x15 */
|
||||
ILCID_POSIX_MAP(ps), /* ps Pashto 0x63 */
|
||||
ILCID_POSIX_MAP(pt), /* pt Portuguese 0x16 */
|
||||
ILCID_POSIX_MAP(qu), /* qu Quechua (correct spelling)0x6B */
|
||||
ILCID_POSIX_MAP(ro), /* ro Romanian 0x18 */
|
||||
ILCID_POSIX_MAP(root), /* root 0x00 */
|
||||
ILCID_POSIX_MAP(ru), /* ru Russian 0x19 */
|
||||
ILCID_POSIX_MAP(sa), /* sa Sanskrit 0x4f */
|
||||
ILCID_POSIX_MAP(sd), /* sd Sindhi 0x59 */
|
||||
/* ILCID_POSIX_MAP(sh), // sh Serbo-Croatian 0x1a */
|
||||
ILCID_POSIX_MAP(si), /* si Sinhalese 0x5b */
|
||||
ILCID_POSIX_MAP(sk), /* sk Slovak 0x1b */
|
||||
ILCID_POSIX_MAP(sl), /* sl Slovenian 0x24 */
|
||||
ILCID_POSIX_MAP(so), /* so Somali 0x77 */
|
||||
ILCID_POSIX_MAP(sq), /* sq Albanian 0x1c */
|
||||
/* ILCID_POSIX_MAP(sr), // sr Serbian 0x1a */
|
||||
ILCID_POSIX_MAP(sv), /* sv Swedish 0x1d */
|
||||
ILCID_POSIX_MAP(sw), /* sw Swahili 0x41 */
|
||||
ILCID_POSIX_MAP(syr), /* syr Syriac 0x5A */
|
||||
ILCID_POSIX_MAP(ta), /* ta Tamil 0x49 */
|
||||
ILCID_POSIX_MAP(te), /* te Telugu 0x4a */
|
||||
ILCID_POSIX_MAP(th), /* th Thai 0x1e */
|
||||
ILCID_POSIX_MAP(ti), /* ti Tigrigna 0x73 */
|
||||
ILCID_POSIX_MAP(tk), /* tk Turkmen 0x42 */
|
||||
ILCID_POSIX_MAP(tl), /* tl Tagalog (Filipino) 0x64 */
|
||||
ILCID_POSIX_MAP(tn), /* tn Tswana 0x32 */
|
||||
ILCID_POSIX_MAP(tr), /* tr Turkish 0x1f */
|
||||
ILCID_POSIX_MAP(tt), /* tt Tatar 0x44 */
|
||||
ILCID_POSIX_MAP(ug), /* ug Uighur 0x80 */
|
||||
ILCID_POSIX_MAP(uk), /* uk Ukrainian 0x22 */
|
||||
ILCID_POSIX_MAP(ur), /* ur Urdu 0x20 */
|
||||
ILCID_POSIX_MAP(uz), /* uz Uzbek 0x43 */
|
||||
ILCID_POSIX_MAP(ve), /* ve Venda 0x33 */
|
||||
ILCID_POSIX_MAP(vi), /* vi Vietnamese 0x2a */
|
||||
ILCID_POSIX_MAP(xh), /* xh Xhosa 0x34 */
|
||||
ILCID_POSIX_MAP(yo), /* yo Yoruba 0x6a */
|
||||
ILCID_POSIX_MAP(zh), /* zh Chinese 0x04 */
|
||||
ILCID_POSIX_MAP(zu), /* zu Zulu 0x35 */
|
||||
};
|
||||
|
||||
static const uint32_t gLocaleCount = sizeof(gPosixIDmap)/sizeof(ILcidPosixMap);
|
||||
|
||||
/**
|
||||
* Do not call this function. It is called by hostID.
|
||||
* The function is not private because this struct must stay as a C struct,
|
||||
* and this is an internal class.
|
||||
*/
|
||||
static int32_t
|
||||
idCmp(const char* id1, const char* id2)
|
||||
{
|
||||
int32_t diffIdx = 0;
|
||||
while (*id1 == *id2 && *id1 != 0) {
|
||||
diffIdx++;
|
||||
id1++;
|
||||
id2++;
|
||||
}
|
||||
return diffIdx;
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for a Windows LCID
|
||||
*
|
||||
* @param posixid the Posix style locale id.
|
||||
* @param status gets set to U_ILLEGAL_ARGUMENT_ERROR when the Posix ID has
|
||||
* no equivalent Windows LCID.
|
||||
* @return the LCID
|
||||
*/
|
||||
static uint32_t
|
||||
getHostID(const ILcidPosixMap *this_0, const char* posixID, UErrorCode* status)
|
||||
{
|
||||
int32_t bestIdx = 0;
|
||||
int32_t bestIdxDiff = 0;
|
||||
int32_t posixIDlen = (int32_t)uprv_strlen(posixID) + 1;
|
||||
uint32_t idx;
|
||||
|
||||
for (idx = 0; idx < this_0->numRegions; idx++ ) {
|
||||
int32_t sameChars = idCmp(posixID, this_0->regionMaps[idx].posixID);
|
||||
if (sameChars > bestIdxDiff && this_0->regionMaps[idx].posixID[sameChars] == 0) {
|
||||
if (posixIDlen == sameChars) {
|
||||
/* Exact match */
|
||||
return this_0->regionMaps[idx].hostID;
|
||||
}
|
||||
bestIdxDiff = sameChars;
|
||||
bestIdx = idx;
|
||||
}
|
||||
}
|
||||
if (this_0->regionMaps[bestIdx].posixID[bestIdxDiff] == 0) {
|
||||
*status = U_USING_FALLBACK_WARNING;
|
||||
return this_0->regionMaps[bestIdx].hostID;
|
||||
}
|
||||
|
||||
/*no match found */
|
||||
*status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return this_0->regionMaps->hostID;
|
||||
}
|
||||
|
||||
static const char*
|
||||
getPosixID(const ILcidPosixMap *this_0, uint32_t hostID)
|
||||
{
|
||||
uint32_t i;
|
||||
for (i = 0; i <= this_0->numRegions; i++)
|
||||
{
|
||||
if (this_0->regionMaps[i].hostID == hostID)
|
||||
{
|
||||
return this_0->regionMaps[i].posixID;
|
||||
}
|
||||
}
|
||||
|
||||
/* If you get here, then no matching region was found,
|
||||
so return the language id with the wild card region. */
|
||||
return this_0->regionMaps[0].posixID;
|
||||
}
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
//
|
||||
// LCID --> POSIX
|
||||
//
|
||||
/////////////////////////////////////
|
||||
*/
|
||||
|
||||
U_CAPI const char *
|
||||
uprv_convertToPosix(uint32_t hostid, UErrorCode* status)
|
||||
{
|
||||
uint16_t langID = LANGUAGE_LCID(hostid);
|
||||
uint32_t index;
|
||||
|
||||
for (index = 0; index < gLocaleCount; index++)
|
||||
{
|
||||
if (langID == gPosixIDmap[index].regionMaps->hostID)
|
||||
{
|
||||
return getPosixID(&gPosixIDmap[index], hostid);
|
||||
}
|
||||
}
|
||||
|
||||
/* no match found */
|
||||
*status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
//////////////////////////////////////
|
||||
//
|
||||
// POSIX --> LCID
|
||||
//
|
||||
/////////////////////////////////////
|
||||
*/
|
||||
|
||||
U_CAPI uint32_t
|
||||
uprv_convertToLCID(const char* posixID, UErrorCode* status)
|
||||
{
|
||||
|
||||
uint32_t low = 0;
|
||||
uint32_t high = gLocaleCount;
|
||||
uint32_t mid = high;
|
||||
uint32_t oldmid = 0;
|
||||
int32_t compVal;
|
||||
char langID[ULOC_FULLNAME_CAPACITY];
|
||||
|
||||
uint32_t value = 0;
|
||||
uint32_t fallbackValue = (uint32_t)-1;
|
||||
UErrorCode myStatus;
|
||||
uint32_t idx;
|
||||
|
||||
/* Check for incomplete id. */
|
||||
if (!posixID || uprv_strlen(posixID) < 2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
uloc_getLanguage(posixID, langID, sizeof(langID), status);
|
||||
if (U_FAILURE(*status)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Binary search for the map entry for normal cases */
|
||||
|
||||
while (high > low) /*binary search*/{
|
||||
|
||||
mid = (high+low) >> 1; /*Finds median*/
|
||||
|
||||
if (mid == oldmid)
|
||||
break;
|
||||
|
||||
compVal = uprv_strcmp(langID, gPosixIDmap[mid].regionMaps->posixID);
|
||||
if (compVal < 0){
|
||||
high = mid;
|
||||
}
|
||||
else if (compVal > 0){
|
||||
low = mid;
|
||||
}
|
||||
else /*we found it*/{
|
||||
return getHostID(&gPosixIDmap[mid], posixID, status);
|
||||
}
|
||||
oldmid = mid;
|
||||
}
|
||||
|
||||
/*
|
||||
* Sometimes we can't do a binary search on posixID because some LCIDs
|
||||
* go to different locales. We hit one of those special cases.
|
||||
*/
|
||||
for (idx = 0; idx < gLocaleCount; idx++ ) {
|
||||
myStatus = U_ZERO_ERROR;
|
||||
value = getHostID(&gPosixIDmap[idx], posixID, &myStatus);
|
||||
if (myStatus == U_ZERO_ERROR) {
|
||||
return value;
|
||||
}
|
||||
else if (myStatus == U_USING_FALLBACK_WARNING) {
|
||||
fallbackValue = value;
|
||||
}
|
||||
}
|
||||
|
||||
if (fallbackValue != (uint32_t)-1) {
|
||||
*status = U_USING_FALLBACK_WARNING;
|
||||
return fallbackValue;
|
||||
}
|
||||
|
||||
/* no match found */
|
||||
*status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return 0; /* return international (root) */
|
||||
}
|
||||
|
43
extern/icu/source/common/locmap.h
vendored
43
extern/icu/source/common/locmap.h
vendored
@ -1,43 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 1996-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/*
|
||||
*============================================================================
|
||||
*
|
||||
* File locmap.h : Locale Mapping Classes
|
||||
*
|
||||
*
|
||||
*
|
||||
* Created by: Helena Shih
|
||||
*
|
||||
* Modification History:
|
||||
*
|
||||
* Date Name Description
|
||||
* 3/11/97 aliu Added setId().
|
||||
* 4/20/99 Madhu Added T_convertToPosix()
|
||||
* 09/18/00 george Removed the memory leaks.
|
||||
* 08/23/01 george Convert to C
|
||||
*============================================================================
|
||||
*/
|
||||
|
||||
/* include this first so that we are sure to get WIN32 defined */
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#ifndef LOCMAP_H
|
||||
#define LOCMAP_H
|
||||
|
||||
U_CAPI const char* U_EXPORT2
|
||||
uprv_defaultCodePageForLocale(const char *locale);
|
||||
|
||||
#define LANGUAGE_LCID(hostID) (uint16_t)(0x03FF & hostID)
|
||||
|
||||
U_CAPI const char *uprv_convertToPosix(uint32_t hostid, UErrorCode* status);
|
||||
|
||||
U_CAPI uint32_t uprv_convertToLCID(const char* posixID, UErrorCode* status);
|
||||
|
||||
#endif /* LOCMAP_H */
|
11
extern/icu/source/common/msvcres.h
vendored
11
extern/icu/source/common/msvcres.h
vendored
@ -1,11 +0,0 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Copyright (c) 2003 International Business Machines
|
||||
// Corporation and others. All Rights Reserved.
|
||||
//
|
||||
// Used by common.rc and other .rc files.
|
||||
//Do not edit with Microsoft Developer Studio because it will modify this
|
||||
//header the wrong way. This is here to prevent Visual Studio .NET from
|
||||
//unnessarily building the resource files when it's not needed.
|
||||
//
|
||||
#include "unicode/uversion.h"
|
||||
|
85
extern/icu/source/common/mutex.h
vendored
85
extern/icu/source/common/mutex.h
vendored
@ -1,85 +0,0 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* Copyright (C) 1997-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
//----------------------------------------------------------------------------
|
||||
// File: mutex.h
|
||||
//
|
||||
// Lightweight C++ wrapper for umtx_ C mutex functions
|
||||
//
|
||||
// Author: Alan Liu 1/31/97
|
||||
// History:
|
||||
// 06/04/97 helena Updated setImplementation as per feedback from 5/21 drop.
|
||||
// 04/07/1999 srl refocused as a thin wrapper
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
#ifndef MUTEX_H
|
||||
#define MUTEX_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/uobject.h"
|
||||
#include "umutex.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Code within that accesses shared static or global data should
|
||||
// should instantiate a Mutex object while doing so. You should make your own
|
||||
// private mutex where possible.
|
||||
|
||||
// For example:
|
||||
//
|
||||
// UMTX myMutex;
|
||||
//
|
||||
// int InitializeMyMutex()
|
||||
// {
|
||||
// umtx_init( &myMutex );
|
||||
// return 0;
|
||||
// }
|
||||
//
|
||||
// static int initializeMyMutex = InitializeMyMutex();
|
||||
//
|
||||
// void Function(int arg1, int arg2)
|
||||
// {
|
||||
// static Object* foo; // Shared read-write object
|
||||
// Mutex mutex(&myMutex); // or no args for the global lock
|
||||
// foo->Method();
|
||||
// // When 'mutex' goes out of scope and gets destroyed here, the lock is released
|
||||
// }
|
||||
//
|
||||
// Note: Do NOT use the form 'Mutex mutex();' as that merely forward-declares a function
|
||||
// returning a Mutex. This is a common mistake which silently slips through the
|
||||
// compiler!!
|
||||
//
|
||||
|
||||
class U_COMMON_API Mutex : public UMemory {
|
||||
public:
|
||||
inline Mutex(UMTX *mutex = NULL);
|
||||
inline ~Mutex();
|
||||
|
||||
private:
|
||||
UMTX *fMutex;
|
||||
|
||||
Mutex(const Mutex &other); // forbid copying of this class
|
||||
Mutex &operator=(const Mutex &other); // forbid copying of this class
|
||||
};
|
||||
|
||||
inline Mutex::Mutex(UMTX *mutex)
|
||||
: fMutex(mutex)
|
||||
{
|
||||
umtx_lock(fMutex);
|
||||
}
|
||||
|
||||
inline Mutex::~Mutex()
|
||||
{
|
||||
umtx_unlock(fMutex);
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif //_MUTEX_
|
||||
//eof
|
611
extern/icu/source/common/normlzr.cpp
vendored
611
extern/icu/source/common/normlzr.cpp
vendored
@ -1,611 +0,0 @@
|
||||
/*
|
||||
*************************************************************************
|
||||
* COPYRIGHT:
|
||||
* Copyright (c) 1996-2003, International Business Machines Corporation and
|
||||
* others. All Rights Reserved.
|
||||
*************************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_NORMALIZATION
|
||||
|
||||
#include "unicode/unistr.h"
|
||||
#include "unicode/chariter.h"
|
||||
#include "unicode/schriter.h"
|
||||
#include "unicode/uchriter.h"
|
||||
#include "unicode/uiter.h"
|
||||
#include "unicode/normlzr.h"
|
||||
#include "cmemory.h"
|
||||
#include "unormimp.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Normalizer)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Constructors and other boilerplate
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
Normalizer::Normalizer(const UnicodeString& str, UNormalizationMode mode) :
|
||||
UObject(), fUMode(mode), fOptions(0),
|
||||
currentIndex(0), nextIndex(0),
|
||||
buffer(), bufferPos(0)
|
||||
{
|
||||
init(new StringCharacterIterator(str));
|
||||
}
|
||||
|
||||
Normalizer::Normalizer(const UChar *str, int32_t length, UNormalizationMode mode) :
|
||||
UObject(), fUMode(mode), fOptions(0),
|
||||
currentIndex(0), nextIndex(0),
|
||||
buffer(), bufferPos(0)
|
||||
{
|
||||
init(new UCharCharacterIterator(str, length));
|
||||
}
|
||||
|
||||
Normalizer::Normalizer(const CharacterIterator& iter, UNormalizationMode mode) :
|
||||
UObject(), fUMode(mode), fOptions(0),
|
||||
currentIndex(0), nextIndex(0),
|
||||
buffer(), bufferPos(0)
|
||||
{
|
||||
init(iter.clone());
|
||||
}
|
||||
|
||||
Normalizer::Normalizer(const Normalizer ©) :
|
||||
UObject(copy), fUMode(copy.fUMode), fOptions(copy.fOptions),
|
||||
currentIndex(copy.currentIndex), nextIndex(copy.nextIndex),
|
||||
buffer(copy.buffer), bufferPos(copy.bufferPos)
|
||||
{
|
||||
init(((CharacterIterator *)(copy.text->context))->clone());
|
||||
}
|
||||
|
||||
static const UChar _NUL=0;
|
||||
|
||||
void
|
||||
Normalizer::init(CharacterIterator *iter) {
|
||||
UErrorCode errorCode=U_ZERO_ERROR;
|
||||
|
||||
text=(UCharIterator *)uprv_malloc(sizeof(UCharIterator));
|
||||
if(text!=NULL) {
|
||||
if(unorm_haveData(&errorCode)) {
|
||||
uiter_setCharacterIterator(text, iter);
|
||||
} else {
|
||||
delete iter;
|
||||
uiter_setCharacterIterator(text, new UCharCharacterIterator(&_NUL, 0));
|
||||
}
|
||||
} else {
|
||||
delete iter;
|
||||
}
|
||||
}
|
||||
|
||||
Normalizer::~Normalizer()
|
||||
{
|
||||
if(text!=NULL) {
|
||||
delete (CharacterIterator *)text->context;
|
||||
uprv_free(text);
|
||||
}
|
||||
}
|
||||
|
||||
Normalizer*
|
||||
Normalizer::clone() const
|
||||
{
|
||||
if(this!=0) {
|
||||
return new Normalizer(*this);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a hash code for this iterator.
|
||||
*/
|
||||
int32_t Normalizer::hashCode() const
|
||||
{
|
||||
return ((CharacterIterator *)(text->context))->hashCode() + fUMode + fOptions + buffer.hashCode() + bufferPos + currentIndex + nextIndex;
|
||||
}
|
||||
|
||||
UBool Normalizer::operator==(const Normalizer& that) const
|
||||
{
|
||||
return
|
||||
this==&that ||
|
||||
fUMode==that.fUMode &&
|
||||
fOptions==that.fOptions &&
|
||||
*((CharacterIterator *)(text->context))==*((CharacterIterator *)(that.text->context)) &&
|
||||
buffer==that.buffer &&
|
||||
bufferPos==that.bufferPos &&
|
||||
nextIndex==that.nextIndex;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Static utility methods
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void
|
||||
Normalizer::normalize(const UnicodeString& source,
|
||||
UNormalizationMode mode, int32_t options,
|
||||
UnicodeString& result,
|
||||
UErrorCode &status) {
|
||||
if(source.isBogus() || U_FAILURE(status)) {
|
||||
result.setToBogus();
|
||||
if(U_SUCCESS(status)) {
|
||||
status=U_ILLEGAL_ARGUMENT_ERROR;
|
||||
}
|
||||
} else {
|
||||
UnicodeString localDest;
|
||||
UnicodeString *dest;
|
||||
|
||||
if(&source!=&result) {
|
||||
dest=&result;
|
||||
} else {
|
||||
// the source and result strings are the same object, use a temporary one
|
||||
dest=&localDest;
|
||||
}
|
||||
|
||||
UChar *buffer=dest->getBuffer(source.length());
|
||||
int32_t length=unorm_internalNormalize(buffer, dest->getCapacity(),
|
||||
source.getBuffer(), source.length(),
|
||||
mode, options,
|
||||
&status);
|
||||
dest->releaseBuffer(length);
|
||||
if(status==U_BUFFER_OVERFLOW_ERROR) {
|
||||
status=U_ZERO_ERROR;
|
||||
buffer=dest->getBuffer(length);
|
||||
length=unorm_internalNormalize(buffer, dest->getCapacity(),
|
||||
source.getBuffer(), source.length(),
|
||||
mode, options,
|
||||
&status);
|
||||
dest->releaseBuffer(length);
|
||||
}
|
||||
|
||||
if(dest==&localDest) {
|
||||
result=*dest;
|
||||
}
|
||||
if(U_FAILURE(status)) {
|
||||
result.setToBogus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Normalizer::compose(const UnicodeString& source,
|
||||
UBool compat, int32_t options,
|
||||
UnicodeString& result,
|
||||
UErrorCode &status) {
|
||||
if(source.isBogus() || U_FAILURE(status)) {
|
||||
result.setToBogus();
|
||||
if(U_SUCCESS(status)) {
|
||||
status=U_ILLEGAL_ARGUMENT_ERROR;
|
||||
}
|
||||
} else {
|
||||
UnicodeString localDest;
|
||||
UnicodeString *dest;
|
||||
|
||||
if(&source!=&result) {
|
||||
dest=&result;
|
||||
} else {
|
||||
// the source and result strings are the same object, use a temporary one
|
||||
dest=&localDest;
|
||||
}
|
||||
|
||||
UChar *buffer=dest->getBuffer(source.length());
|
||||
int32_t length=unorm_compose(buffer, dest->getCapacity(),
|
||||
source.getBuffer(), source.length(),
|
||||
compat, options,
|
||||
&status);
|
||||
dest->releaseBuffer(length);
|
||||
if(status==U_BUFFER_OVERFLOW_ERROR) {
|
||||
status=U_ZERO_ERROR;
|
||||
buffer=dest->getBuffer(length);
|
||||
length=unorm_compose(buffer, dest->getCapacity(),
|
||||
source.getBuffer(), source.length(),
|
||||
compat, options,
|
||||
&status);
|
||||
dest->releaseBuffer(length);
|
||||
}
|
||||
|
||||
if(dest==&localDest) {
|
||||
result=*dest;
|
||||
}
|
||||
if(U_FAILURE(status)) {
|
||||
result.setToBogus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Normalizer::decompose(const UnicodeString& source,
|
||||
UBool compat, int32_t options,
|
||||
UnicodeString& result,
|
||||
UErrorCode &status) {
|
||||
if(source.isBogus() || U_FAILURE(status)) {
|
||||
result.setToBogus();
|
||||
if(U_SUCCESS(status)) {
|
||||
status=U_ILLEGAL_ARGUMENT_ERROR;
|
||||
}
|
||||
} else {
|
||||
UnicodeString localDest;
|
||||
UnicodeString *dest;
|
||||
|
||||
if(&source!=&result) {
|
||||
dest=&result;
|
||||
} else {
|
||||
// the source and result strings are the same object, use a temporary one
|
||||
dest=&localDest;
|
||||
}
|
||||
|
||||
UChar *buffer=dest->getBuffer(source.length());
|
||||
int32_t length=unorm_decompose(buffer, dest->getCapacity(),
|
||||
source.getBuffer(), source.length(),
|
||||
compat, options,
|
||||
&status);
|
||||
dest->releaseBuffer(length);
|
||||
if(status==U_BUFFER_OVERFLOW_ERROR) {
|
||||
status=U_ZERO_ERROR;
|
||||
buffer=dest->getBuffer(length);
|
||||
length=unorm_decompose(buffer, dest->getCapacity(),
|
||||
source.getBuffer(), source.length(),
|
||||
compat, options,
|
||||
&status);
|
||||
dest->releaseBuffer(length);
|
||||
}
|
||||
|
||||
if(dest==&localDest) {
|
||||
result=*dest;
|
||||
}
|
||||
if(U_FAILURE(status)) {
|
||||
result.setToBogus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UnicodeString &
|
||||
Normalizer::concatenate(UnicodeString &left, UnicodeString &right,
|
||||
UnicodeString &result,
|
||||
UNormalizationMode mode, int32_t options,
|
||||
UErrorCode &errorCode) {
|
||||
if(left.isBogus() || right.isBogus() || U_FAILURE(errorCode)) {
|
||||
result.setToBogus();
|
||||
if(U_SUCCESS(errorCode)) {
|
||||
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
|
||||
}
|
||||
} else {
|
||||
UnicodeString localDest;
|
||||
UnicodeString *dest;
|
||||
|
||||
if(&left!=&result && &right!=&result) {
|
||||
dest=&result;
|
||||
} else {
|
||||
// the source and result strings are the same object, use a temporary one
|
||||
dest=&localDest;
|
||||
}
|
||||
|
||||
UChar *buffer=dest->getBuffer(left.length()+right.length());
|
||||
int32_t length=unorm_concatenate(left.getBuffer(), left.length(),
|
||||
right.getBuffer(), right.length(),
|
||||
buffer, dest->getCapacity(),
|
||||
mode, options,
|
||||
&errorCode);
|
||||
dest->releaseBuffer(length);
|
||||
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
|
||||
errorCode=U_ZERO_ERROR;
|
||||
buffer=dest->getBuffer(length);
|
||||
int32_t length=unorm_concatenate(left.getBuffer(), left.length(),
|
||||
right.getBuffer(), right.length(),
|
||||
buffer, dest->getCapacity(),
|
||||
mode, options,
|
||||
&errorCode);
|
||||
dest->releaseBuffer(length);
|
||||
}
|
||||
|
||||
if(dest==&localDest) {
|
||||
result=*dest;
|
||||
}
|
||||
if(U_FAILURE(errorCode)) {
|
||||
result.setToBogus();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Iteration API
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Return the current character in the normalized text.
|
||||
*/
|
||||
UChar32 Normalizer::current() {
|
||||
if(bufferPos<buffer.length() || nextNormalize()) {
|
||||
return buffer.char32At(bufferPos);
|
||||
} else {
|
||||
return DONE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the next character in the normalized text and advance
|
||||
* the iteration position by one. If the end
|
||||
* of the text has already been reached, {@link #DONE} is returned.
|
||||
*/
|
||||
UChar32 Normalizer::next() {
|
||||
if(bufferPos<buffer.length() || nextNormalize()) {
|
||||
UChar32 c=buffer.char32At(bufferPos);
|
||||
bufferPos+=UTF_CHAR_LENGTH(c);
|
||||
return c;
|
||||
} else {
|
||||
return DONE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the previous character in the normalized text and decrement
|
||||
* the iteration position by one. If the beginning
|
||||
* of the text has already been reached, {@link #DONE} is returned.
|
||||
*/
|
||||
UChar32 Normalizer::previous() {
|
||||
if(bufferPos>0 || previousNormalize()) {
|
||||
UChar32 c=buffer.char32At(bufferPos-1);
|
||||
bufferPos-=UTF_CHAR_LENGTH(c);
|
||||
return c;
|
||||
} else {
|
||||
return DONE;
|
||||
}
|
||||
}
|
||||
|
||||
void Normalizer::reset() {
|
||||
currentIndex=nextIndex=text->move(text, 0, UITER_START);
|
||||
clearBuffer();
|
||||
}
|
||||
|
||||
void
|
||||
Normalizer::setIndexOnly(int32_t index) {
|
||||
currentIndex=nextIndex=text->move(text, index, UITER_ZERO); // validates index
|
||||
clearBuffer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the first character in the normalized text-> This resets
|
||||
* the <tt>Normalizer's</tt> position to the beginning of the text->
|
||||
*/
|
||||
UChar32 Normalizer::first() {
|
||||
reset();
|
||||
return next();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the last character in the normalized text-> This resets
|
||||
* the <tt>Normalizer's</tt> position to be just before the
|
||||
* the input text corresponding to that normalized character.
|
||||
*/
|
||||
UChar32 Normalizer::last() {
|
||||
currentIndex=nextIndex=text->move(text, 0, UITER_LIMIT);
|
||||
clearBuffer();
|
||||
return previous();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current iteration position in the input text that is
|
||||
* being normalized. This method is useful in applications such as
|
||||
* searching, where you need to be able to determine the position in
|
||||
* the input text that corresponds to a given normalized output character.
|
||||
* <p>
|
||||
* <b>Note:</b> This method sets the position in the <em>input</em>, while
|
||||
* {@link #next} and {@link #previous} iterate through characters in the
|
||||
* <em>output</em>. This means that there is not necessarily a one-to-one
|
||||
* correspondence between characters returned by <tt>next</tt> and
|
||||
* <tt>previous</tt> and the indices passed to and returned from
|
||||
* <tt>setIndex</tt> and {@link #getIndex}.
|
||||
*
|
||||
*/
|
||||
int32_t Normalizer::getIndex() const {
|
||||
if(bufferPos<buffer.length()) {
|
||||
return currentIndex;
|
||||
} else {
|
||||
return nextIndex;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the index of the start of the input text-> This is the begin index
|
||||
* of the <tt>CharacterIterator</tt> or the start (i.e. 0) of the <tt>String</tt>
|
||||
* over which this <tt>Normalizer</tt> is iterating
|
||||
*/
|
||||
int32_t Normalizer::startIndex() const {
|
||||
return text->getIndex(text, UITER_START);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the index of the end of the input text-> This is the end index
|
||||
* of the <tt>CharacterIterator</tt> or the length of the <tt>String</tt>
|
||||
* over which this <tt>Normalizer</tt> is iterating
|
||||
*/
|
||||
int32_t Normalizer::endIndex() const {
|
||||
return text->getIndex(text, UITER_LIMIT);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Property access methods
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void
|
||||
Normalizer::setMode(UNormalizationMode newMode)
|
||||
{
|
||||
fUMode = newMode;
|
||||
}
|
||||
|
||||
UNormalizationMode
|
||||
Normalizer::getUMode() const
|
||||
{
|
||||
return fUMode;
|
||||
}
|
||||
|
||||
void
|
||||
Normalizer::setOption(int32_t option,
|
||||
UBool value)
|
||||
{
|
||||
if (value) {
|
||||
fOptions |= option;
|
||||
} else {
|
||||
fOptions &= (~option);
|
||||
}
|
||||
}
|
||||
|
||||
UBool
|
||||
Normalizer::getOption(int32_t option) const
|
||||
{
|
||||
return (fOptions & option) != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the input text over which this <tt>Normalizer</tt> will iterate.
|
||||
* The iteration position is set to the beginning of the input text->
|
||||
*/
|
||||
void
|
||||
Normalizer::setText(const UnicodeString& newText,
|
||||
UErrorCode &status)
|
||||
{
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
CharacterIterator *newIter = new StringCharacterIterator(newText);
|
||||
if (newIter == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
delete (CharacterIterator *)(text->context);
|
||||
text->context = newIter;
|
||||
reset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the input text over which this <tt>Normalizer</tt> will iterate.
|
||||
* The iteration position is set to the beginning of the string.
|
||||
*/
|
||||
void
|
||||
Normalizer::setText(const CharacterIterator& newText,
|
||||
UErrorCode &status)
|
||||
{
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
CharacterIterator *newIter = newText.clone();
|
||||
if (newIter == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
delete (CharacterIterator *)(text->context);
|
||||
text->context = newIter;
|
||||
reset();
|
||||
}
|
||||
|
||||
void
|
||||
Normalizer::setText(const UChar* newText,
|
||||
int32_t length,
|
||||
UErrorCode &status)
|
||||
{
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
CharacterIterator *newIter = new UCharCharacterIterator(newText, length);
|
||||
if (newIter == NULL) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
delete (CharacterIterator *)(text->context);
|
||||
text->context = newIter;
|
||||
reset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies the text under iteration into the UnicodeString referred to by "result".
|
||||
* @param result Receives a copy of the text under iteration.
|
||||
*/
|
||||
void
|
||||
Normalizer::getText(UnicodeString& result)
|
||||
{
|
||||
((CharacterIterator *)(text->context))->getText(result);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Private utility methods
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void Normalizer::clearBuffer() {
|
||||
buffer.remove();
|
||||
bufferPos=0;
|
||||
}
|
||||
|
||||
UBool
|
||||
Normalizer::nextNormalize() {
|
||||
UChar *p;
|
||||
int32_t length;
|
||||
UErrorCode errorCode;
|
||||
|
||||
clearBuffer();
|
||||
currentIndex=nextIndex;
|
||||
text->move(text, nextIndex, UITER_ZERO);
|
||||
if(!text->hasNext(text)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
errorCode=U_ZERO_ERROR;
|
||||
p=buffer.getBuffer(-1);
|
||||
length=unorm_next(text, p, buffer.getCapacity(),
|
||||
fUMode, fOptions,
|
||||
TRUE, 0,
|
||||
&errorCode);
|
||||
buffer.releaseBuffer(length);
|
||||
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
|
||||
errorCode=U_ZERO_ERROR;
|
||||
text->move(text, nextIndex, UITER_ZERO);
|
||||
p=buffer.getBuffer(length);
|
||||
length=unorm_next(text, p, buffer.getCapacity(),
|
||||
fUMode, fOptions,
|
||||
TRUE, 0,
|
||||
&errorCode);
|
||||
buffer.releaseBuffer(length);
|
||||
}
|
||||
|
||||
nextIndex=text->getIndex(text, UITER_CURRENT);
|
||||
return U_SUCCESS(errorCode) && !buffer.isEmpty();
|
||||
}
|
||||
|
||||
UBool
|
||||
Normalizer::previousNormalize() {
|
||||
UChar *p;
|
||||
int32_t length;
|
||||
UErrorCode errorCode;
|
||||
|
||||
clearBuffer();
|
||||
nextIndex=currentIndex;
|
||||
text->move(text, currentIndex, UITER_ZERO);
|
||||
if(!text->hasPrevious(text)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
errorCode=U_ZERO_ERROR;
|
||||
p=buffer.getBuffer(-1);
|
||||
length=unorm_previous(text, p, buffer.getCapacity(),
|
||||
fUMode, fOptions,
|
||||
TRUE, 0,
|
||||
&errorCode);
|
||||
buffer.releaseBuffer(length);
|
||||
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
|
||||
errorCode=U_ZERO_ERROR;
|
||||
text->move(text, currentIndex, UITER_ZERO);
|
||||
p=buffer.getBuffer(length);
|
||||
length=unorm_previous(text, p, buffer.getCapacity(),
|
||||
fUMode, fOptions,
|
||||
TRUE, 0,
|
||||
&errorCode);
|
||||
buffer.releaseBuffer(length);
|
||||
}
|
||||
|
||||
bufferPos=buffer.length();
|
||||
currentIndex=text->getIndex(text, UITER_CURRENT);
|
||||
return U_SUCCESS(errorCode) && !buffer.isEmpty();
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif /* #if !UCONFIG_NO_NORMALIZATION */
|
21
extern/icu/source/common/parsepos.cpp
vendored
21
extern/icu/source/common/parsepos.cpp
vendored
@ -1,21 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 2003-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/parsepos.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ParsePosition)
|
||||
|
||||
ParsePosition::~ParsePosition() {}
|
||||
|
||||
ParsePosition *
|
||||
ParsePosition::clone() const {
|
||||
return new ParsePosition(*this);
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
636
extern/icu/source/common/propname.cpp
vendored
636
extern/icu/source/common/propname.cpp
vendored
@ -1,636 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (c) 2002-2004, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
* Author: Alan Liu
|
||||
* Created: October 30 2002
|
||||
* Since: ICU 2.4
|
||||
**********************************************************************
|
||||
*/
|
||||
#include "propname.h"
|
||||
#include "unicode/uchar.h"
|
||||
#include "unicode/udata.h"
|
||||
#include "umutex.h"
|
||||
#include "cmemory.h"
|
||||
#include "cstring.h"
|
||||
#include "uarrsort.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// PropertyAliases implementation
|
||||
|
||||
const char*
|
||||
PropertyAliases::chooseNameInGroup(Offset offset,
|
||||
UPropertyNameChoice choice) const {
|
||||
int32_t c = choice;
|
||||
if (!offset || c < 0) {
|
||||
return NULL;
|
||||
}
|
||||
const Offset* p = (const Offset*) getPointer(offset);
|
||||
while (c-- > 0) {
|
||||
if (*p++ < 0) return NULL;
|
||||
}
|
||||
Offset a = *p;
|
||||
if (a < 0) a = -a;
|
||||
return (const char*) getPointerNull(a);
|
||||
}
|
||||
|
||||
const ValueMap*
|
||||
PropertyAliases::getValueMap(EnumValue prop) const {
|
||||
NonContiguousEnumToOffset* e2o = (NonContiguousEnumToOffset*) getPointer(enumToValue_offset);
|
||||
Offset a = e2o->getOffset(prop);
|
||||
return (const ValueMap*) (a ? getPointerNull(a) : NULL);
|
||||
}
|
||||
|
||||
inline const char*
|
||||
PropertyAliases::getPropertyName(EnumValue prop,
|
||||
UPropertyNameChoice choice) const {
|
||||
NonContiguousEnumToOffset* e2n = (NonContiguousEnumToOffset*) getPointer(enumToName_offset);
|
||||
return chooseNameInGroup(e2n->getOffset(prop), choice);
|
||||
}
|
||||
|
||||
inline EnumValue
|
||||
PropertyAliases::getPropertyEnum(const char* alias) const {
|
||||
NameToEnum* n2e = (NameToEnum*) getPointer(nameToEnum_offset);
|
||||
return n2e->getEnum(alias, *this);
|
||||
}
|
||||
|
||||
inline const char*
|
||||
PropertyAliases::getPropertyValueName(EnumValue prop,
|
||||
EnumValue value,
|
||||
UPropertyNameChoice choice) const {
|
||||
const ValueMap* vm = getValueMap(prop);
|
||||
if (!vm) return NULL;
|
||||
Offset a;
|
||||
if (vm->enumToName_offset) {
|
||||
a = ((EnumToOffset*) getPointer(vm->enumToName_offset))->
|
||||
getOffset(value);
|
||||
} else {
|
||||
a = ((NonContiguousEnumToOffset*) getPointer(vm->ncEnumToName_offset))->
|
||||
getOffset(value);
|
||||
}
|
||||
return chooseNameInGroup(a, choice);
|
||||
}
|
||||
|
||||
inline EnumValue
|
||||
PropertyAliases::getPropertyValueEnum(EnumValue prop,
|
||||
const char* alias) const {
|
||||
const ValueMap* vm = getValueMap(prop);
|
||||
if (!vm) return UCHAR_INVALID_CODE;
|
||||
NameToEnum* n2e = (NameToEnum*) getPointer(vm->nameToEnum_offset);
|
||||
return n2e->getEnum(alias, *this);
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// UDataMemory structures
|
||||
|
||||
static const PropertyAliases* PNAME = NULL;
|
||||
static UDataMemory* UDATA = NULL;
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// UDataMemory loading/unloading
|
||||
|
||||
/**
|
||||
* udata callback to verify the zone data.
|
||||
*/
|
||||
U_CDECL_BEGIN
|
||||
static UBool U_CALLCONV
|
||||
isPNameAcceptable(void* /*context*/,
|
||||
const char* /*type*/, const char* /*name*/,
|
||||
const UDataInfo* info) {
|
||||
return
|
||||
info->size >= sizeof(UDataInfo) &&
|
||||
info->isBigEndian == U_IS_BIG_ENDIAN &&
|
||||
info->charsetFamily == U_CHARSET_FAMILY &&
|
||||
info->dataFormat[0] == PNAME_SIG_0 &&
|
||||
info->dataFormat[1] == PNAME_SIG_1 &&
|
||||
info->dataFormat[2] == PNAME_SIG_2 &&
|
||||
info->dataFormat[3] == PNAME_SIG_3 &&
|
||||
info->formatVersion[0] == PNAME_FORMAT_VERSION;
|
||||
}
|
||||
|
||||
UBool
|
||||
pname_cleanup() {
|
||||
if (UDATA) {
|
||||
udata_close(UDATA);
|
||||
UDATA = NULL;
|
||||
}
|
||||
PNAME = NULL;
|
||||
return TRUE;
|
||||
}
|
||||
U_CDECL_END
|
||||
|
||||
/**
|
||||
* Load the property names data. Caller should check that data is
|
||||
* not loaded BEFORE calling this function. Returns TRUE if the load
|
||||
* succeeds.
|
||||
*/
|
||||
static UBool _load() {
|
||||
UErrorCode ec = U_ZERO_ERROR;
|
||||
UDataMemory* data =
|
||||
udata_openChoice(0, PNAME_DATA_TYPE, PNAME_DATA_NAME,
|
||||
isPNameAcceptable, 0, &ec);
|
||||
if (U_SUCCESS(ec)) {
|
||||
umtx_lock(NULL);
|
||||
if (UDATA == NULL) {
|
||||
UDATA = data;
|
||||
PNAME = (const PropertyAliases*) udata_getMemory(UDATA);
|
||||
data = NULL;
|
||||
}
|
||||
umtx_unlock(NULL);
|
||||
}
|
||||
if (data) {
|
||||
udata_close(data);
|
||||
}
|
||||
return PNAME!=NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inline function that expands to code that does a lazy load of the
|
||||
* property names data. If the data is already loaded, avoids an
|
||||
* unnecessary function call. If the data is not loaded, call _load()
|
||||
* to load it, and return TRUE if the load succeeds.
|
||||
*/
|
||||
static inline UBool load() {
|
||||
umtx_lock(NULL);
|
||||
UBool f = (PNAME!=NULL);
|
||||
umtx_unlock(NULL);
|
||||
return f || _load();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// Public API implementation
|
||||
|
||||
// The C API is just a thin wrapper. Each function obtains a pointer
|
||||
// to the singleton PropertyAliases, and calls the appropriate method
|
||||
// on it. If it cannot obtain a pointer, because valid data is not
|
||||
// available, then it returns NULL or UCHAR_INVALID_CODE.
|
||||
|
||||
U_CAPI const char* U_EXPORT2
|
||||
u_getPropertyName(UProperty property,
|
||||
UPropertyNameChoice nameChoice) {
|
||||
return load() ? PNAME->getPropertyName(property, nameChoice)
|
||||
: NULL;
|
||||
}
|
||||
|
||||
U_CAPI UProperty U_EXPORT2
|
||||
u_getPropertyEnum(const char* alias) {
|
||||
UProperty p = load() ? (UProperty) PNAME->getPropertyEnum(alias)
|
||||
: UCHAR_INVALID_CODE;
|
||||
return p;
|
||||
}
|
||||
|
||||
U_CAPI const char* U_EXPORT2
|
||||
u_getPropertyValueName(UProperty property,
|
||||
int32_t value,
|
||||
UPropertyNameChoice nameChoice) {
|
||||
return load() ? PNAME->getPropertyValueName(property, value, nameChoice)
|
||||
: NULL;
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
u_getPropertyValueEnum(UProperty property,
|
||||
const char* alias) {
|
||||
return load() ? PNAME->getPropertyValueEnum(property, alias)
|
||||
: (int32_t)UCHAR_INVALID_CODE;
|
||||
}
|
||||
|
||||
/* data swapping ------------------------------------------------------------ */
|
||||
|
||||
/*
|
||||
* Sub-structure-swappers use the temp array (which is as large as the
|
||||
* actual data) for intermediate storage,
|
||||
* as well as to indicate if a particular structure has been swapped already.
|
||||
* The temp array is initially reset to all 0.
|
||||
* pos is the byte offset of the sub-structure in the inBytes/outBytes/temp arrays.
|
||||
*/
|
||||
|
||||
int32_t
|
||||
EnumToOffset::swap(const UDataSwapper *ds,
|
||||
const uint8_t *inBytes, int32_t length, uint8_t *outBytes,
|
||||
uint8_t *temp, int32_t pos,
|
||||
UErrorCode *pErrorCode) {
|
||||
const EnumToOffset *inMap;
|
||||
EnumToOffset *outMap, *tempMap;
|
||||
int32_t size;
|
||||
|
||||
tempMap=(EnumToOffset *)(temp+pos);
|
||||
if(tempMap->enumStart!=0 || tempMap->enumLimit!=0) {
|
||||
/* this map was swapped already */
|
||||
size=tempMap->getSize();
|
||||
return size;
|
||||
}
|
||||
|
||||
inMap=(const EnumToOffset *)(inBytes+pos);
|
||||
outMap=(EnumToOffset *)(outBytes+pos);
|
||||
|
||||
tempMap->enumStart=udata_readInt32(ds, inMap->enumStart);
|
||||
tempMap->enumLimit=udata_readInt32(ds, inMap->enumLimit);
|
||||
size=tempMap->getSize();
|
||||
|
||||
if(length>=0) {
|
||||
if(length<(pos+size)) {
|
||||
if(length<(int32_t)sizeof(PropertyAliases)) {
|
||||
udata_printError(ds, "upname_swap(EnumToOffset): too few bytes (%d after header)\n"
|
||||
" for pnames.icu EnumToOffset{%d..%d} at %d\n",
|
||||
length, tempMap->enumStart, tempMap->enumLimit, pos);
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* swap enumStart and enumLimit */
|
||||
ds->swapArray32(ds, inMap, 2*sizeof(EnumValue), outMap, pErrorCode);
|
||||
|
||||
/* swap _offsetArray[] */
|
||||
ds->swapArray16(ds, inMap->getOffsetArray(), (tempMap->enumLimit-tempMap->enumStart)*sizeof(Offset),
|
||||
outMap->getOffsetArray(), pErrorCode);
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
int32_t
|
||||
NonContiguousEnumToOffset::swap(const UDataSwapper *ds,
|
||||
const uint8_t *inBytes, int32_t length, uint8_t *outBytes,
|
||||
uint8_t *temp, int32_t pos,
|
||||
UErrorCode *pErrorCode) {
|
||||
const NonContiguousEnumToOffset *inMap;
|
||||
NonContiguousEnumToOffset *outMap, *tempMap;
|
||||
int32_t size;
|
||||
|
||||
tempMap=(NonContiguousEnumToOffset *)(temp+pos);
|
||||
if(tempMap->count!=0) {
|
||||
/* this map was swapped already */
|
||||
size=tempMap->getSize();
|
||||
return size;
|
||||
}
|
||||
|
||||
inMap=(const NonContiguousEnumToOffset *)(inBytes+pos);
|
||||
outMap=(NonContiguousEnumToOffset *)(outBytes+pos);
|
||||
|
||||
tempMap->count=udata_readInt32(ds, inMap->count);
|
||||
size=tempMap->getSize();
|
||||
|
||||
if(length>=0) {
|
||||
if(length<(pos+size)) {
|
||||
if(length<(int32_t)sizeof(PropertyAliases)) {
|
||||
udata_printError(ds, "upname_swap(NonContiguousEnumToOffset): too few bytes (%d after header)\n"
|
||||
" for pnames.icu NonContiguousEnumToOffset[%d] at %d\n",
|
||||
length, tempMap->count, pos);
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* swap count and _enumArray[] */
|
||||
length=(1+tempMap->count)*sizeof(EnumValue);
|
||||
ds->swapArray32(ds, inMap, length,
|
||||
outMap, pErrorCode);
|
||||
|
||||
/* swap _offsetArray[] */
|
||||
pos+=length;
|
||||
ds->swapArray16(ds, inBytes+pos, tempMap->count*sizeof(Offset),
|
||||
outBytes+pos, pErrorCode);
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
struct NameAndIndex {
|
||||
Offset name, index;
|
||||
};
|
||||
|
||||
U_CDECL_BEGIN
|
||||
typedef int32_t U_CALLCONV PropNameCompareFn(const char *name1, const char *name2);
|
||||
|
||||
struct CompareContext {
|
||||
const char *chars;
|
||||
PropNameCompareFn *propCompare;
|
||||
};
|
||||
|
||||
static int32_t U_CALLCONV
|
||||
upname_compareRows(const void *context, const void *left, const void *right) {
|
||||
CompareContext *cmp=(CompareContext *)context;
|
||||
return cmp->propCompare(cmp->chars+((const NameAndIndex *)left)->name,
|
||||
cmp->chars+((const NameAndIndex *)right)->name);
|
||||
}
|
||||
U_CDECL_END
|
||||
|
||||
int32_t
|
||||
NameToEnum::swap(const UDataSwapper *ds,
|
||||
const uint8_t *inBytes, int32_t length, uint8_t *outBytes,
|
||||
uint8_t *temp, int32_t pos,
|
||||
UErrorCode *pErrorCode) {
|
||||
const NameToEnum *inMap;
|
||||
NameToEnum *outMap, *tempMap;
|
||||
|
||||
const EnumValue *inEnumArray;
|
||||
EnumValue *outEnumArray;
|
||||
|
||||
const Offset *inNameArray;
|
||||
Offset *outNameArray;
|
||||
|
||||
NameAndIndex *sortArray;
|
||||
CompareContext cmp;
|
||||
|
||||
int32_t i, size, oldIndex;
|
||||
|
||||
tempMap=(NameToEnum *)(temp+pos);
|
||||
if(tempMap->count!=0) {
|
||||
/* this map was swapped already */
|
||||
size=tempMap->getSize();
|
||||
return size;
|
||||
}
|
||||
|
||||
inMap=(const NameToEnum *)(inBytes+pos);
|
||||
outMap=(NameToEnum *)(outBytes+pos);
|
||||
|
||||
tempMap->count=udata_readInt32(ds, inMap->count);
|
||||
size=tempMap->getSize();
|
||||
|
||||
if(length>=0) {
|
||||
if(length<(pos+size)) {
|
||||
if(length<(int32_t)sizeof(PropertyAliases)) {
|
||||
udata_printError(ds, "upname_swap(NameToEnum): too few bytes (%d after header)\n"
|
||||
" for pnames.icu NameToEnum[%d] at %d\n",
|
||||
length, tempMap->count, pos);
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* swap count */
|
||||
ds->swapArray32(ds, inMap, 4, outMap, pErrorCode);
|
||||
|
||||
inEnumArray=inMap->getEnumArray();
|
||||
outEnumArray=outMap->getEnumArray();
|
||||
|
||||
inNameArray=(const Offset *)(inEnumArray+tempMap->count);
|
||||
outNameArray=(Offset *)(outEnumArray+tempMap->count);
|
||||
|
||||
if(ds->inCharset==ds->outCharset) {
|
||||
/* no need to sort, just swap the enum/name arrays */
|
||||
ds->swapArray32(ds, inEnumArray, tempMap->count*4, outEnumArray, pErrorCode);
|
||||
ds->swapArray16(ds, inNameArray, tempMap->count*2, outNameArray, pErrorCode);
|
||||
return size;
|
||||
}
|
||||
|
||||
/*
|
||||
* The name and enum arrays are sorted by names and must be resorted
|
||||
* if inCharset!=outCharset.
|
||||
* We use the corresponding part of the temp array to sort an array
|
||||
* of pairs of name offsets and sorting indexes.
|
||||
* Then the sorting indexes are used to permutate-swap the name and enum arrays.
|
||||
*
|
||||
* The outBytes must already contain the swapped strings.
|
||||
*/
|
||||
sortArray=(NameAndIndex *)tempMap->getEnumArray();
|
||||
for(i=0; i<tempMap->count; ++i) {
|
||||
sortArray[i].name=udata_readInt16(ds, inNameArray[i]);
|
||||
sortArray[i].index=(Offset)i;
|
||||
}
|
||||
|
||||
/*
|
||||
* use a stable sort to avoid shuffling of equal strings,
|
||||
* which makes testing harder
|
||||
*/
|
||||
cmp.chars=(const char *)outBytes;
|
||||
cmp.propCompare=
|
||||
ds->outCharset==U_ASCII_FAMILY ?
|
||||
uprv_compareASCIIPropertyNames :
|
||||
uprv_compareEBCDICPropertyNames;
|
||||
uprv_sortArray(sortArray, tempMap->count, sizeof(NameAndIndex),
|
||||
upname_compareRows, &cmp,
|
||||
TRUE, pErrorCode);
|
||||
if(U_FAILURE(*pErrorCode)) {
|
||||
udata_printError(ds, "upname_swap(NameToEnum).uprv_sortArray(%d items) failed - %s\n",
|
||||
tempMap->count, u_errorName(*pErrorCode));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* copy/swap/permutate _enumArray[] and _nameArray[] */
|
||||
if(inEnumArray!=outEnumArray) {
|
||||
for(i=0; i<tempMap->count; ++i) {
|
||||
oldIndex=sortArray[i].index;
|
||||
ds->swapArray32(ds, inEnumArray+oldIndex, 4, outEnumArray+i, pErrorCode);
|
||||
ds->swapArray16(ds, inNameArray+oldIndex, 2, outNameArray+i, pErrorCode);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* in-place swapping: need to permutate into a temporary array
|
||||
* and then copy back to not destroy the data
|
||||
*/
|
||||
EnumValue *tempEnumArray;
|
||||
Offset *oldIndexes;
|
||||
|
||||
/* write name offsets directly from sortArray */
|
||||
for(i=0; i<tempMap->count; ++i) {
|
||||
ds->writeUInt16((uint16_t *)outNameArray+i, (uint16_t)sortArray[i].name);
|
||||
}
|
||||
|
||||
/*
|
||||
* compress the oldIndexes into a separate array to make space for tempEnumArray
|
||||
* the tempMap _nameArray becomes oldIndexes[], getting the index
|
||||
* values from the 2D sortArray[],
|
||||
* while sortArray=tempMap _enumArray[] becomes tempEnumArray[]
|
||||
* this saves us allocating more memory
|
||||
*
|
||||
* it works because sizeof(NameAndIndex)<=sizeof(EnumValue)
|
||||
* and because the nameArray[] can be used for oldIndexes[]
|
||||
*/
|
||||
tempEnumArray=(EnumValue *)sortArray;
|
||||
oldIndexes=(Offset *)(sortArray+tempMap->count);
|
||||
|
||||
/* copy sortArray[].index values into oldIndexes[] */
|
||||
for(i=0; i<tempMap->count; ++i) {
|
||||
oldIndexes[i]=sortArray[i].index;
|
||||
}
|
||||
|
||||
/* permutate inEnumArray[] into tempEnumArray[] */
|
||||
for(i=0; i<tempMap->count; ++i) {
|
||||
ds->swapArray32(ds, inEnumArray+oldIndexes[i], 4, tempEnumArray+i, pErrorCode);
|
||||
}
|
||||
|
||||
/* copy tempEnumArray[] to outEnumArray[] */
|
||||
uprv_memcpy(outEnumArray, tempEnumArray, tempMap->count*4);
|
||||
}
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
int32_t
|
||||
PropertyAliases::swap(const UDataSwapper *ds,
|
||||
const uint8_t *inBytes, int32_t length, uint8_t *outBytes,
|
||||
UErrorCode *pErrorCode) {
|
||||
const PropertyAliases *inAliases;
|
||||
PropertyAliases *outAliases;
|
||||
PropertyAliases aliases;
|
||||
|
||||
const ValueMap *inValueMaps;
|
||||
ValueMap *outValueMaps;
|
||||
ValueMap valueMap;
|
||||
|
||||
uint8_t *temp;
|
||||
|
||||
int32_t i;
|
||||
|
||||
inAliases=(const PropertyAliases *)inBytes;
|
||||
outAliases=(PropertyAliases *)outBytes;
|
||||
|
||||
/* read the input PropertyAliases - all 16-bit values */
|
||||
for(i=0; i<(int32_t)sizeof(PropertyAliases)/2; ++i) {
|
||||
((uint16_t *)&aliases)[i]=ds->readUInt16(((const uint16_t *)inBytes)[i]);
|
||||
}
|
||||
|
||||
if(length>=0) {
|
||||
if(length<aliases.total_size) {
|
||||
udata_printError(ds, "upname_swap(): too few bytes (%d after header) for all of pnames.icu\n",
|
||||
length);
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* copy the data for inaccessible bytes */
|
||||
if(inBytes!=outBytes) {
|
||||
uprv_memcpy(outBytes, inBytes, aliases.total_size);
|
||||
}
|
||||
|
||||
/* swap the PropertyAliases class fields */
|
||||
ds->swapArray16(ds, inAliases, sizeof(PropertyAliases), outAliases, pErrorCode);
|
||||
|
||||
/* swap the name groups */
|
||||
ds->swapArray16(ds, inBytes+aliases.nameGroupPool_offset,
|
||||
aliases.stringPool_offset-aliases.nameGroupPool_offset,
|
||||
outBytes+aliases.nameGroupPool_offset, pErrorCode);
|
||||
|
||||
/* swap the strings */
|
||||
udata_swapInvStringBlock(ds, inBytes+aliases.stringPool_offset,
|
||||
aliases.total_size-aliases.stringPool_offset,
|
||||
outBytes+aliases.stringPool_offset, pErrorCode);
|
||||
|
||||
/*
|
||||
* alloc uint8_t temp[total_size] and reset it
|
||||
* swap each top-level struct, put at least the count fields into temp
|
||||
* use subclass-specific swap() functions
|
||||
* enumerate value maps, for each
|
||||
* if temp does not have count!=0 yet
|
||||
* read count, put it into temp
|
||||
* swap the array(s)
|
||||
* resort strings in name->enum maps
|
||||
* swap value maps
|
||||
*/
|
||||
temp=(uint8_t *)uprv_malloc(aliases.total_size);
|
||||
if(temp==NULL) {
|
||||
udata_printError(ds, "upname_swap(): unable to allocate temp memory (%d bytes)\n",
|
||||
aliases.total_size);
|
||||
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
|
||||
return 0;
|
||||
}
|
||||
uprv_memset(temp, 0, aliases.total_size);
|
||||
|
||||
/* swap properties->name groups map */
|
||||
NonContiguousEnumToOffset::swap(ds, inBytes, length, outBytes,
|
||||
temp, aliases.enumToName_offset, pErrorCode);
|
||||
|
||||
/* swap name->properties map */
|
||||
NameToEnum::swap(ds, inBytes, length, outBytes,
|
||||
temp, aliases.nameToEnum_offset, pErrorCode);
|
||||
|
||||
/* swap properties->value maps map */
|
||||
NonContiguousEnumToOffset::swap(ds, inBytes, length, outBytes,
|
||||
temp, aliases.enumToValue_offset, pErrorCode);
|
||||
|
||||
/* enumerate all ValueMaps and swap them */
|
||||
inValueMaps=(const ValueMap *)(inBytes+aliases.valueMap_offset);
|
||||
outValueMaps=(ValueMap *)(outBytes+aliases.valueMap_offset);
|
||||
|
||||
for(i=0; i<aliases.valueMap_count; ++i) {
|
||||
valueMap.enumToName_offset=udata_readInt16(ds, inValueMaps[i].enumToName_offset);
|
||||
valueMap.ncEnumToName_offset=udata_readInt16(ds, inValueMaps[i].ncEnumToName_offset);
|
||||
valueMap.nameToEnum_offset=udata_readInt16(ds, inValueMaps[i].nameToEnum_offset);
|
||||
|
||||
if(valueMap.enumToName_offset!=0) {
|
||||
EnumToOffset::swap(ds, inBytes, length, outBytes,
|
||||
temp, valueMap.enumToName_offset,
|
||||
pErrorCode);
|
||||
} else if(valueMap.ncEnumToName_offset!=0) {
|
||||
NonContiguousEnumToOffset::swap(ds, inBytes, length, outBytes,
|
||||
temp, valueMap.ncEnumToName_offset,
|
||||
pErrorCode);
|
||||
}
|
||||
if(valueMap.nameToEnum_offset!=0) {
|
||||
NameToEnum::swap(ds, inBytes, length, outBytes,
|
||||
temp, valueMap.nameToEnum_offset,
|
||||
pErrorCode);
|
||||
}
|
||||
}
|
||||
|
||||
/* swap the ValueMaps array itself */
|
||||
ds->swapArray16(ds, inValueMaps, aliases.valueMap_count*sizeof(ValueMap),
|
||||
outValueMaps, pErrorCode);
|
||||
|
||||
/* name groups and strings were swapped above */
|
||||
|
||||
/* release temp */
|
||||
uprv_free(temp);
|
||||
}
|
||||
|
||||
return aliases.total_size;
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
upname_swap(const UDataSwapper *ds,
|
||||
const void *inData, int32_t length, void *outData,
|
||||
UErrorCode *pErrorCode) {
|
||||
const UDataInfo *pInfo;
|
||||
int32_t headerSize;
|
||||
|
||||
const uint8_t *inBytes;
|
||||
uint8_t *outBytes;
|
||||
|
||||
/* udata_swapDataHeader checks the arguments */
|
||||
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
|
||||
if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* check data format and format version */
|
||||
pInfo=(const UDataInfo *)((const char *)inData+4);
|
||||
if(!(
|
||||
pInfo->dataFormat[0]==0x70 && /* dataFormat="pnam" */
|
||||
pInfo->dataFormat[1]==0x6e &&
|
||||
pInfo->dataFormat[2]==0x61 &&
|
||||
pInfo->dataFormat[3]==0x6d &&
|
||||
pInfo->formatVersion[0]==1
|
||||
)) {
|
||||
udata_printError(ds, "upname_swap(): data format %02x.%02x.%02x.%02x (format version %02x) is not recognized as pnames.icu\n",
|
||||
pInfo->dataFormat[0], pInfo->dataFormat[1],
|
||||
pInfo->dataFormat[2], pInfo->dataFormat[3],
|
||||
pInfo->formatVersion[0]);
|
||||
*pErrorCode=U_UNSUPPORTED_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
inBytes=(const uint8_t *)inData+headerSize;
|
||||
outBytes=(uint8_t *)outData+headerSize;
|
||||
|
||||
if(length>=0) {
|
||||
length-=headerSize;
|
||||
if(length<(int32_t)sizeof(PropertyAliases)) {
|
||||
udata_printError(ds, "upname_swap(): too few bytes (%d after header) for pnames.icu\n",
|
||||
length);
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return headerSize+PropertyAliases::swap(ds, inBytes, length, outBytes, pErrorCode);
|
||||
}
|
||||
|
||||
//eof
|
477
extern/icu/source/common/propname.h
vendored
477
extern/icu/source/common/propname.h
vendored
@ -1,477 +0,0 @@
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (c) 2002-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
* Author: Alan Liu
|
||||
* Created: October 30 2002
|
||||
* Since: ICU 2.4
|
||||
**********************************************************************
|
||||
*/
|
||||
#ifndef PROPNAME_H
|
||||
#define PROPNAME_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/uchar.h"
|
||||
#include "udataswp.h"
|
||||
#include "uprops.h"
|
||||
|
||||
/*
|
||||
* This header defines the in-memory layout of the property names data
|
||||
* structure representing the UCD data files PropertyAliases.txt and
|
||||
* PropertyValueAliases.txt. It is used by:
|
||||
* propname.cpp - reads data
|
||||
* genpname - creates data
|
||||
*/
|
||||
|
||||
/* UDataMemory structure and signatures ------------------------------------- */
|
||||
|
||||
#define PNAME_DATA_NAME "pnames"
|
||||
#define PNAME_DATA_TYPE "icu"
|
||||
|
||||
/* Fields in UDataInfo: */
|
||||
|
||||
/* PNAME_SIG[] is encoded as numeric literals for compatibility with the HP compiler */
|
||||
#define PNAME_SIG_0 ((uint8_t)0x70) /* p */
|
||||
#define PNAME_SIG_1 ((uint8_t)0x6E) /* n */
|
||||
#define PNAME_SIG_2 ((uint8_t)0x61) /* a */
|
||||
#define PNAME_SIG_3 ((uint8_t)0x6D) /* m */
|
||||
|
||||
#define PNAME_FORMAT_VERSION ((int8_t)1) /* formatVersion[0] */
|
||||
|
||||
/**
|
||||
* Swap pnames.icu. See udataswp.h.
|
||||
* @internal
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
upname_swap(const UDataSwapper *ds,
|
||||
const void *inData, int32_t length, void *outData,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
|
||||
#ifdef XP_CPLUSPLUS
|
||||
|
||||
class Builder;
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* An offset from the start of the pnames data to a contained entity.
|
||||
* This must be a signed value, since negative offsets are used as an
|
||||
* end-of-list marker. Offsets to actual objects are non-zero. A
|
||||
* zero offset indicates an absent entry; this corresponds to aliases
|
||||
* marked "n/a" in the original Unicode data files.
|
||||
*/
|
||||
typedef int16_t Offset; /* must be signed */
|
||||
|
||||
#define MAX_OFFSET 0x7FFF
|
||||
|
||||
/**
|
||||
* A generic value for a property or property value. Typically an
|
||||
* enum from uchar.h, but sometimes a non-enum value. It must be
|
||||
* large enough to accomodate the largest enum value, which as of this
|
||||
* writing is the largest general category mask. Need not be signed
|
||||
* but may be. Typically it doesn't matter, since the caller will
|
||||
* cast it to the proper type before use. Takes the special value
|
||||
* UCHAR_INVALID_CODE for invalid input.
|
||||
*/
|
||||
typedef int32_t EnumValue;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ValueMap */
|
||||
|
||||
/**
|
||||
* For any top-level property that has named values (binary and
|
||||
* enumerated properties), there is a ValueMap object. This object
|
||||
* maps from enum values to two other maps. One goes from value enums
|
||||
* to value names. The other goes from value names to value enums.
|
||||
*
|
||||
* The value enum values may be contiguous or disjoint. If they are
|
||||
* contiguous then the enumToName_offset is nonzero, and the
|
||||
* ncEnumToName_offset is zero. Vice versa if the value enums are
|
||||
* disjoint.
|
||||
*
|
||||
* There are n of these objects, where n is the number of binary
|
||||
* properties + the number of enumerated properties.
|
||||
*/
|
||||
struct ValueMap {
|
||||
|
||||
/* -- begin pnames data -- */
|
||||
/* Enum=>name EnumToOffset / NonContiguousEnumToOffset objects. */
|
||||
/* Exactly one of these will be nonzero. */
|
||||
Offset enumToName_offset;
|
||||
Offset ncEnumToName_offset;
|
||||
|
||||
Offset nameToEnum_offset; /* Name=>enum data */
|
||||
/* -- end pnames data -- */
|
||||
};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* PropertyAliases class */
|
||||
|
||||
/**
|
||||
* A class encapsulating access to the memory-mapped data representing
|
||||
* property aliases and property value aliases (pnames). The class
|
||||
* MUST have no v-table and declares certain methods inline -- small
|
||||
* methods and methods that are called from only one point.
|
||||
*
|
||||
* The data members in this class correspond to the in-memory layout
|
||||
* of the header of the pnames data.
|
||||
*/
|
||||
class PropertyAliases {
|
||||
|
||||
/* -- begin pnames data -- */
|
||||
/* Enum=>name EnumToOffset object for binary and enumerated */
|
||||
/* properties */
|
||||
Offset enumToName_offset;
|
||||
|
||||
/* Name=>enum data for binary & enumerated properties */
|
||||
Offset nameToEnum_offset;
|
||||
|
||||
/* Enum=>offset EnumToOffset object mapping enumerated properties */
|
||||
/* to ValueMap objects */
|
||||
Offset enumToValue_offset;
|
||||
|
||||
/* The following are needed by external readers of this data. */
|
||||
/* We don't use them ourselves. */
|
||||
int16_t total_size; /* size in bytes excluding the udata header */
|
||||
Offset valueMap_offset; /* offset to start of array */
|
||||
int16_t valueMap_count; /* number of entries */
|
||||
Offset nameGroupPool_offset; /* offset to start of array */
|
||||
int16_t nameGroupPool_count; /* number of entries (not groups) */
|
||||
Offset stringPool_offset; /* offset to start of pool */
|
||||
int16_t stringPool_count; /* number of strings (not size in bytes) */
|
||||
|
||||
/* -- end pnames data -- */
|
||||
|
||||
friend class ::Builder;
|
||||
|
||||
const ValueMap* getValueMap(EnumValue prop) const;
|
||||
|
||||
const char* chooseNameInGroup(Offset offset,
|
||||
UPropertyNameChoice choice) const;
|
||||
|
||||
public:
|
||||
|
||||
inline const int8_t* getPointer(Offset o) const {
|
||||
return ((const int8_t*) this) + o;
|
||||
}
|
||||
|
||||
inline const int8_t* getPointerNull(Offset o) const {
|
||||
return o ? getPointer(o) : NULL;
|
||||
}
|
||||
|
||||
inline const char* getPropertyName(EnumValue prop,
|
||||
UPropertyNameChoice choice) const;
|
||||
|
||||
inline EnumValue getPropertyEnum(const char* alias) const;
|
||||
|
||||
inline const char* getPropertyValueName(EnumValue prop, EnumValue value,
|
||||
UPropertyNameChoice choice) const;
|
||||
|
||||
inline EnumValue getPropertyValueEnum(EnumValue prop,
|
||||
const char* alias) const;
|
||||
|
||||
static int32_t
|
||||
swap(const UDataSwapper *ds,
|
||||
const uint8_t *inBytes, int32_t length, uint8_t *outBytes,
|
||||
UErrorCode *pErrorCode);
|
||||
};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* EnumToOffset */
|
||||
|
||||
/**
|
||||
* A generic map from enum values to Offsets. The enum values must be
|
||||
* contiguous, from enumStart to enumLimit. The Offset values may
|
||||
* point to anything.
|
||||
*/
|
||||
class EnumToOffset {
|
||||
|
||||
/* -- begin pnames data -- */
|
||||
EnumValue enumStart;
|
||||
EnumValue enumLimit;
|
||||
Offset _offsetArray; /* [array of enumLimit-enumStart] */
|
||||
/* -- end pnames data -- */
|
||||
|
||||
friend class ::Builder;
|
||||
|
||||
Offset* getOffsetArray() {
|
||||
return &_offsetArray;
|
||||
}
|
||||
|
||||
const Offset* getOffsetArray() const {
|
||||
return &_offsetArray;
|
||||
}
|
||||
|
||||
static int32_t getSize(int32_t n) {
|
||||
return sizeof(EnumToOffset) + sizeof(Offset) * (n - 1);
|
||||
}
|
||||
|
||||
int32_t getSize() {
|
||||
return getSize(enumLimit - enumStart);
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
Offset getOffset(EnumValue enumProbe) const {
|
||||
if (enumProbe < enumStart ||
|
||||
enumProbe >= enumLimit) {
|
||||
return 0; /* not found */
|
||||
}
|
||||
const Offset* p = getOffsetArray();
|
||||
return p[enumProbe - enumStart];
|
||||
}
|
||||
|
||||
static int32_t
|
||||
swap(const UDataSwapper *ds,
|
||||
const uint8_t *inBytes, int32_t length, uint8_t *outBytes,
|
||||
uint8_t *temp, int32_t pos,
|
||||
UErrorCode *pErrorCode);
|
||||
};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* NonContiguousEnumToOffset */
|
||||
|
||||
/**
|
||||
* A generic map from enum values to Offsets. The enum values may be
|
||||
* disjoint. If they are contiguous, an EnumToOffset should be used
|
||||
* instead. The Offset values may point to anything.
|
||||
*/
|
||||
class NonContiguousEnumToOffset {
|
||||
|
||||
/* -- begin pnames data -- */
|
||||
int32_t count;
|
||||
EnumValue _enumArray; /* [array of count] */
|
||||
/* Offset _offsetArray; // [array of count] after enumValue[count-1] */
|
||||
/* -- end pnames data -- */
|
||||
|
||||
friend class ::Builder;
|
||||
|
||||
EnumValue* getEnumArray() {
|
||||
return &_enumArray;
|
||||
}
|
||||
|
||||
const EnumValue* getEnumArray() const {
|
||||
return &_enumArray;
|
||||
}
|
||||
|
||||
Offset* getOffsetArray() {
|
||||
return (Offset*) (getEnumArray() + count);
|
||||
}
|
||||
|
||||
const Offset* getOffsetArray() const {
|
||||
return (Offset*) (getEnumArray() + count);
|
||||
}
|
||||
|
||||
static int32_t getSize(int32_t n) {
|
||||
return sizeof(int32_t) + (sizeof(EnumValue) + sizeof(Offset)) * n;
|
||||
}
|
||||
|
||||
int32_t getSize() {
|
||||
return getSize(count);
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
Offset getOffset(EnumValue enumProbe) const {
|
||||
const EnumValue* e = getEnumArray();
|
||||
const Offset* p = getOffsetArray();
|
||||
/* linear search; binary later if warranted */
|
||||
/* (binary is not faster for short lists) */
|
||||
for (int32_t i=0; i<count; ++i) {
|
||||
if (e[i] < enumProbe) continue;
|
||||
if (e[i] > enumProbe) break;
|
||||
return p[i];
|
||||
}
|
||||
return 0; /* not found */
|
||||
}
|
||||
|
||||
static int32_t
|
||||
swap(const UDataSwapper *ds,
|
||||
const uint8_t *inBytes, int32_t length, uint8_t *outBytes,
|
||||
uint8_t *temp, int32_t pos,
|
||||
UErrorCode *pErrorCode);
|
||||
};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* NameToEnum */
|
||||
|
||||
/**
|
||||
* A map from names to enum values.
|
||||
*/
|
||||
class NameToEnum {
|
||||
|
||||
/* -- begin pnames data -- */
|
||||
int32_t count; /* number of entries */
|
||||
EnumValue _enumArray; /* [array of count] EnumValues */
|
||||
/* Offset _nameArray; // [array of count] offsets to names */
|
||||
/* -- end pnames data -- */
|
||||
|
||||
friend class ::Builder;
|
||||
|
||||
EnumValue* getEnumArray() {
|
||||
return &_enumArray;
|
||||
}
|
||||
|
||||
const EnumValue* getEnumArray() const {
|
||||
return &_enumArray;
|
||||
}
|
||||
|
||||
Offset* getNameArray() {
|
||||
return (Offset*) (getEnumArray() + count);
|
||||
}
|
||||
|
||||
const Offset* getNameArray() const {
|
||||
return (Offset*) (getEnumArray() + count);
|
||||
}
|
||||
|
||||
static int32_t getSize(int32_t n) {
|
||||
return sizeof(int32_t) + (sizeof(Offset) + sizeof(EnumValue)) * n;
|
||||
}
|
||||
|
||||
int32_t getSize() {
|
||||
return getSize(count);
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
EnumValue getEnum(const char* alias, const PropertyAliases& data) const {
|
||||
|
||||
const Offset* n = getNameArray();
|
||||
const EnumValue* e = getEnumArray();
|
||||
|
||||
/* linear search; binary later if warranted */
|
||||
/* (binary is not faster for short lists) */
|
||||
for (int32_t i=0; i<count; ++i) {
|
||||
const char* name = (const char*) data.getPointer(n[i]);
|
||||
int32_t c = uprv_comparePropertyNames(alias, name);
|
||||
if (c > 0) continue;
|
||||
if (c < 0) break;
|
||||
return e[i];
|
||||
}
|
||||
|
||||
return UCHAR_INVALID_CODE;
|
||||
}
|
||||
|
||||
static int32_t
|
||||
swap(const UDataSwapper *ds,
|
||||
const uint8_t *inBytes, int32_t length, uint8_t *outBytes,
|
||||
uint8_t *temp, int32_t pos,
|
||||
UErrorCode *pErrorCode);
|
||||
};
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
*
|
||||
* In-memory layout. THIS IS NOT A STANDALONE DOCUMENT. It goes
|
||||
* together with above C++ declarations and gives an overview.
|
||||
*
|
||||
* See above for definitions of Offset and EnumValue. Also, refer to
|
||||
* above class declarations for the "bottom line" on data layout.
|
||||
*
|
||||
* Sizes:
|
||||
* '*_offset' is an Offset (see above)
|
||||
* 'count' members are typically int32_t (see above declarations)
|
||||
* 'enumArray' is an array of EnumValue (see above)
|
||||
* 'offsetArray' is an array of Offset (see above)
|
||||
* 'nameArray' is an array of Offset (see above)
|
||||
* 'enum*' is an EnumValue (see above)
|
||||
* '*Array [x n]' means that *Array has n elements
|
||||
*
|
||||
* References:
|
||||
* Instead of pointers, this flat data structure contains offsets.
|
||||
* All offsets are relative to the start of 'header'. A notation
|
||||
* is used to indicate what structure each offset points to:
|
||||
* 'foo (>x)' the offset(s) in foo point to structure x
|
||||
*
|
||||
* Structures:
|
||||
* Each structure is assigned a number, except for the header,
|
||||
* which is called 'header'. The numbers are not contiguous
|
||||
* for historical reasons. Some structures have sub-parts
|
||||
* that are denoted with a letter, e.g., "5a".
|
||||
*
|
||||
* BEGIN LAYOUT
|
||||
* ============
|
||||
* header:
|
||||
* enumToName_offset (>0)
|
||||
* nameToEnum_offset (>2)
|
||||
* enumToValue_offset (>3)
|
||||
* (alignment padding build in to header)
|
||||
*
|
||||
* The header also contains the following, used by "external readers"
|
||||
* like ICU4J and icuswap.
|
||||
*
|
||||
* // The following are needed by external readers of this data.
|
||||
* // We don't use them ourselves.
|
||||
* int16_t total_size; // size in bytes excluding the udata header
|
||||
* Offset valueMap_offset; // offset to start of array
|
||||
* int16_t valueMap_count; // number of entries
|
||||
* Offset nameGroupPool_offset; // offset to start of array
|
||||
* int16_t nameGroupPool_count; // number of entries (not groups)
|
||||
* Offset stringPool_offset; // offset to start of pool
|
||||
* int16_t stringPool_count; // number of strings (not size in bytes)
|
||||
*
|
||||
* 0: # NonContiguousEnumToOffset obj for props => name groups
|
||||
* count
|
||||
* enumArray [x count]
|
||||
* offsetArray [x count] (>98)
|
||||
*
|
||||
* => pad to next 4-byte boundary
|
||||
*
|
||||
* (1: omitted -- no longer used)
|
||||
*
|
||||
* 2: # NameToEnum obj for binary & enumerated props
|
||||
* count
|
||||
* enumArray [x count]
|
||||
* nameArray [x count] (>99)
|
||||
*
|
||||
* => pad to next 4-byte boundary
|
||||
*
|
||||
* 3: # NonContiguousEnumToOffset obj for enumerated props => ValueMaps
|
||||
* count
|
||||
* enumArray [x count]
|
||||
* offsetArray [x count] (>4)
|
||||
*
|
||||
* => pad to next 4-byte boundary
|
||||
*
|
||||
* 4: # ValueMap array [x one for each enumerated prop i]
|
||||
* enumToName_offset (>5a +2*i) one of these two is NULL, one is not
|
||||
* ncEnumToName_offset (>5b +2*i)
|
||||
* nameToEnums_offset (>6 +2*i)
|
||||
*
|
||||
* => pad to next 4-byte boundary
|
||||
*
|
||||
* for each enumerated prop (either 5a or 5b):
|
||||
*
|
||||
* 5a: # EnumToOffset for enumerated prop's values => name groups
|
||||
* enumStart
|
||||
* enumLimit
|
||||
* offsetArray [x enumLimit - enumStart] (>98)
|
||||
*
|
||||
* => pad to next 4-byte boundary
|
||||
*
|
||||
* 5b: # NonContiguousEnumToOffset for enumerated prop's values => name groups
|
||||
* count
|
||||
* enumArray [x count]
|
||||
* offsetArray [x count] (>98)
|
||||
*
|
||||
* => pad to next 4-byte boundary
|
||||
*
|
||||
* 6: # NameToEnum for enumerated prop's values
|
||||
* count
|
||||
* enumArray [x count]
|
||||
* nameArray [x count] (>99)
|
||||
*
|
||||
* => pad to next 4-byte boundary
|
||||
*
|
||||
* 98: # name group pool {NGP}
|
||||
* [array of Offset values] (>99)
|
||||
*
|
||||
* 99: # string pool {SP}
|
||||
* [pool of nul-terminated char* strings]
|
||||
*/
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif /* C++ */
|
||||
|
||||
#endif
|
580
extern/icu/source/common/punycode.c
vendored
580
extern/icu/source/common/punycode.c
vendored
@ -1,580 +0,0 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2002-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
*******************************************************************************
|
||||
* file name: punycode.c
|
||||
* encoding: US-ASCII
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*
|
||||
* created on: 2002jan31
|
||||
* created by: Markus W. Scherer
|
||||
*/
|
||||
|
||||
|
||||
/* This ICU code derived from: */
|
||||
/*
|
||||
punycode.c 0.4.0 (2001-Nov-17-Sat)
|
||||
http://www.cs.berkeley.edu/~amc/idn/
|
||||
Adam M. Costello
|
||||
http://www.nicemice.net/amc/
|
||||
|
||||
Disclaimer and license
|
||||
|
||||
Regarding this entire document or any portion of it (including
|
||||
the pseudocode and C code), the author makes no guarantees and
|
||||
is not responsible for any damage resulting from its use. The
|
||||
author grants irrevocable permission to anyone to use, modify,
|
||||
and distribute it in any way that does not diminish the rights
|
||||
of anyone else to use, modify, and distribute it, provided that
|
||||
redistributed derivative works do not contain misleading author or
|
||||
version information. Derivative works need not be licensed under
|
||||
similar terms.
|
||||
*/
|
||||
/*
|
||||
* ICU modifications:
|
||||
* - ICU data types and coding conventions
|
||||
* - ICU string buffer handling with implicit source lengths
|
||||
* and destination preflighting
|
||||
* - UTF-16 handling
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_IDNA
|
||||
|
||||
#include "ustr_imp.h"
|
||||
#include "cstring.h"
|
||||
#include "cmemory.h"
|
||||
#include "punycode.h"
|
||||
#include "unicode/ustring.h"
|
||||
|
||||
|
||||
/* Punycode ----------------------------------------------------------------- */
|
||||
|
||||
/* Punycode parameters for Bootstring */
|
||||
#define BASE 36
|
||||
#define TMIN 1
|
||||
#define TMAX 26
|
||||
#define SKEW 38
|
||||
#define DAMP 700
|
||||
#define INITIAL_BIAS 72
|
||||
#define INITIAL_N 0x80
|
||||
|
||||
/* "Basic" Unicode/ASCII code points */
|
||||
#define _HYPHEN 0X2d
|
||||
#define DELIMITER _HYPHEN
|
||||
|
||||
#define _ZERO_ 0X30
|
||||
#define _NINE 0x39
|
||||
|
||||
#define _SMALL_A 0X61
|
||||
#define _SMALL_Z 0X7a
|
||||
|
||||
#define _CAPITAL_A 0X41
|
||||
#define _CAPITAL_Z 0X5a
|
||||
|
||||
#define IS_BASIC(c) ((c)<0x80)
|
||||
#define IS_BASIC_UPPERCASE(c) (_CAPITAL_A<=(c) && (c)<=_CAPITAL_Z)
|
||||
|
||||
/**
|
||||
* digitToBasic() returns the basic code point whose value
|
||||
* (when used for representing integers) is d, which must be in the
|
||||
* range 0 to BASE-1. The lowercase form is used unless the uppercase flag is
|
||||
* nonzero, in which case the uppercase form is used.
|
||||
*/
|
||||
static U_INLINE char
|
||||
digitToBasic(int32_t digit, UBool uppercase) {
|
||||
/* 0..25 map to ASCII a..z or A..Z */
|
||||
/* 26..35 map to ASCII 0..9 */
|
||||
if(digit<26) {
|
||||
if(uppercase) {
|
||||
return (char)(_CAPITAL_A+digit);
|
||||
} else {
|
||||
return (char)(_SMALL_A+digit);
|
||||
}
|
||||
} else {
|
||||
return (char)((_ZERO_-26)+digit);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* basicToDigit[] contains the numeric value of a basic code
|
||||
* point (for use in representing integers) in the range 0 to
|
||||
* BASE-1, or -1 if b is does not represent a value.
|
||||
*/
|
||||
static const int8_t
|
||||
basicToDigit[256]={
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
|
||||
|
||||
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
||||
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
|
||||
|
||||
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
||||
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
|
||||
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
|
||||
};
|
||||
|
||||
static U_INLINE char
|
||||
asciiCaseMap(char b, UBool uppercase) {
|
||||
if(uppercase) {
|
||||
if(_SMALL_A<=b && b<=_SMALL_Z) {
|
||||
b-=(_SMALL_A-_CAPITAL_A);
|
||||
}
|
||||
} else {
|
||||
if(_CAPITAL_A<=b && b<=_CAPITAL_Z) {
|
||||
b+=(_SMALL_A-_CAPITAL_A);
|
||||
}
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
/* Punycode-specific Bootstring code ---------------------------------------- */
|
||||
|
||||
/*
|
||||
* The following code omits the {parts} of the pseudo-algorithm in the spec
|
||||
* that are not used with the Punycode parameter set.
|
||||
*/
|
||||
|
||||
/* Bias adaptation function. */
|
||||
static int32_t
|
||||
adaptBias(int32_t delta, int32_t length, UBool firstTime) {
|
||||
int32_t count;
|
||||
|
||||
if(firstTime) {
|
||||
delta/=DAMP;
|
||||
} else {
|
||||
delta/=2;
|
||||
}
|
||||
|
||||
delta+=delta/length;
|
||||
for(count=0; delta>((BASE-TMIN)*TMAX)/2; count+=BASE) {
|
||||
delta/=(BASE-TMIN);
|
||||
}
|
||||
|
||||
return count+(((BASE-TMIN+1)*delta)/(delta+SKEW));
|
||||
}
|
||||
|
||||
#define MAX_CP_COUNT 200
|
||||
|
||||
U_CFUNC int32_t
|
||||
u_strToPunycode(const UChar *src, int32_t srcLength,
|
||||
UChar *dest, int32_t destCapacity,
|
||||
const UBool *caseFlags,
|
||||
UErrorCode *pErrorCode) {
|
||||
|
||||
int32_t cpBuffer[MAX_CP_COUNT];
|
||||
int32_t n, delta, handledCPCount, basicLength, destLength, bias, j, m, q, k, t, srcCPCount;
|
||||
UChar c, c2;
|
||||
|
||||
/* argument checking */
|
||||
if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(src==NULL || srcLength<-1 || (dest==NULL && destCapacity!=0)) {
|
||||
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Handle the basic code points and
|
||||
* convert extended ones to UTF-32 in cpBuffer (caseFlag in sign bit):
|
||||
*/
|
||||
srcCPCount=destLength=0;
|
||||
if(srcLength==-1) {
|
||||
/* NUL-terminated input */
|
||||
for(j=0; /* no condition */; ++j) {
|
||||
if((c=src[j])==0) {
|
||||
break;
|
||||
}
|
||||
if(srcCPCount==MAX_CP_COUNT) {
|
||||
/* too many input code points */
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
if(IS_BASIC(c)) {
|
||||
cpBuffer[srcCPCount++]=0;
|
||||
if(destLength<destCapacity) {
|
||||
dest[destLength]=
|
||||
caseFlags!=NULL ?
|
||||
asciiCaseMap((char)c, caseFlags[j]) :
|
||||
(char)c;
|
||||
}
|
||||
++destLength;
|
||||
} else {
|
||||
n=(caseFlags!=NULL && caseFlags[j])<<31L;
|
||||
if(UTF_IS_SINGLE(c)) {
|
||||
n|=c;
|
||||
} else if(UTF_IS_LEAD(c) && UTF_IS_TRAIL(c2=src[j+1])) {
|
||||
++j;
|
||||
n|=(int32_t)UTF16_GET_PAIR_VALUE(c, c2);
|
||||
} else {
|
||||
/* error: unmatched surrogate */
|
||||
*pErrorCode=U_INVALID_CHAR_FOUND;
|
||||
return 0;
|
||||
}
|
||||
cpBuffer[srcCPCount++]=n;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* length-specified input */
|
||||
for(j=0; j<srcLength; ++j) {
|
||||
if(srcCPCount==MAX_CP_COUNT) {
|
||||
/* too many input code points */
|
||||
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
c=src[j];
|
||||
if(IS_BASIC(c)) {
|
||||
if(destLength<destCapacity) {
|
||||
cpBuffer[srcCPCount++]=0;
|
||||
dest[destLength]=
|
||||
caseFlags!=NULL ?
|
||||
asciiCaseMap((char)c, caseFlags[j]) :
|
||||
(char)c;
|
||||
}
|
||||
++destLength;
|
||||
} else {
|
||||
n=(caseFlags!=NULL && caseFlags[j])<<31L;
|
||||
if(UTF_IS_SINGLE(c)) {
|
||||
n|=c;
|
||||
} else if(UTF_IS_LEAD(c) && (j+1)<srcLength && UTF_IS_TRAIL(c2=src[j+1])) {
|
||||
++j;
|
||||
n|=(int32_t)UTF16_GET_PAIR_VALUE(c, c2);
|
||||
} else {
|
||||
/* error: unmatched surrogate */
|
||||
*pErrorCode=U_INVALID_CHAR_FOUND;
|
||||
return 0;
|
||||
}
|
||||
cpBuffer[srcCPCount++]=n;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Finish the basic string - if it is not empty - with a delimiter. */
|
||||
basicLength=destLength;
|
||||
if(basicLength>0) {
|
||||
if(destLength<destCapacity) {
|
||||
dest[destLength]=DELIMITER;
|
||||
}
|
||||
++destLength;
|
||||
}
|
||||
|
||||
/*
|
||||
* handledCPCount is the number of code points that have been handled
|
||||
* basicLength is the number of basic code points
|
||||
* destLength is the number of chars that have been output
|
||||
*/
|
||||
|
||||
/* Initialize the state: */
|
||||
n=INITIAL_N;
|
||||
delta=0;
|
||||
bias=INITIAL_BIAS;
|
||||
|
||||
/* Main encoding loop: */
|
||||
for(handledCPCount=basicLength; handledCPCount<srcCPCount; /* no op */) {
|
||||
/*
|
||||
* All non-basic code points < n have been handled already.
|
||||
* Find the next larger one:
|
||||
*/
|
||||
for(m=0x7fffffff, j=0; j<srcCPCount; ++j) {
|
||||
q=cpBuffer[j]&0x7fffffff; /* remove case flag from the sign bit */
|
||||
if(n<=q && q<m) {
|
||||
m=q;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Increase delta enough to advance the decoder's
|
||||
* <n,i> state to <m,0>, but guard against overflow:
|
||||
*/
|
||||
if(m-n>(0x7fffffff-MAX_CP_COUNT-delta)/(handledCPCount+1)) {
|
||||
*pErrorCode=U_INTERNAL_PROGRAM_ERROR;
|
||||
return 0;
|
||||
}
|
||||
delta+=(m-n)*(handledCPCount+1);
|
||||
n=m;
|
||||
|
||||
/* Encode a sequence of same code points n */
|
||||
for(j=0; j<srcCPCount; ++j) {
|
||||
q=cpBuffer[j]&0x7fffffff; /* remove case flag from the sign bit */
|
||||
if(q<n) {
|
||||
++delta;
|
||||
} else if(q==n) {
|
||||
/* Represent delta as a generalized variable-length integer: */
|
||||
for(q=delta, k=BASE; /* no condition */; k+=BASE) {
|
||||
|
||||
/** RAM: comment out the old code for conformance with draft-ietf-idn-punycode-03.txt
|
||||
|
||||
t=k-bias;
|
||||
if(t<TMIN) {
|
||||
t=TMIN;
|
||||
} else if(t>TMAX) {
|
||||
t=TMAX;
|
||||
}
|
||||
*/
|
||||
|
||||
t=k-bias;
|
||||
if(t<TMIN) {
|
||||
t=TMIN;
|
||||
} else if(k>=(bias+TMAX)) {
|
||||
t=TMAX;
|
||||
}
|
||||
|
||||
if(q<t) {
|
||||
break;
|
||||
}
|
||||
|
||||
if(destLength<destCapacity) {
|
||||
dest[destLength++]=digitToBasic(t+(q-t)%(BASE-t), 0);
|
||||
}
|
||||
q=(q-t)/(BASE-t);
|
||||
}
|
||||
|
||||
if(destLength<destCapacity) {
|
||||
dest[destLength++]=digitToBasic(q, (UBool)(cpBuffer[j]<0));
|
||||
}
|
||||
bias=adaptBias(delta, handledCPCount+1, (UBool)(handledCPCount==basicLength));
|
||||
delta=0;
|
||||
++handledCPCount;
|
||||
}
|
||||
}
|
||||
|
||||
++delta;
|
||||
++n;
|
||||
}
|
||||
|
||||
return u_terminateUChars(dest, destCapacity, destLength, pErrorCode);
|
||||
}
|
||||
|
||||
U_CFUNC int32_t
|
||||
u_strFromPunycode(const UChar *src, int32_t srcLength,
|
||||
UChar *dest, int32_t destCapacity,
|
||||
UBool *caseFlags,
|
||||
UErrorCode *pErrorCode) {
|
||||
int32_t n, destLength, i, bias, basicLength, j, in, oldi, w, k, digit, t,
|
||||
destCPCount, firstSupplementaryIndex, cpLength;
|
||||
UChar b;
|
||||
|
||||
/* argument checking */
|
||||
if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(src==NULL || srcLength<-1 || (dest==NULL && destCapacity!=0)) {
|
||||
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(srcLength==-1) {
|
||||
srcLength=u_strlen(src);
|
||||
}
|
||||
|
||||
/*
|
||||
* Handle the basic code points:
|
||||
* Let basicLength be the number of input code points
|
||||
* before the last delimiter, or 0 if there is none,
|
||||
* then copy the first basicLength code points to the output.
|
||||
*
|
||||
* The two following loops iterate backward.
|
||||
*/
|
||||
for(j=srcLength; j>0;) {
|
||||
if(src[--j]==DELIMITER) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
destLength=basicLength=destCPCount=j;
|
||||
|
||||
while(j>0) {
|
||||
b=src[--j];
|
||||
if(!IS_BASIC(b)) {
|
||||
*pErrorCode=U_INVALID_CHAR_FOUND;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(j<destCapacity) {
|
||||
dest[j]=(UChar)b;
|
||||
|
||||
if(caseFlags!=NULL) {
|
||||
caseFlags[j]=IS_BASIC_UPPERCASE(b);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize the state: */
|
||||
n=INITIAL_N;
|
||||
i=0;
|
||||
bias=INITIAL_BIAS;
|
||||
firstSupplementaryIndex=1000000000;
|
||||
|
||||
/*
|
||||
* Main decoding loop:
|
||||
* Start just after the last delimiter if any
|
||||
* basic code points were copied; start at the beginning otherwise.
|
||||
*/
|
||||
for(in=basicLength>0 ? basicLength+1 : 0; in<srcLength; /* no op */) {
|
||||
/*
|
||||
* in is the index of the next character to be consumed, and
|
||||
* destCPCount is the number of code points in the output array.
|
||||
*
|
||||
* Decode a generalized variable-length integer into delta,
|
||||
* which gets added to i. The overflow checking is easier
|
||||
* if we increase i as we go, then subtract off its starting
|
||||
* value at the end to obtain delta.
|
||||
*/
|
||||
for(oldi=i, w=1, k=BASE; /* no condition */; k+=BASE) {
|
||||
if(in>=srcLength) {
|
||||
*pErrorCode=U_ILLEGAL_CHAR_FOUND;
|
||||
return 0;
|
||||
}
|
||||
|
||||
digit=basicToDigit[(uint8_t)src[in++]];
|
||||
if(digit<0) {
|
||||
*pErrorCode=U_INVALID_CHAR_FOUND;
|
||||
return 0;
|
||||
}
|
||||
if(digit>(0x7fffffff-i)/w) {
|
||||
/* integer overflow */
|
||||
*pErrorCode=U_ILLEGAL_CHAR_FOUND;
|
||||
return 0;
|
||||
}
|
||||
|
||||
i+=digit*w;
|
||||
/** RAM: comment out the old code for conformance with draft-ietf-idn-punycode-03.txt
|
||||
t=k-bias;
|
||||
if(t<TMIN) {
|
||||
t=TMIN;
|
||||
} else if(t>TMAX) {
|
||||
t=TMAX;
|
||||
}
|
||||
*/
|
||||
t=k-bias;
|
||||
if(t<TMIN) {
|
||||
t=TMIN;
|
||||
} else if(k>=(bias+TMAX)) {
|
||||
t=TMAX;
|
||||
}
|
||||
if(digit<t) {
|
||||
break;
|
||||
}
|
||||
|
||||
if(w>0x7fffffff/(BASE-t)) {
|
||||
/* integer overflow */
|
||||
*pErrorCode=U_ILLEGAL_CHAR_FOUND;
|
||||
return 0;
|
||||
}
|
||||
w*=BASE-t;
|
||||
}
|
||||
|
||||
/*
|
||||
* Modification from sample code:
|
||||
* Increments destCPCount here,
|
||||
* where needed instead of in for() loop tail.
|
||||
*/
|
||||
++destCPCount;
|
||||
bias=adaptBias(i-oldi, destCPCount, (UBool)(oldi==0));
|
||||
|
||||
/*
|
||||
* i was supposed to wrap around from (incremented) destCPCount to 0,
|
||||
* incrementing n each time, so we'll fix that now:
|
||||
*/
|
||||
if(i/destCPCount>(0x7fffffff-n)) {
|
||||
/* integer overflow */
|
||||
*pErrorCode=U_ILLEGAL_CHAR_FOUND;
|
||||
return 0;
|
||||
}
|
||||
|
||||
n+=i/destCPCount;
|
||||
i%=destCPCount;
|
||||
/* not needed for Punycode: */
|
||||
/* if (decode_digit(n) <= BASE) return punycode_invalid_input; */
|
||||
|
||||
if(n>0x10ffff || UTF_IS_SURROGATE(n)) {
|
||||
/* Unicode code point overflow */
|
||||
*pErrorCode=U_ILLEGAL_CHAR_FOUND;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Insert n at position i of the output: */
|
||||
cpLength=UTF_CHAR_LENGTH(n);
|
||||
if((destLength+cpLength)<destCapacity) {
|
||||
int32_t codeUnitIndex;
|
||||
|
||||
/*
|
||||
* Handle indexes when supplementary code points are present.
|
||||
*
|
||||
* In almost all cases, there will be only BMP code points before i
|
||||
* and even in the entire string.
|
||||
* This is handled with the same efficiency as with UTF-32.
|
||||
*
|
||||
* Only the rare cases with supplementary code points are handled
|
||||
* more slowly - but not too bad since this is an insertion anyway.
|
||||
*/
|
||||
if(i<=firstSupplementaryIndex) {
|
||||
codeUnitIndex=i;
|
||||
if(cpLength>1) {
|
||||
firstSupplementaryIndex=codeUnitIndex;
|
||||
} else {
|
||||
++firstSupplementaryIndex;
|
||||
}
|
||||
} else {
|
||||
codeUnitIndex=firstSupplementaryIndex;
|
||||
UTF_FWD_N(dest, codeUnitIndex, destLength, i-codeUnitIndex);
|
||||
}
|
||||
|
||||
/* use the UChar index codeUnitIndex instead of the code point index i */
|
||||
if(codeUnitIndex<destLength) {
|
||||
uprv_memmove(dest+codeUnitIndex+cpLength,
|
||||
dest+codeUnitIndex,
|
||||
(destLength-codeUnitIndex)*U_SIZEOF_UCHAR);
|
||||
if(caseFlags!=NULL) {
|
||||
uprv_memmove(caseFlags+codeUnitIndex+cpLength,
|
||||
caseFlags+codeUnitIndex,
|
||||
destLength-codeUnitIndex);
|
||||
}
|
||||
}
|
||||
if(cpLength==1) {
|
||||
/* BMP, insert one code unit */
|
||||
dest[codeUnitIndex]=(UChar)n;
|
||||
} else {
|
||||
/* supplementary character, insert two code units */
|
||||
dest[codeUnitIndex]=UTF16_LEAD(n);
|
||||
dest[codeUnitIndex+1]=UTF16_TRAIL(n);
|
||||
}
|
||||
if(caseFlags!=NULL) {
|
||||
/* Case of last character determines uppercase flag: */
|
||||
caseFlags[codeUnitIndex]=IS_BASIC_UPPERCASE(src[in-1]);
|
||||
if(cpLength==2) {
|
||||
caseFlags[codeUnitIndex+1]=FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
destLength+=cpLength;
|
||||
++i;
|
||||
}
|
||||
|
||||
return u_terminateUChars(dest, destCapacity, destLength, pErrorCode);
|
||||
}
|
||||
|
||||
/* ### check notes on overflow handling - only necessary if not IDNA? are these Punycode functions to be public? */
|
||||
|
||||
#endif /* #if !UCONFIG_NO_IDNA */
|
118
extern/icu/source/common/punycode.h
vendored
118
extern/icu/source/common/punycode.h
vendored
@ -1,118 +0,0 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2002-2003, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
*******************************************************************************
|
||||
* file name: punycode.h
|
||||
* encoding: US-ASCII
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*
|
||||
* created on: 2002jan31
|
||||
* created by: Markus W. Scherer
|
||||
*/
|
||||
|
||||
/* This ICU code derived from: */
|
||||
/*
|
||||
punycode.c 0.4.0 (2001-Nov-17-Sat)
|
||||
http://www.cs.berkeley.edu/~amc/idn/
|
||||
Adam M. Costello
|
||||
http://www.nicemice.net/amc/
|
||||
*/
|
||||
|
||||
#ifndef __PUNYCODE_H__
|
||||
#define __PUNYCODE_H__
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_IDNA
|
||||
|
||||
/**
|
||||
* u_strToPunycode() converts Unicode to Punycode.
|
||||
*
|
||||
* The input string must not contain single, unpaired surrogates.
|
||||
* The output will be represented as an array of ASCII code points.
|
||||
*
|
||||
* The output string is NUL-terminated according to normal ICU
|
||||
* string output rules.
|
||||
*
|
||||
* @param src Input Unicode string.
|
||||
* This function handles a limited amount of code points
|
||||
* (the limit is >=64).
|
||||
* U_INDEX_OUTOFBOUNDS_ERROR is set if the limit is exceeded.
|
||||
* @param srcLength Number of UChars in src, or -1 if NUL-terminated.
|
||||
* @param dest Output Punycode array.
|
||||
* @param destCapacity Size of dest.
|
||||
* @param caseFlags Vector of boolean values, one per input UChar,
|
||||
* indicating that the corresponding character is to be
|
||||
* marked for the decoder optionally
|
||||
* uppercasing (TRUE) or lowercasing (FALSE)
|
||||
* the character.
|
||||
* ASCII characters are output directly in the case as marked.
|
||||
* Flags corresponding to trail surrogates are ignored.
|
||||
* If caseFlags==NULL then input characters are not
|
||||
* case-mapped.
|
||||
* @param pErrorCode ICU in/out error code parameter.
|
||||
* U_INVALID_CHAR_FOUND if src contains
|
||||
* unmatched single surrogates.
|
||||
* U_INDEX_OUTOFBOUNDS_ERROR if src contains
|
||||
* too many code points.
|
||||
* @return Number of ASCII characters in puny.
|
||||
*
|
||||
* @see u_strFromPunycode
|
||||
*/
|
||||
U_CFUNC int32_t
|
||||
u_strToPunycode(const UChar *src, int32_t srcLength,
|
||||
UChar *dest, int32_t destCapacity,
|
||||
const UBool *caseFlags,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* u_strFromPunycode() converts Punycode to Unicode.
|
||||
* The Unicode string will be at most as long (in UChars)
|
||||
* than the Punycode string (in chars).
|
||||
*
|
||||
* @param src Input Punycode string.
|
||||
* @param srcLength Length of puny, or -1 if NUL-terminated
|
||||
* @param dest Output Unicode string buffer.
|
||||
* @param destCapacity Size of dest in number of UChars,
|
||||
* and of caseFlags in numbers of UBools.
|
||||
* @param caseFlags Output array for case flags as
|
||||
* defined by the Punycode string.
|
||||
* The caller should uppercase (TRUE) or lowercase (FASLE)
|
||||
* the corresponding character in dest.
|
||||
* For supplementary characters, only the lead surrogate
|
||||
* is marked, and FALSE is stored for the trail surrogate.
|
||||
* This is redundant and not necessary for ASCII characters
|
||||
* because they are already in the case indicated.
|
||||
* Can be NULL if the case flags are not needed.
|
||||
* @param pErrorCode ICU in/out error code parameter.
|
||||
* U_INVALID_CHAR_FOUND if a non-ASCII character
|
||||
* precedes the last delimiter ('-'),
|
||||
* or if an invalid character (not a-zA-Z0-9) is found
|
||||
* after the last delimiter.
|
||||
* U_ILLEGAL_CHAR_FOUND if the delta sequence is ill-formed.
|
||||
* @return Number of UChars written to dest.
|
||||
*
|
||||
* @see u_strToPunycode
|
||||
*/
|
||||
U_CFUNC int32_t
|
||||
u_strFromPunycode(const UChar *src, int32_t srcLength,
|
||||
UChar *dest, int32_t destCapacity,
|
||||
UBool *caseFlags,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
#endif /* #if !UCONFIG_NO_IDNA */
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Hey, Emacs, please set the following:
|
||||
*
|
||||
* Local Variables:
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*
|
||||
*/
|
2787
extern/icu/source/common/putil.c
vendored
2787
extern/icu/source/common/putil.c
vendored
File diff suppressed because it is too large
Load Diff
1341
extern/icu/source/common/rbbi.cpp
vendored
1341
extern/icu/source/common/rbbi.cpp
vendored
File diff suppressed because it is too large
Load Diff
407
extern/icu/source/common/rbbicst.pl
vendored
407
extern/icu/source/common/rbbicst.pl
vendored
@ -1,407 +0,0 @@
|
||||
#**************************************************************************
|
||||
# Copyright (C) 2002-2004 International Business Machines Corporation *
|
||||
# and others. All rights reserved. *
|
||||
#**************************************************************************
|
||||
#
|
||||
# rbbicst Compile the RBBI rule paser state table data into initialized C data.
|
||||
# Usage:
|
||||
# cd icu/source/common
|
||||
# perl rbbicst.pl [-j] < rbbirpt.txt > rbbirpt.h
|
||||
#
|
||||
# The output file, rbbrpt.h, is included by some of the .cpp rbbi
|
||||
# implementation files. This perl script is NOT run as part
|
||||
# of a normal ICU build. It is run by hand when needed, and the
|
||||
# rbbirpt.h generated file is put back into cvs.
|
||||
#
|
||||
# See rbbirpt.h for a description of the input format for this script.
|
||||
#
|
||||
|
||||
if ($ARGV[0] eq "-j") {
|
||||
$javaOutput = 1;
|
||||
shift @ARGV;
|
||||
}
|
||||
|
||||
|
||||
$num_states = 1; # Always the state number for the line being compiled.
|
||||
$line_num = 0; # The line number in the input file.
|
||||
|
||||
$states{"pop"} = 255; # Add the "pop" to the list of defined state names.
|
||||
# This prevents any state from being labelled with "pop",
|
||||
# and resolves references to "pop" in the next state field.
|
||||
|
||||
line_loop: while (<>) {
|
||||
chomp();
|
||||
$line = $_;
|
||||
@fields = split();
|
||||
$line_num++;
|
||||
|
||||
# Remove # comments, which are any fields beginning with a #, plus all
|
||||
# that follow on the line.
|
||||
for ($i=0; $i<@fields; $i++) {
|
||||
if ($fields[$i] =~ /^#/) {
|
||||
@fields = @fields[0 .. $i-1];
|
||||
last;
|
||||
}
|
||||
}
|
||||
# ignore blank lines, and those with no fields left after stripping comments..
|
||||
if (@fields == 0) {
|
||||
next;
|
||||
}
|
||||
|
||||
#
|
||||
# State Label: handling.
|
||||
# Does the first token end with a ":"? If so, it's the name of a state.
|
||||
# Put in a hash, together with the current state number,
|
||||
# so that we can later look up the number from the name.
|
||||
#
|
||||
if (@fields[0] =~ /.*:$/) {
|
||||
$state_name = @fields[0];
|
||||
$state_name =~ s/://; # strip off the colon from the state name.
|
||||
|
||||
if ($states{$state_name} != 0) {
|
||||
print " rbbicst: at line $line-num duplicate definition of state $state_name\n";
|
||||
}
|
||||
$states{$state_name} = $num_states;
|
||||
$stateNames[$num_states] = $state_name;
|
||||
|
||||
# if the label was the only thing on this line, go on to the next line,
|
||||
# otherwise assume that a state definition is on the same line and fall through.
|
||||
if (@fields == 1) {
|
||||
next line_loop;
|
||||
}
|
||||
shift @fields; # shift off label field in preparation
|
||||
# for handling the rest of the line.
|
||||
}
|
||||
|
||||
#
|
||||
# State Transition line.
|
||||
# syntax is this,
|
||||
# character [n] target-state [^push-state] [function-name]
|
||||
# where
|
||||
# [something] is an optional something
|
||||
# character is either a single quoted character e.g. '['
|
||||
# or a name of a character class, e.g. white_space
|
||||
#
|
||||
|
||||
$state_line_num[$num_states] = $line_num; # remember line number with each state
|
||||
# so we can make better error messages later.
|
||||
#
|
||||
# First field, character class or literal character for this transition.
|
||||
#
|
||||
if ($fields[0] =~ /^'.'$/) {
|
||||
# We've got a quoted literal character.
|
||||
$state_literal_chars[$num_states] = $fields[0];
|
||||
$state_literal_chars[$num_states] =~ s/'//g;
|
||||
} else {
|
||||
# We've got the name of a character class.
|
||||
$state_char_class[$num_states] = $fields[0];
|
||||
if ($fields[0] =~ /[\W]/) {
|
||||
print " rbbicsts: at line $line_num, bad character literal or character class name.\n";
|
||||
print " scanning $fields[0]\n";
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
shift @fields;
|
||||
|
||||
#
|
||||
# do the 'n' flag
|
||||
#
|
||||
$state_flag[$num_states] = "FALSE";
|
||||
if ($fields[0] eq "n") {
|
||||
$state_flag[$num_states] = "TRUE";
|
||||
shift @fields;
|
||||
}
|
||||
|
||||
#
|
||||
# do the destination state.
|
||||
#
|
||||
$state_dest_state[$num_states] = $fields[0];
|
||||
if ($fields[0] eq "") {
|
||||
print " rbbicsts: at line $line_num, destination state missing.\n";
|
||||
exit(-1);
|
||||
}
|
||||
shift @fields;
|
||||
|
||||
#
|
||||
# do the push state, if present.
|
||||
#
|
||||
if ($fields[0] =~ /^\^/) {
|
||||
$fields[0] =~ s/^\^//;
|
||||
$state_push_state[$num_states] = $fields[0];
|
||||
if ($fields[0] eq "" ) {
|
||||
print " rbbicsts: at line $line_num, expected state after ^ (no spaces).\n";
|
||||
exit(-1);
|
||||
}
|
||||
shift @fields;
|
||||
}
|
||||
|
||||
#
|
||||
# Lastly, do the optional action name.
|
||||
#
|
||||
if ($fields[0] ne "") {
|
||||
$state_func_name[$num_states] = $fields[0];
|
||||
shift @fields;
|
||||
}
|
||||
|
||||
#
|
||||
# There should be no fields left on the line at this point.
|
||||
#
|
||||
if (@fields > 0) {
|
||||
print " rbbicsts: at line $line_num, unexpected extra stuff on input line.\n";
|
||||
print " scanning $fields[0]\n";
|
||||
}
|
||||
$num_states++;
|
||||
}
|
||||
|
||||
#
|
||||
# We've read in the whole file, now go back and output the
|
||||
# C source code for the state transition table.
|
||||
#
|
||||
# We read all states first, before writing anything, so that the state numbers
|
||||
# for the destination states are all available to be written.
|
||||
#
|
||||
|
||||
#
|
||||
# Make hashes for the names of the character classes and
|
||||
# for the names of the actions that appeared.
|
||||
#
|
||||
for ($state=1; $state < $num_states; $state++) {
|
||||
if ($state_char_class[$state] ne "") {
|
||||
if ($charClasses{$state_char_class[$state]} == 0) {
|
||||
$charClasses{$state_char_class[$state]} = 1;
|
||||
}
|
||||
}
|
||||
if ($state_func_name[$state] eq "") {
|
||||
$state_func_name[$state] = "doNOP";
|
||||
}
|
||||
if ($actions{$state_action_name[$state]} == 0) {
|
||||
$actions{$state_func_name[$state]} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Check that all of the destination states have been defined
|
||||
#
|
||||
#
|
||||
$states{"exit"} = 0; # Predefined state name, terminates state machine.
|
||||
for ($state=1; $state<$num_states; $state++) {
|
||||
if ($states{$state_dest_state[$state]} == 0 && $state_dest_state[$state] ne "exit") {
|
||||
print "Error at line $state_line_num[$state]: target state \"$state_dest_state[$state]\" is not defined.\n";
|
||||
$errors++;
|
||||
}
|
||||
if ($state_push_state[$state] ne "" && $states{$state_push_state[$state]} == 0) {
|
||||
print "Error at line $state_line_num[$state]: target state \"$state_push_state[$state]\" is not defined.\n";
|
||||
$errors++;
|
||||
}
|
||||
}
|
||||
|
||||
die if ($errors>0);
|
||||
|
||||
if ($javaOutput) {
|
||||
print "/*\n";
|
||||
print " *******************************************************************************\n";
|
||||
print " * Copyright (C) 2003,\n";
|
||||
print " * International Business Machines Corporation and others. All Rights Reserved.\n";
|
||||
print " *******************************************************************************\n";
|
||||
print " */\n";
|
||||
print " \n";
|
||||
print "package com.ibm.icu.text;\n";
|
||||
print " \n";
|
||||
print "/**\n";
|
||||
print " * Generated Java File. Do not edit by hand.\n";
|
||||
print " * This file contains the state table for the ICU Rule Based Break Iterator\n";
|
||||
print " * rule parser.\n";
|
||||
print " * It is generated by the Perl script \"rbbicst.pl\" from\n";
|
||||
print " * the rule parser state definitions file \"rbbirpt.txt\".\n";
|
||||
print " *\n";
|
||||
print " */\n";
|
||||
|
||||
print "public class RuleBasedBreakIteratorStateTable\n";
|
||||
print "{\n";
|
||||
|
||||
#
|
||||
# Emit the constants for the actions to be performed.
|
||||
#
|
||||
$n = 1;
|
||||
foreach $act (keys %actions) {
|
||||
print " public static final int $act = $n;\n";
|
||||
$n++;
|
||||
}
|
||||
print " \n";
|
||||
#
|
||||
# emit the state transition table
|
||||
#
|
||||
print " public static final String[] gRuleParseStateTable = {\n";
|
||||
printf(" \"\\u%04.4x\\u%04.4x\\u%04.4x\\u%04.4x\\u%04.4x\"\n", doNOP, 0, 0, 0, 1);
|
||||
for ($state=1; $state < $num_states; $state++) {
|
||||
printf(" , \"\\u%04.4x", $state_func_name[$state]);
|
||||
# print " , {$state_func_name[$state],";
|
||||
if ($state_literal_chars[$state] ne "") {
|
||||
printf("\\u%04.4x", $state_func_name[$state]);
|
||||
}else {
|
||||
printf("\\u%04.4x", $charClasses{$state_char_class[$state]});
|
||||
}
|
||||
printf("\\u%04.4x", $states{$state_dest_state[$state]});
|
||||
|
||||
# The push-state field is optional. If omitted, fill field with a zero, which flags
|
||||
# the state machine that there is no push state.
|
||||
if ($state_push_state[$state] eq "") {
|
||||
print "\\u0000";
|
||||
} else {
|
||||
printf("\\u%04.4x", $states{$state_push_state[$state]});
|
||||
}
|
||||
printf("\\u%04.4x", $state_flag[$state]);
|
||||
|
||||
# For the first row of each state, append the state name.
|
||||
# Used for debugging only.
|
||||
if ($stateNames[$state] ne "") {
|
||||
printf("%-20s", $stateNames[$state]."\"");
|
||||
} else {
|
||||
printf("%-20s", "\"");
|
||||
}
|
||||
|
||||
# Put out a C++ comment showing the number (index) of this state row,
|
||||
print " // $state ";
|
||||
print "\n";
|
||||
};
|
||||
print " };\n";
|
||||
print "}\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
#
|
||||
# C++ Output ...
|
||||
#
|
||||
|
||||
|
||||
print "//---------------------------------------------------------------------------------\n";
|
||||
print "//\n";
|
||||
print "// Generated Header File. Do not edit by hand.\n";
|
||||
print "// This file contains the state table for the ICU Rule Based Break Iterator\n";
|
||||
print "// rule parser.\n";
|
||||
print "// It is generated by the Perl script \"rbbicst.pl\" from\n";
|
||||
print "// the rule parser state definitions file \"rbbirpt.txt\".\n";
|
||||
print "//\n";
|
||||
print "// Copyright (C) 2002-2003 International Business Machines Corporation \n";
|
||||
print "// and others. All rights reserved. \n";
|
||||
print "//\n";
|
||||
print "//---------------------------------------------------------------------------------\n";
|
||||
print "#ifndef RBBIRPT_H\n";
|
||||
print "#define RBBIRPT_H\n";
|
||||
print "\n";
|
||||
print "U_NAMESPACE_BEGIN\n";
|
||||
|
||||
#
|
||||
# Emit the constants for indicies of Unicode Sets
|
||||
# Define one constant for each of the character classes encountered.
|
||||
# At the same time, store the index corresponding to the set name back into hash.
|
||||
#
|
||||
print "//\n";
|
||||
print "// Character classes for RBBI rule scanning.\n";
|
||||
print "//\n";
|
||||
$i = 128; # State Table values for Unicode char sets range from 128-250.
|
||||
# Sets "default", "escaped", etc. get special handling.
|
||||
# They have no corresponding UnicodeSet object in the state machine,
|
||||
# but are handled by special case code. So we emit no reference
|
||||
# to a UnicodeSet object to them here.
|
||||
foreach $setName (keys %charClasses) {
|
||||
if ($setName eq "default") {
|
||||
$charClasses{$setName} = 255;}
|
||||
elsif ($setName eq "escaped") {
|
||||
$charClasses{$setName} = 254;}
|
||||
elsif ($setName eq "escapedP") {
|
||||
$charClasses{$setName} = 253;}
|
||||
elsif ($setName eq "eof") {
|
||||
$charClasses{$setName} = 252;}
|
||||
else {
|
||||
# Normal character class. Fill in array with a ptr to the corresponding UnicodeSet in the state machine.
|
||||
print " static const uint8_t kRuleSet_$setName = $i;\n";
|
||||
$charClasses{$setName} = $i;
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
print "\n\n";
|
||||
|
||||
#
|
||||
# Emit the enum for the actions to be performed.
|
||||
#
|
||||
print "enum RBBI_RuleParseAction {\n";
|
||||
foreach $act (keys %actions) {
|
||||
print " $act,\n";
|
||||
}
|
||||
print " rbbiLastAction};\n\n";
|
||||
|
||||
#
|
||||
# Emit the struct definition for transtion table elements.
|
||||
#
|
||||
print "//-------------------------------------------------------------------------------\n";
|
||||
print "//\n";
|
||||
print "// RBBIRuleTableEl represents the structure of a row in the transition table\n";
|
||||
print "// for the rule parser state machine.\n";
|
||||
print "//-------------------------------------------------------------------------------\n";
|
||||
print "struct RBBIRuleTableEl {\n";
|
||||
print " RBBI_RuleParseAction fAction;\n";
|
||||
print " uint8_t fCharClass; // 0-127: an individual ASCII character\n";
|
||||
print " // 128-255: character class index\n";
|
||||
print " uint8_t fNextState; // 0-250: normal next-stat numbers\n";
|
||||
print " // 255: pop next-state from stack.\n";
|
||||
print " uint8_t fPushState;\n";
|
||||
print " UBool fNextChar;\n";
|
||||
print "};\n\n";
|
||||
|
||||
#
|
||||
# emit the state transition table
|
||||
#
|
||||
print "static const struct RBBIRuleTableEl gRuleParseStateTable[] = {\n";
|
||||
print " {doNOP, 0, 0, 0, TRUE}\n"; # State 0 is a dummy. Real states start with index = 1.
|
||||
for ($state=1; $state < $num_states; $state++) {
|
||||
print " , {$state_func_name[$state],";
|
||||
if ($state_literal_chars[$state] ne "") {
|
||||
$c = $state_literal_chars[$state];
|
||||
printf(" %d /* $c */,", ord($c)); # use numeric value, so EBCDIC machines are ok.
|
||||
}else {
|
||||
print " $charClasses{$state_char_class[$state]},";
|
||||
}
|
||||
print " $states{$state_dest_state[$state]},";
|
||||
|
||||
# The push-state field is optional. If omitted, fill field with a zero, which flags
|
||||
# the state machine that there is no push state.
|
||||
if ($state_push_state[$state] eq "") {
|
||||
print "0, ";
|
||||
} else {
|
||||
print " $states{$state_push_state[$state]},";
|
||||
}
|
||||
print " $state_flag[$state]} ";
|
||||
|
||||
# Put out a C++ comment showing the number (index) of this state row,
|
||||
# and, if this is the first row of the table for this state, the state name.
|
||||
print " // $state ";
|
||||
if ($stateNames[$state] ne "") {
|
||||
print " $stateNames[$state]";
|
||||
}
|
||||
print "\n";
|
||||
};
|
||||
print " };\n";
|
||||
|
||||
|
||||
#
|
||||
# emit a mapping array from state numbers to state names.
|
||||
#
|
||||
# This array is used for producing debugging output from the rule parser.
|
||||
#
|
||||
print "static const char * const RBBIRuleStateNames[] = {";
|
||||
for ($state=0; $state<$num_states; $state++) {
|
||||
if ($stateNames[$state] ne "") {
|
||||
print " \"$stateNames[$state]\",\n";
|
||||
} else {
|
||||
print " 0,\n";
|
||||
}
|
||||
}
|
||||
print " 0};\n\n";
|
||||
|
||||
print "U_NAMESPACE_END\n";
|
||||
print "#endif\n";
|
||||
}
|
||||
|
||||
|
||||
|
422
extern/icu/source/common/rbbidata.cpp
vendored
422
extern/icu/source/common/rbbidata.cpp
vendored
@ -1,422 +0,0 @@
|
||||
/*
|
||||
***************************************************************************
|
||||
* Copyright (C) 1999-2004 International Business Machines Corporation *
|
||||
* and others. All rights reserved. *
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_BREAK_ITERATION
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "rbbidata.h"
|
||||
#include "rbbirb.h"
|
||||
#include "utrie.h"
|
||||
#include "udatamem.h"
|
||||
#include "cmemory.h"
|
||||
#include "cstring.h"
|
||||
#include "umutex.h"
|
||||
|
||||
#include "uassert.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------------
|
||||
//
|
||||
// Trie access folding function. Copied as-is from properties code in uchar.c
|
||||
//
|
||||
//-----------------------------------------------------------------------------------
|
||||
U_CDECL_BEGIN
|
||||
static int32_t U_CALLCONV
|
||||
getFoldingOffset(uint32_t data) {
|
||||
/* if bit 15 is set, then the folding offset is in bits 14..0 of the 16-bit trie result */
|
||||
if(data&0x8000) {
|
||||
return (int32_t)(data&0x7fff);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
U_CDECL_END
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Constructors.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
RBBIDataWrapper::RBBIDataWrapper(const RBBIDataHeader *data, UErrorCode &status) {
|
||||
init(data, status);
|
||||
}
|
||||
|
||||
RBBIDataWrapper::RBBIDataWrapper(UDataMemory* udm, UErrorCode &status) {
|
||||
const RBBIDataHeader *d = (const RBBIDataHeader *)
|
||||
// ((char *)&(udm->pHeader->info) + udm->pHeader->info.size);
|
||||
// taking into consideration the padding added in by udata_write
|
||||
((char *)(udm->pHeader) + udm->pHeader->dataHeader.headerSize);
|
||||
init(d, status);
|
||||
fUDataMem = udm;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// init(). Does most of the work of construction, shared between the
|
||||
// constructors.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
void RBBIDataWrapper::init(const RBBIDataHeader *data, UErrorCode &status) {
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
fHeader = data;
|
||||
if (fHeader->fMagic != 0xb1a0) {
|
||||
status = U_BRK_INTERNAL_ERROR;
|
||||
return;
|
||||
}
|
||||
|
||||
fUDataMem = NULL;
|
||||
fReverseTable = NULL;
|
||||
fSafeFwdTable = NULL;
|
||||
fSafeRevTable = NULL;
|
||||
if (data->fFTableLen != 0) {
|
||||
fForwardTable = (RBBIStateTable *)((char *)data + fHeader->fFTable);
|
||||
}
|
||||
if (data->fRTableLen != 0) {
|
||||
fReverseTable = (RBBIStateTable *)((char *)data + fHeader->fRTable);
|
||||
}
|
||||
if (data->fSFTableLen != 0) {
|
||||
fSafeFwdTable = (RBBIStateTable *)((char *)data + fHeader->fSFTable);
|
||||
}
|
||||
if (data->fSRTableLen != 0) {
|
||||
fSafeRevTable = (RBBIStateTable *)((char *)data + fHeader->fSRTable);
|
||||
}
|
||||
|
||||
|
||||
utrie_unserialize(&fTrie,
|
||||
(uint8_t *)data + fHeader->fTrie,
|
||||
fHeader->fTrieLen,
|
||||
&status);
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
fTrie.getFoldingOffset=getFoldingOffset;
|
||||
|
||||
|
||||
fRuleSource = (UChar *)((char *)data + fHeader->fRuleSource);
|
||||
fRuleString.setTo(TRUE, fRuleSource, -1);
|
||||
U_ASSERT(data->fRuleSourceLen > 0);
|
||||
|
||||
fRuleStatusTable = (int32_t *)((char *)data + fHeader->fStatusTable);
|
||||
fStatusMaxIdx = data->fStatusTableLen / sizeof(int32_t);
|
||||
|
||||
fRefCount = 1;
|
||||
|
||||
#ifdef RBBI_DEBUG
|
||||
char *debugEnv = getenv("U_RBBIDEBUG");
|
||||
if (debugEnv && uprv_strstr(debugEnv, "data")) {this->printData();}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Destructor. Don't call this - use removeReference() instead.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
RBBIDataWrapper::~RBBIDataWrapper() {
|
||||
U_ASSERT(fRefCount == 0);
|
||||
if (fUDataMem) {
|
||||
udata_close(fUDataMem);
|
||||
} else {
|
||||
uprv_free((void *)fHeader);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Operator == Consider two RBBIDataWrappers to be equal if they
|
||||
// refer to the same underlying data. Although
|
||||
// the data wrappers are normally shared between
|
||||
// iterator instances, it's possible to independently
|
||||
// open the same data twice, and get two instances, which
|
||||
// should still be ==.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
UBool RBBIDataWrapper::operator ==(const RBBIDataWrapper &other) const {
|
||||
if (fHeader == other.fHeader) {
|
||||
return TRUE;
|
||||
}
|
||||
if (fHeader->fLength != other.fHeader->fLength) {
|
||||
return FALSE;
|
||||
}
|
||||
if (uprv_memcmp(fHeader, other.fHeader, fHeader->fLength) == 0) {
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int32_t RBBIDataWrapper::hashCode() {
|
||||
return fHeader->fFTableLen;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Reference Counting. A single RBBIDataWrapper object is shared among
|
||||
// however many RulesBasedBreakIterator instances are
|
||||
// referencing the same data.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
void RBBIDataWrapper::removeReference() {
|
||||
if (umtx_atomic_dec(&fRefCount) == 0) {
|
||||
delete this;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
RBBIDataWrapper *RBBIDataWrapper::addReference() {
|
||||
umtx_atomic_inc(&fRefCount);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// getRuleSourceString
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
const UnicodeString &RBBIDataWrapper::getRuleSourceString() const {
|
||||
return fRuleString;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// print - debugging function to dump the runtime data tables.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
#ifdef RBBI_DEBUG
|
||||
void RBBIDataWrapper::printTable(const char *heading, const RBBIStateTable *table) {
|
||||
uint32_t c;
|
||||
uint32_t s;
|
||||
|
||||
RBBIDebugPrintf(" %s\n", heading);
|
||||
|
||||
RBBIDebugPrintf("State | Acc LA TagIx");
|
||||
for (c=0; c<fHeader->fCatCount; c++) {RBBIDebugPrintf("%3d ", c);}
|
||||
RBBIDebugPrintf("\n------|---------------"); for (c=0;c<fHeader->fCatCount; c++) {
|
||||
RBBIDebugPrintf("----");
|
||||
}
|
||||
RBBIDebugPrintf("\n");
|
||||
|
||||
if (table == NULL) {
|
||||
RBBIDebugPrintf(" N U L L T A B L E\n\n");
|
||||
return;
|
||||
}
|
||||
for (s=0; s<table->fNumStates; s++) {
|
||||
RBBIStateTableRow *row = (RBBIStateTableRow *)
|
||||
(table->fTableData + (table->fRowLen * s));
|
||||
RBBIDebugPrintf("%4d | %3d %3d %3d ", s, row->fAccepting, row->fLookAhead, row->fTagIdx);
|
||||
for (c=0; c<fHeader->fCatCount; c++) {
|
||||
RBBIDebugPrintf("%3d ", row->fNextState[c]);
|
||||
}
|
||||
RBBIDebugPrintf("\n");
|
||||
}
|
||||
RBBIDebugPrintf("\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RBBI_DEBUG
|
||||
void RBBIDataWrapper::printData() {
|
||||
RBBIDebugPrintf("RBBI Data at %p\n", (void *)fHeader);
|
||||
RBBIDebugPrintf(" Version = %d\n", fHeader->fVersion);
|
||||
RBBIDebugPrintf(" total length of data = %d\n", fHeader->fLength);
|
||||
RBBIDebugPrintf(" number of character categories = %d\n\n", fHeader->fCatCount);
|
||||
|
||||
printTable("Forward State Transition Table", fForwardTable);
|
||||
printTable("Reverse State Transition Table", fReverseTable);
|
||||
printTable("Safe Forward State Transition Table", fSafeFwdTable);
|
||||
printTable("Safe Reverse State Transition Table", fSafeRevTable);
|
||||
|
||||
RBBIDebugPrintf("\nOrignal Rules source:\n");
|
||||
for (int32_t c=0; fRuleSource[c] != 0; c++) {
|
||||
RBBIDebugPrintf("%c", fRuleSource[c]);
|
||||
}
|
||||
RBBIDebugPrintf("\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// ubrk_swap - byte swap and char encoding swap of RBBI data
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_swap(const UDataSwapper *ds, const void *inData, int32_t length, void *outData,
|
||||
UErrorCode *status) {
|
||||
|
||||
if (status == NULL || U_FAILURE(*status)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Check that the data header is for for break data.
|
||||
// (Header contents are defined in genbrk.cpp)
|
||||
//
|
||||
const UDataInfo *pInfo = (const UDataInfo *)((const char *)inData+4);
|
||||
if(!( pInfo->dataFormat[0]==0x42 && /* dataFormat="Brk " */
|
||||
pInfo->dataFormat[1]==0x72 &&
|
||||
pInfo->dataFormat[2]==0x6b &&
|
||||
pInfo->dataFormat[3]==0x20 &&
|
||||
pInfo->formatVersion[0]==3 )) {
|
||||
udata_printError(ds, "ubrk_swap(): data format %02x.%02x.%02x.%02x (format version %02x) is not recognized\n",
|
||||
pInfo->dataFormat[0], pInfo->dataFormat[1],
|
||||
pInfo->dataFormat[2], pInfo->dataFormat[3],
|
||||
pInfo->formatVersion[0]);
|
||||
*status=U_UNSUPPORTED_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Swap the data header. (This is the generic ICU Data Header, not the RBBI Specific
|
||||
// RBBIDataHeader). This swap also conveniently gets us
|
||||
// the size of the ICU d.h., which lets us locate the start
|
||||
// of the RBBI specific data.
|
||||
//
|
||||
int32_t headerSize=udata_swapDataHeader(ds, inData, length, outData, status);
|
||||
|
||||
|
||||
//
|
||||
// Get the RRBI Data Header, and check that it appears to be OK.
|
||||
//
|
||||
const uint8_t *inBytes =(const uint8_t *)inData+headerSize;
|
||||
RBBIDataHeader *rbbiDH = (RBBIDataHeader *)inBytes;
|
||||
if (ds->readUInt32(rbbiDH->fMagic) != 0xb1a0 ||
|
||||
ds->readUInt32(rbbiDH->fVersion) != 1 ||
|
||||
ds->readUInt32(rbbiDH->fLength) < sizeof(RBBIDataHeader))
|
||||
{
|
||||
udata_printError(ds, "ubrk_swap(): RBBI Data header is invalid.\n");
|
||||
*status=U_UNSUPPORTED_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Prefight operation? Just return the size
|
||||
//
|
||||
int32_t totalSize = headerSize + ds->readUInt32(rbbiDH->fLength);
|
||||
if (length < 0) {
|
||||
return totalSize;
|
||||
}
|
||||
|
||||
//
|
||||
// Check that length passed in is consistent with length from RBBI data header.
|
||||
//
|
||||
if (length > 0) {
|
||||
length -= headerSize;
|
||||
if ((uint32_t)length < ds->readUInt32(rbbiDH->fLength)) {
|
||||
udata_printError(ds, "ubrk_swap(): too few bytes (%d after ICU Data header) for break data.\n",
|
||||
length);
|
||||
*status=U_INDEX_OUTOFBOUNDS_ERROR;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Swap the Data. Do the data itself first, then the RBBI Data Header, because
|
||||
// we need to reference the header to locate the data, and an
|
||||
// inplace swap of the header leaves it unusable.
|
||||
//
|
||||
uint8_t *outBytes = (uint8_t *)outData + headerSize;
|
||||
int32_t tableStartOffset;
|
||||
int32_t tableLength;
|
||||
|
||||
//
|
||||
// If not swapping in place, zero out the output buffer before starting.
|
||||
// Individual tables and other data items within are aligned to 8 byte boundaries
|
||||
// when originally created. Any unused space between items needs to be zero.
|
||||
//
|
||||
if (inBytes != outBytes) {
|
||||
uprv_memset(outBytes, 0, length);
|
||||
}
|
||||
|
||||
//
|
||||
// Each state table begins with several 32 bit fields. Calculate the size
|
||||
// in bytes of these.
|
||||
//
|
||||
RBBIStateTable *stp = NULL;
|
||||
int32_t topSize = (char *)stp->fTableData - (char *)stp;
|
||||
|
||||
// Forward state table.
|
||||
tableStartOffset = ds->readUInt32(rbbiDH->fFTable);
|
||||
tableLength = ds->readUInt32(rbbiDH->fFTableLen);
|
||||
|
||||
if (tableLength > 0) {
|
||||
ds->swapArray32(ds, inBytes+tableStartOffset, topSize,
|
||||
outBytes+tableStartOffset, status);
|
||||
ds->swapArray16(ds, inBytes+tableStartOffset+topSize, tableLength-topSize,
|
||||
outBytes+tableStartOffset+topSize, status);
|
||||
}
|
||||
|
||||
// Reverse state table. Same layout as forward table, above.
|
||||
tableStartOffset = ds->readUInt32(rbbiDH->fRTable);
|
||||
tableLength = ds->readUInt32(rbbiDH->fRTableLen);
|
||||
|
||||
if (tableLength > 0) {
|
||||
ds->swapArray32(ds, inBytes+tableStartOffset, topSize,
|
||||
outBytes+tableStartOffset, status);
|
||||
ds->swapArray16(ds, inBytes+tableStartOffset+topSize, tableLength-topSize,
|
||||
outBytes+tableStartOffset+topSize, status);
|
||||
}
|
||||
|
||||
// Safe Forward state table. Same layout as forward table, above.
|
||||
tableStartOffset = ds->readUInt32(rbbiDH->fSFTable);
|
||||
tableLength = ds->readUInt32(rbbiDH->fSFTableLen);
|
||||
|
||||
if (tableLength > 0) {
|
||||
ds->swapArray32(ds, inBytes+tableStartOffset, topSize,
|
||||
outBytes+tableStartOffset, status);
|
||||
ds->swapArray16(ds, inBytes+tableStartOffset+topSize, tableLength-topSize,
|
||||
outBytes+tableStartOffset+topSize, status);
|
||||
}
|
||||
|
||||
// Safe Reverse state table. Same layout as forward table, above.
|
||||
tableStartOffset = ds->readUInt32(rbbiDH->fSRTable);
|
||||
tableLength = ds->readUInt32(rbbiDH->fSRTableLen);
|
||||
|
||||
if (tableLength > 0) {
|
||||
ds->swapArray32(ds, inBytes+tableStartOffset, topSize,
|
||||
outBytes+tableStartOffset, status);
|
||||
ds->swapArray16(ds, inBytes+tableStartOffset+topSize, tableLength-topSize,
|
||||
outBytes+tableStartOffset+topSize, status);
|
||||
}
|
||||
|
||||
// Trie table for character categories
|
||||
utrie_swap(ds, inBytes+ds->readUInt32(rbbiDH->fTrie), ds->readUInt32(rbbiDH->fTrieLen),
|
||||
outBytes+ds->readUInt32(rbbiDH->fTrie), status);
|
||||
|
||||
// Source Rules Text. It's UChar data
|
||||
ds->swapArray16(ds, inBytes+ds->readUInt32(rbbiDH->fRuleSource), ds->readUInt32(rbbiDH->fRuleSourceLen),
|
||||
outBytes+ds->readUInt32(rbbiDH->fRuleSource), status);
|
||||
|
||||
// Table of rule status values. It's all int_32 values
|
||||
ds->swapArray32(ds, inBytes+ds->readUInt32(rbbiDH->fStatusTable), ds->readUInt32(rbbiDH->fStatusTableLen),
|
||||
outBytes+ds->readUInt32(rbbiDH->fStatusTable), status);
|
||||
|
||||
// And, last, the header. All 32 bit values.
|
||||
ds->swapArray32(ds, inBytes, sizeof(RBBIDataHeader), outBytes, status);
|
||||
|
||||
return totalSize;
|
||||
}
|
||||
|
||||
|
||||
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
|
187
extern/icu/source/common/rbbidata.h
vendored
187
extern/icu/source/common/rbbidata.h
vendored
@ -1,187 +0,0 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
*
|
||||
* Copyright (C) 1999-2004, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
*******************************************************************************
|
||||
* file name: rbbidata.h
|
||||
* encoding: US-ASCII
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*
|
||||
* RBBI data formats Includes
|
||||
*
|
||||
* Structs that describes the format of the Binary RBBI data,
|
||||
* as it is stored in ICU's data file.
|
||||
*
|
||||
* RBBIDataWrapper - Instances of this class sit between the
|
||||
* raw data structs and the RulesBasedBreakIterator objects
|
||||
* that are created by applications. The wrapper class
|
||||
* provides reference counting for the underlying data,
|
||||
* and direct pointers to data that would not otherwise
|
||||
* be accessible without ugly pointer arithmetic. The
|
||||
* wrapper does not attempt to provide any higher level
|
||||
* abstractions for the data itself.
|
||||
*
|
||||
* There will be only one instance of RBBIDataWrapper for any
|
||||
* set of RBBI run time data being shared by instances
|
||||
* (clones) of RulesBasedBreakIterator.
|
||||
*/
|
||||
|
||||
#ifndef __RBBIDATA_H__
|
||||
#define __RBBIDATA_H__
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/udata.h"
|
||||
#include "udataswp.h"
|
||||
|
||||
/**
|
||||
* Swap RBBI data. See udataswp.h.
|
||||
* @internal
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_swap(const UDataSwapper *ds,
|
||||
const void *inData, int32_t length, void *outData,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
#ifdef XP_CPLUSPLUS
|
||||
|
||||
#include "unicode/uobject.h"
|
||||
#include "unicode/unistr.h"
|
||||
#include "utrie.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/*
|
||||
* The following structs map exactly onto the raw data from ICU common data file.
|
||||
*/
|
||||
struct RBBIDataHeader {
|
||||
uint32_t fMagic; /* == 0xbla0 */
|
||||
uint32_t fVersion; /* == 1 */
|
||||
uint32_t fLength; /* Total length in bytes of this RBBI Data, */
|
||||
/* including all sections, not just the header. */
|
||||
uint32_t fCatCount; /* Number of character categories. */
|
||||
|
||||
/* */
|
||||
/* Offsets and sizes of each of the subsections within the RBBI data. */
|
||||
/* All offsets are bytes from the start of the RBBIDataHeader. */
|
||||
/* All sizes are in bytes. */
|
||||
/* */
|
||||
uint32_t fFTable; /* forward state transition table. */
|
||||
uint32_t fFTableLen;
|
||||
uint32_t fRTable; /* Offset to the reverse state transition table. */
|
||||
uint32_t fRTableLen;
|
||||
uint32_t fSFTable; /* safe point forward transition table */
|
||||
uint32_t fSFTableLen;
|
||||
uint32_t fSRTable; /* safe point reverse transition table */
|
||||
uint32_t fSRTableLen;
|
||||
uint32_t fTrie; /* Offset to Trie data for character categories */
|
||||
uint32_t fTrieLen;
|
||||
uint32_t fRuleSource; /* Offset to the source for for the break */
|
||||
uint32_t fRuleSourceLen; /* rules. Stored UChar *. */
|
||||
uint32_t fStatusTable; /* Offset to the table of rule status values */
|
||||
uint32_t fStatusTableLen;
|
||||
|
||||
uint32_t fReserved[6]; /* Reserved for expansion */
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct RBBIStateTableRow {
|
||||
int16_t fAccepting; /* Non-zero if this row is for an accepting state. */
|
||||
/* Value 0: not an accepting state. */
|
||||
/* -1: Unconditional Accepting state. */
|
||||
/* positive: Look-ahead match has completed. */
|
||||
/* Actual boundary position happened earlier */
|
||||
/* Value here == fLookAhead in earlier */
|
||||
/* state, at actual boundary pos. */
|
||||
int16_t fLookAhead; /* Non-zero if this row is for a state that */
|
||||
/* corresponds to a '/' in the rule source. */
|
||||
/* Value is the same as the fAccepting */
|
||||
/* value for the rule (which will appear */
|
||||
/* in a different state. */
|
||||
int16_t fTagIdx; /* Non-zero if this row covers a {tagged} position */
|
||||
/* from a rule. Value is the index in the */
|
||||
/* StatusTable of the set of matching */
|
||||
/* tags (rule status values) */
|
||||
int16_t fReserved;
|
||||
uint16_t fNextState[2]; /* Next State, indexed by char category. */
|
||||
/* Array Size is fNumCols from the */
|
||||
/* state table header. */
|
||||
/* CAUTION: see RBBITableBuilder::getTableSize() */
|
||||
/* before changing anything here. */
|
||||
};
|
||||
|
||||
|
||||
struct RBBIStateTable {
|
||||
uint32_t fNumStates; /* Number of states. */
|
||||
uint32_t fRowLen; /* Length of a state table row, in bytes. */
|
||||
uint32_t fFlags; /* Option Flags for this state table */
|
||||
uint32_t fReserved; /* reserved */
|
||||
char fTableData[4]; /* First RBBIStateTableRow begins here. */
|
||||
/* (making it char[] simplifies ugly address */
|
||||
/* arithmetic for indexing variable length rows.) */
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
RBBI_LOOKAHEAD_HARD_BREAK = 1
|
||||
} RBBIStateTableFlags;
|
||||
|
||||
|
||||
/* */
|
||||
/* The reference counting wrapper class */
|
||||
/* */
|
||||
class RBBIDataWrapper : public UMemory {
|
||||
public:
|
||||
RBBIDataWrapper(const RBBIDataHeader *data, UErrorCode &status);
|
||||
RBBIDataWrapper(UDataMemory* udm, UErrorCode &status);
|
||||
~RBBIDataWrapper();
|
||||
|
||||
void init(const RBBIDataHeader *data, UErrorCode &status);
|
||||
RBBIDataWrapper *addReference();
|
||||
void removeReference();
|
||||
UBool operator ==(const RBBIDataWrapper &other) const;
|
||||
int32_t hashCode();
|
||||
const UnicodeString &getRuleSourceString() const;
|
||||
#ifdef RBBI_DEBUG
|
||||
void printData();
|
||||
void printTable(const char *heading, const RBBIStateTable *table);
|
||||
#else
|
||||
#define printData()
|
||||
#define printTable(heading, table)
|
||||
#endif
|
||||
|
||||
/* */
|
||||
/* Pointers to items within the data */
|
||||
/* */
|
||||
const RBBIDataHeader *fHeader;
|
||||
const RBBIStateTable *fForwardTable;
|
||||
const RBBIStateTable *fReverseTable;
|
||||
const RBBIStateTable *fSafeFwdTable;
|
||||
const RBBIStateTable *fSafeRevTable;
|
||||
const UChar *fRuleSource;
|
||||
const int32_t *fRuleStatusTable;
|
||||
|
||||
/* number of int32_t values in the rule status table. Used to sanity check indexing */
|
||||
int32_t fStatusMaxIdx;
|
||||
|
||||
UTrie fTrie;
|
||||
|
||||
private:
|
||||
int32_t fRefCount;
|
||||
UDataMemory *fUDataMem;
|
||||
UnicodeString fRuleString;
|
||||
|
||||
RBBIDataWrapper(const RBBIDataWrapper &other); /* forbid copying of this class */
|
||||
RBBIDataWrapper &operator=(const RBBIDataWrapper &other); /* forbid copying of this class */
|
||||
};
|
||||
|
||||
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif /* C++ */
|
||||
|
||||
#endif
|
350
extern/icu/source/common/rbbinode.cpp
vendored
350
extern/icu/source/common/rbbinode.cpp
vendored
@ -1,350 +0,0 @@
|
||||
/*
|
||||
***************************************************************************
|
||||
* Copyright (C) 2002-2003 International Business Machines Corporation *
|
||||
* and others. All rights reserved. *
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
//
|
||||
// File: rbbinode.cpp
|
||||
//
|
||||
// Implementation of class RBBINode, which represents a node in the
|
||||
// tree generated when parsing the Rules Based Break Iterator rules.
|
||||
//
|
||||
// This "Class" is actually closer to a struct.
|
||||
// Code using it is expected to directly access fields much of the time.
|
||||
//
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_BREAK_ITERATION
|
||||
|
||||
#include "unicode/unistr.h"
|
||||
#include "unicode/uniset.h"
|
||||
#include "unicode/uchar.h"
|
||||
#include "unicode/parsepos.h"
|
||||
#include "uvector.h"
|
||||
|
||||
#include "rbbirb.h"
|
||||
#include "rbbinode.h"
|
||||
|
||||
#include "uassert.h"
|
||||
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
int RBBINode::gLastSerial = 0;
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Constructor. Just set the fields to reasonable default values.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
RBBINode::RBBINode(NodeType t) : UMemory() {
|
||||
fSerialNum = ++gLastSerial;
|
||||
fType = t;
|
||||
fParent = NULL;
|
||||
fLeftChild = NULL;
|
||||
fRightChild = NULL;
|
||||
fInputSet = NULL;
|
||||
fFirstPos = 0;
|
||||
fLastPos = 0;
|
||||
fNullable = FALSE;
|
||||
fLookAheadEnd = FALSE;
|
||||
fVal = 0;
|
||||
fPrecedence = precZero;
|
||||
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
fFirstPosSet = new UVector(status); // TODO - get a real status from somewhere
|
||||
fLastPosSet = new UVector(status);
|
||||
fFollowPos = new UVector(status);
|
||||
if (t==opCat) {fPrecedence = precOpCat;}
|
||||
else if (t==opOr) {fPrecedence = precOpOr;}
|
||||
else if (t==opStart) {fPrecedence = precStart;}
|
||||
else if (t==opLParen) {fPrecedence = precLParen;}
|
||||
|
||||
}
|
||||
|
||||
|
||||
RBBINode::RBBINode(const RBBINode &other) : UMemory(other) {
|
||||
fSerialNum = ++gLastSerial;
|
||||
fType = other.fType;
|
||||
fParent = NULL;
|
||||
fLeftChild = NULL;
|
||||
fRightChild = NULL;
|
||||
fInputSet = other.fInputSet;
|
||||
fPrecedence = other.fPrecedence;
|
||||
fText = other.fText;
|
||||
fFirstPos = other.fFirstPos;
|
||||
fLastPos = other.fLastPos;
|
||||
fNullable = other.fNullable;
|
||||
fVal = other.fVal;
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
fFirstPosSet = new UVector(status); // TODO - get a real status from somewhere
|
||||
fLastPosSet = new UVector(status);
|
||||
fFollowPos = new UVector(status);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Destructor. Deletes both this node AND any child nodes,
|
||||
// except in the case of variable reference nodes. For
|
||||
// these, the l. child points back to the definition, which
|
||||
// is common for all references to the variable, meaning
|
||||
// it can't be deleted here.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
RBBINode::~RBBINode() {
|
||||
// printf("deleting node %8x serial %4d\n", this, this->fSerialNum);
|
||||
delete fInputSet;
|
||||
fInputSet = NULL;
|
||||
|
||||
switch (this->fType) {
|
||||
case varRef:
|
||||
case setRef:
|
||||
// for these node types, multiple instances point to the same "children"
|
||||
// Storage ownership of children handled elsewhere. Don't delete here.
|
||||
break;
|
||||
|
||||
default:
|
||||
delete fLeftChild;
|
||||
fLeftChild = NULL;
|
||||
delete fRightChild;
|
||||
fRightChild = NULL;
|
||||
}
|
||||
|
||||
|
||||
delete fFirstPosSet;
|
||||
delete fLastPosSet;
|
||||
delete fFollowPos;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// cloneTree Make a copy of the subtree rooted at this node.
|
||||
// Discard any variable references encountered along the way,
|
||||
// and replace with copies of the variable's definitions.
|
||||
// Used to replicate the expression underneath variable
|
||||
// references in preparation for generating the DFA tables.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
RBBINode *RBBINode::cloneTree() {
|
||||
RBBINode *n;
|
||||
|
||||
if (fType == RBBINode::varRef) {
|
||||
// If the current node is a variable reference, skip over it
|
||||
// and clone the definition of the variable instead.
|
||||
n = fLeftChild->cloneTree();
|
||||
} else if (fType == RBBINode::uset) {
|
||||
n = this;
|
||||
} else {
|
||||
n = new RBBINode(*this);
|
||||
if (fLeftChild != NULL) {
|
||||
n->fLeftChild = fLeftChild->cloneTree();
|
||||
n->fLeftChild->fParent = n;
|
||||
}
|
||||
if (fRightChild != NULL) {
|
||||
n->fRightChild = fRightChild->cloneTree();
|
||||
n->fRightChild->fParent = n;
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// flattenVariables Walk a parse tree, replacing any variable
|
||||
// references with a copy of the variable's definition.
|
||||
// Aside from variables, the tree is not changed.
|
||||
//
|
||||
// Return the root of the tree. If the root was not a variable
|
||||
// reference, it remains unchanged - the root we started with
|
||||
// is the root we return. If, however, the root was a variable
|
||||
// reference, the root of the newly cloned replacement tree will
|
||||
// be returned, and the original tree deleted.
|
||||
//
|
||||
// This function works by recursively walking the tree
|
||||
// without doing anything until a variable reference is
|
||||
// found, then calling cloneTree() at that point. Any
|
||||
// nested references are handled by cloneTree(), not here.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
RBBINode *RBBINode::flattenVariables() {
|
||||
if (fType == varRef) {
|
||||
RBBINode *retNode = fLeftChild->cloneTree();
|
||||
delete this;
|
||||
return retNode;
|
||||
}
|
||||
|
||||
if (fLeftChild != NULL) {
|
||||
fLeftChild = fLeftChild->flattenVariables();
|
||||
fLeftChild->fParent = this;
|
||||
}
|
||||
if (fRightChild != NULL) {
|
||||
fRightChild = fRightChild->flattenVariables();
|
||||
fRightChild->fParent = this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// flattenSets Walk the parse tree, replacing any nodes of type setRef
|
||||
// with a copy of the expression tree for the set. A set's
|
||||
// equivalent expression tree is precomputed and saved as
|
||||
// the left child of the uset node.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
void RBBINode::flattenSets() {
|
||||
U_ASSERT(fType != setRef);
|
||||
|
||||
if (fLeftChild != NULL) {
|
||||
if (fLeftChild->fType==setRef) {
|
||||
RBBINode *setRefNode = fLeftChild;
|
||||
RBBINode *usetNode = setRefNode->fLeftChild;
|
||||
RBBINode *replTree = usetNode->fLeftChild;
|
||||
fLeftChild = replTree->cloneTree();
|
||||
fLeftChild->fParent = this;
|
||||
delete setRefNode;
|
||||
} else {
|
||||
fLeftChild->flattenSets();
|
||||
}
|
||||
}
|
||||
|
||||
if (fRightChild != NULL) {
|
||||
if (fRightChild->fType==setRef) {
|
||||
RBBINode *setRefNode = fRightChild;
|
||||
RBBINode *usetNode = setRefNode->fLeftChild;
|
||||
RBBINode *replTree = usetNode->fLeftChild;
|
||||
fRightChild = replTree->cloneTree();
|
||||
fRightChild->fParent = this;
|
||||
delete setRefNode;
|
||||
} else {
|
||||
fRightChild->flattenSets();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// findNodes() Locate all the nodes of the specified type, starting
|
||||
// at the specified root.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
void RBBINode::findNodes(UVector *dest, RBBINode::NodeType kind, UErrorCode &status) {
|
||||
/* test for buffer overflows */
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
if (fType == kind) {
|
||||
dest->addElement(this, status);
|
||||
}
|
||||
if (fLeftChild != NULL) {
|
||||
fLeftChild->findNodes(dest, kind, status);
|
||||
}
|
||||
if (fRightChild != NULL) {
|
||||
fRightChild->findNodes(dest, kind, status);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// print. Print out a single node, for debugging.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
#ifdef RBBI_DEBUG
|
||||
void RBBINode::printNode() {
|
||||
static const char * const nodeTypeNames[] = {
|
||||
"setRef",
|
||||
"uset",
|
||||
"varRef",
|
||||
"leafChar",
|
||||
"lookAhead",
|
||||
"tag",
|
||||
"endMark",
|
||||
"opStart",
|
||||
"opCat",
|
||||
"opOr",
|
||||
"opStar",
|
||||
"opPlus",
|
||||
"opQuestion",
|
||||
"opBreak",
|
||||
"opReverse",
|
||||
"opLParen"
|
||||
};
|
||||
|
||||
if (this==NULL) {
|
||||
RBBIDebugPrintf("%10p", (void *)this);
|
||||
} else {
|
||||
RBBIDebugPrintf("%10p %12s %10p %10p %10p %4d %6d %d ",
|
||||
(void *)this, nodeTypeNames[fType], (void *)fParent, (void *)fLeftChild, (void *)fRightChild,
|
||||
fSerialNum, fFirstPos, fVal);
|
||||
if (fType == varRef) {
|
||||
RBBI_DEBUG_printUnicodeString(fText);
|
||||
}
|
||||
}
|
||||
RBBIDebugPrintf("\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RBBI_DEBUG
|
||||
U_CFUNC void RBBI_DEBUG_printUnicodeString(const UnicodeString &s, int minWidth)
|
||||
{
|
||||
int i;
|
||||
for (i=0; i<s.length(); i++) {
|
||||
RBBIDebugPrintf("%c", s.charAt(i));
|
||||
// putc(s.charAt(i), stdout);
|
||||
}
|
||||
for (i=s.length(); i<minWidth; i++) {
|
||||
RBBIDebugPrintf(" ");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// print. Print out the tree of nodes rooted at "this"
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
#ifdef RBBI_DEBUG
|
||||
void RBBINode::printTree(UBool printHeading) {
|
||||
if (printHeading) {
|
||||
RBBIDebugPrintf( "-------------------------------------------------------------------\n"
|
||||
" Address type Parent LeftChild RightChild serial position value\n"
|
||||
);
|
||||
}
|
||||
this->printNode();
|
||||
if (this != NULL) {
|
||||
// Only dump the definition under a variable reference if asked to.
|
||||
// Unconditinally dump children of all other node types.
|
||||
if (fType != varRef) {
|
||||
if (fLeftChild != NULL) {
|
||||
fLeftChild->printTree(FALSE);
|
||||
}
|
||||
|
||||
if (fRightChild != NULL) {
|
||||
fRightChild->printTree(FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
|
123
extern/icu/source/common/rbbinode.h
vendored
123
extern/icu/source/common/rbbinode.h
vendored
@ -1,123 +0,0 @@
|
||||
/********************************************************************
|
||||
* COPYRIGHT:
|
||||
* Copyright (c) 2001-2003, International Business Machines Corporation and
|
||||
* others. All Rights Reserved.
|
||||
********************************************************************/
|
||||
|
||||
#ifndef RBBINODE_H
|
||||
#define RBBINODE_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/uobject.h"
|
||||
|
||||
//
|
||||
// class RBBINode
|
||||
//
|
||||
// Represents a node in the parse tree generated when reading
|
||||
// a rule file.
|
||||
//
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
class UnicodeSet;
|
||||
class UVector;
|
||||
|
||||
class RBBINode : public UMemory {
|
||||
public:
|
||||
enum NodeType {
|
||||
setRef,
|
||||
uset,
|
||||
varRef,
|
||||
leafChar,
|
||||
lookAhead,
|
||||
tag,
|
||||
endMark,
|
||||
opStart,
|
||||
opCat,
|
||||
opOr,
|
||||
opStar,
|
||||
opPlus,
|
||||
opQuestion,
|
||||
opBreak,
|
||||
opReverse,
|
||||
opLParen
|
||||
};
|
||||
|
||||
enum OpPrecedence {
|
||||
precZero,
|
||||
precStart,
|
||||
precLParen,
|
||||
precOpOr,
|
||||
precOpCat
|
||||
};
|
||||
|
||||
NodeType fType;
|
||||
RBBINode *fParent;
|
||||
RBBINode *fLeftChild;
|
||||
RBBINode *fRightChild;
|
||||
UnicodeSet *fInputSet; // For uset nodes only.
|
||||
OpPrecedence fPrecedence; // For binary ops only.
|
||||
|
||||
UnicodeString fText; // Text corresponding to this node.
|
||||
// May be lazily evaluated when (if) needed
|
||||
// for some node types.
|
||||
int fFirstPos; // Position in the rule source string of the
|
||||
// first text associated with the node.
|
||||
// If there's a left child, this will be the same
|
||||
// as that child's left pos.
|
||||
int fLastPos; // Last position in the rule source string
|
||||
// of any text associated with this node.
|
||||
// If there's a right child, this will be the same
|
||||
// as that child's last postion.
|
||||
|
||||
UBool fNullable; // See Aho.
|
||||
int32_t fVal; // For leafChar nodes, the value.
|
||||
// Values are the character category,
|
||||
// corresponds to columns in the final
|
||||
// state transition table.
|
||||
|
||||
UBool fLookAheadEnd; // For endMark nodes, set TRUE if
|
||||
// marking the end of a look-ahead rule.
|
||||
|
||||
UVector *fFirstPosSet;
|
||||
UVector *fLastPosSet; // TODO: rename fFirstPos & fLastPos to avoid confusion.
|
||||
UVector *fFollowPos;
|
||||
|
||||
|
||||
RBBINode(NodeType t);
|
||||
RBBINode(const RBBINode &other);
|
||||
~RBBINode();
|
||||
|
||||
RBBINode *cloneTree();
|
||||
RBBINode *flattenVariables();
|
||||
void flattenSets();
|
||||
void findNodes(UVector *dest, RBBINode::NodeType kind, UErrorCode &status);
|
||||
|
||||
#ifdef RBBI_DEBUG
|
||||
void printNode();
|
||||
void printTree(UBool withHeading);
|
||||
#else
|
||||
// Do-nothing inline functions for non-debug builds. Can't make empty defines for member
|
||||
// functions - they won't compile at the call sites.
|
||||
int fakeField;
|
||||
#define printNode() fakeField=0;
|
||||
#define printTree(withHeading) fakeField=0;
|
||||
#endif
|
||||
|
||||
private:
|
||||
RBBINode &operator = (const RBBINode &other); // No defs.
|
||||
UBool operator == (const RBBINode &other); // Private, so these functions won't accidently be used.
|
||||
|
||||
int fSerialNum; // Debugging aids.
|
||||
static int gLastSerial;
|
||||
};
|
||||
|
||||
#ifdef RBBI_DEBUG
|
||||
U_CFUNC void
|
||||
RBBI_DEBUG_printUnicodeString(const UnicodeString &s, int minWidth=0);
|
||||
#endif
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
|
309
extern/icu/source/common/rbbirb.cpp
vendored
309
extern/icu/source/common/rbbirb.cpp
vendored
@ -1,309 +0,0 @@
|
||||
//
|
||||
// file: rbbirb.cpp
|
||||
//
|
||||
// Copyright (C) 2002-2004, International Business Machines Corporation and others.
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// This file contains the RBBIRuleBuilder class implementation. This is the main class for
|
||||
// building (compiling) break rules into the tables required by the runtime
|
||||
// RBBI engine.
|
||||
//
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_BREAK_ITERATION
|
||||
|
||||
#include "unicode/brkiter.h"
|
||||
#include "unicode/rbbi.h"
|
||||
#include "unicode/ubrk.h"
|
||||
#include "unicode/unistr.h"
|
||||
#include "unicode/uniset.h"
|
||||
#include "unicode/uchar.h"
|
||||
#include "unicode/uchriter.h"
|
||||
#include "unicode/parsepos.h"
|
||||
#include "unicode/parseerr.h"
|
||||
#include "cmemory.h"
|
||||
#include "cstring.h"
|
||||
|
||||
#include "rbbirb.h"
|
||||
#include "rbbinode.h"
|
||||
|
||||
#include "rbbiscan.h"
|
||||
#include "rbbisetb.h"
|
||||
#include "rbbitblb.h"
|
||||
#include "rbbidata.h"
|
||||
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
//
|
||||
// Constructor.
|
||||
//
|
||||
//----------------------------------------------------------------------------------------
|
||||
RBBIRuleBuilder::RBBIRuleBuilder(const UnicodeString &rules,
|
||||
UParseError &parseErr,
|
||||
UErrorCode &status)
|
||||
: fRules(rules)
|
||||
{
|
||||
fStatus = &status; // status is checked below
|
||||
fParseError = &parseErr;
|
||||
fDebugEnv = NULL;
|
||||
#ifdef RBBI_DEBUG
|
||||
fDebugEnv = getenv("U_RBBIDEBUG");
|
||||
#endif
|
||||
|
||||
|
||||
fForwardTree = NULL;
|
||||
fReverseTree = NULL;
|
||||
fSafeFwdTree = NULL;
|
||||
fSafeRevTree = NULL;
|
||||
fDefaultTree = &fForwardTree;
|
||||
fForwardTables = NULL;
|
||||
fReverseTables = NULL;
|
||||
fSafeFwdTables = NULL;
|
||||
fSafeRevTables = NULL;
|
||||
fRuleStatusVals = NULL;
|
||||
fChainRules = FALSE;
|
||||
fLBCMNoChain = FALSE;
|
||||
fLookAheadHardBreak = FALSE;
|
||||
fUSetNodes = NULL;
|
||||
fRuleStatusVals = NULL;
|
||||
fScanner = NULL;
|
||||
fSetBuilder = NULL;
|
||||
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
|
||||
fUSetNodes = new UVector(status); // bcos status gets overwritten here
|
||||
fRuleStatusVals = new UVector(status);
|
||||
fScanner = new RBBIRuleScanner(this);
|
||||
fSetBuilder = new RBBISetBuilder(this);
|
||||
if (U_FAILURE(status)) {
|
||||
return;
|
||||
}
|
||||
if(fSetBuilder == 0 || fScanner == 0 || fUSetNodes == 0 || fRuleStatusVals == 0) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
//
|
||||
// Destructor
|
||||
//
|
||||
//----------------------------------------------------------------------------------------
|
||||
RBBIRuleBuilder::~RBBIRuleBuilder() {
|
||||
|
||||
int i;
|
||||
for (i=0; ; i++) {
|
||||
RBBINode *n = (RBBINode *)fUSetNodes->elementAt(i);
|
||||
if (n==NULL) {
|
||||
break;
|
||||
}
|
||||
delete n;
|
||||
}
|
||||
|
||||
delete fUSetNodes;
|
||||
delete fSetBuilder;
|
||||
delete fForwardTables;
|
||||
delete fReverseTables;
|
||||
delete fSafeFwdTables;
|
||||
delete fSafeRevTables;
|
||||
|
||||
delete fForwardTree;
|
||||
delete fReverseTree;
|
||||
delete fSafeFwdTree;
|
||||
delete fSafeRevTree;
|
||||
delete fScanner;
|
||||
delete fRuleStatusVals;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
//
|
||||
// flattenData() - Collect up the compiled RBBI rule data and put it into
|
||||
// the format for saving in ICU data files,
|
||||
// which is also the format needed by the RBBI runtime engine.
|
||||
//
|
||||
//----------------------------------------------------------------------------------------
|
||||
static int32_t align8(int32_t i) {return (i+7) & 0xfffffff8;}
|
||||
|
||||
RBBIDataHeader *RBBIRuleBuilder::flattenData() {
|
||||
int32_t i;
|
||||
|
||||
if (U_FAILURE(*fStatus)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Remove comments and whitespace from the rules to make it smaller.
|
||||
UnicodeString strippedRules(RBBIRuleScanner::stripRules(fRules));
|
||||
|
||||
// Calculate the size of each section in the data.
|
||||
// Sizes here are padded up to a multiple of 8 for better memory alignment.
|
||||
// Sections sizes actually stored in the header are for the actual data
|
||||
// without the padding.
|
||||
//
|
||||
int32_t headerSize = align8(sizeof(RBBIDataHeader));
|
||||
int32_t forwardTableSize = align8(fForwardTables->getTableSize());
|
||||
int32_t reverseTableSize = align8(fReverseTables->getTableSize());
|
||||
int32_t safeFwdTableSize = align8(fSafeFwdTables->getTableSize());
|
||||
int32_t safeRevTableSize = align8(fSafeRevTables->getTableSize());
|
||||
int32_t trieSize = align8(fSetBuilder->getTrieSize());
|
||||
int32_t statusTableSize = align8(fRuleStatusVals->size() * sizeof(int32_t));
|
||||
int32_t rulesSize = align8((strippedRules.length()+1) * sizeof(UChar));
|
||||
|
||||
int32_t totalSize = headerSize + forwardTableSize + reverseTableSize
|
||||
+ safeFwdTableSize + safeRevTableSize
|
||||
+ statusTableSize + trieSize + rulesSize;
|
||||
|
||||
RBBIDataHeader *data = (RBBIDataHeader *)uprv_malloc(totalSize);
|
||||
if (data == NULL) {
|
||||
*fStatus = U_MEMORY_ALLOCATION_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
uprv_memset(data, 0, totalSize);
|
||||
|
||||
|
||||
data->fMagic = 0xb1a0;
|
||||
data->fVersion = 1;
|
||||
data->fLength = totalSize;
|
||||
data->fCatCount = fSetBuilder->getNumCharCategories();
|
||||
|
||||
data->fFTable = headerSize;
|
||||
data->fFTableLen = forwardTableSize;
|
||||
data->fRTable = data->fFTable + forwardTableSize;
|
||||
data->fRTableLen = reverseTableSize;
|
||||
data->fSFTable = data->fRTable + reverseTableSize;
|
||||
data->fSFTableLen = safeFwdTableSize;
|
||||
data->fSRTable = data->fSFTable + safeFwdTableSize;
|
||||
data->fSRTableLen = safeRevTableSize;
|
||||
|
||||
data->fTrie = data->fSRTable + safeRevTableSize;
|
||||
data->fTrieLen = fSetBuilder->getTrieSize();
|
||||
data->fStatusTable = data->fTrie + trieSize;
|
||||
data->fStatusTableLen= statusTableSize;
|
||||
data->fRuleSource = data->fStatusTable + statusTableSize;
|
||||
data->fRuleSourceLen = strippedRules.length() * sizeof(UChar);
|
||||
|
||||
uprv_memset(data->fReserved, 0, sizeof(data->fReserved));
|
||||
|
||||
fForwardTables->exportTable((uint8_t *)data + data->fFTable);
|
||||
fReverseTables->exportTable((uint8_t *)data + data->fRTable);
|
||||
fSafeFwdTables->exportTable((uint8_t *)data + data->fSFTable);
|
||||
fSafeRevTables->exportTable((uint8_t *)data + data->fSRTable);
|
||||
fSetBuilder->serializeTrie ((uint8_t *)data + data->fTrie);
|
||||
|
||||
int32_t *ruleStatusTable = (int32_t *)((uint8_t *)data + data->fStatusTable);
|
||||
for (i=0; i<fRuleStatusVals->size(); i++) {
|
||||
ruleStatusTable[i] = fRuleStatusVals->elementAti(i);
|
||||
}
|
||||
|
||||
strippedRules.extract((UChar *)((uint8_t *)data+data->fRuleSource), rulesSize/2+1, *fStatus);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
//
|
||||
// createRuleBasedBreakIterator construct from source rules that are passed in
|
||||
// in a UnicodeString
|
||||
//
|
||||
//----------------------------------------------------------------------------------------
|
||||
BreakIterator *
|
||||
RBBIRuleBuilder::createRuleBasedBreakIterator( const UnicodeString &rules,
|
||||
UParseError &parseError,
|
||||
UErrorCode &status)
|
||||
{
|
||||
// status checked below
|
||||
|
||||
//
|
||||
// Read the input rules, generate a parse tree, symbol table,
|
||||
// and list of all Unicode Sets referenced by the rules.
|
||||
//
|
||||
RBBIRuleBuilder builder(rules, parseError, status);
|
||||
builder.fScanner->parse();
|
||||
if (U_FAILURE(status)) { // status checked here bcos build below doesn't
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//
|
||||
// UnicodeSet processing.
|
||||
// Munge the Unicode Sets to create a set of character categories.
|
||||
// Generate the mapping tables (TRIE) from input 32-bit characters to
|
||||
// the character categories.
|
||||
//
|
||||
builder.fSetBuilder->build();
|
||||
|
||||
|
||||
//
|
||||
// Generate the DFA state transition table.
|
||||
//
|
||||
builder.fForwardTables = new RBBITableBuilder(&builder, &builder.fForwardTree);
|
||||
builder.fReverseTables = new RBBITableBuilder(&builder, &builder.fReverseTree);
|
||||
builder.fSafeFwdTables = new RBBITableBuilder(&builder, &builder.fSafeFwdTree);
|
||||
builder.fSafeRevTables = new RBBITableBuilder(&builder, &builder.fSafeRevTree);
|
||||
if (U_SUCCESS(status)
|
||||
&& (builder.fForwardTables == NULL || builder.fReverseTables == NULL ||
|
||||
builder.fSafeFwdTables == NULL || builder.fSafeRevTables == NULL))
|
||||
{
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
builder.fForwardTables->build();
|
||||
builder.fReverseTables->build();
|
||||
builder.fSafeFwdTables->build();
|
||||
builder.fSafeRevTables->build();
|
||||
if (U_FAILURE(status)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef RBBI_DEBUG
|
||||
if (builder.fDebugEnv && uprv_strstr(builder.fDebugEnv, "states")) {
|
||||
builder.fForwardTables->printRuleStatusTable();
|
||||
}
|
||||
#endif
|
||||
|
||||
//
|
||||
// Package up the compiled data into a memory image
|
||||
// in the run-time format.
|
||||
//
|
||||
RBBIDataHeader *data = builder.flattenData(); // returns NULL if error
|
||||
|
||||
|
||||
//
|
||||
// Clean up the compiler related stuff
|
||||
//
|
||||
|
||||
|
||||
//
|
||||
// Create a break iterator from the compiled rules.
|
||||
// (Identical to creation from stored pre-compiled rules)
|
||||
//
|
||||
// status is checked after init in construction.
|
||||
RuleBasedBreakIterator *This = new RuleBasedBreakIterator(data, status);
|
||||
if (U_FAILURE(status)) {
|
||||
delete This;
|
||||
This = NULL;
|
||||
}
|
||||
else if(This == NULL) { // test for NULL
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
}
|
||||
return This;
|
||||
}
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
|
209
extern/icu/source/common/rbbirb.h
vendored
209
extern/icu/source/common/rbbirb.h
vendored
@ -1,209 +0,0 @@
|
||||
//
|
||||
// rbbirb.h
|
||||
//
|
||||
// Copyright (C) 2002-2004, International Business Machines Corporation and others.
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// This file contains declarations for several classes from the
|
||||
// Rule Based Break Iterator rule builder.
|
||||
//
|
||||
|
||||
|
||||
#ifndef RBBIRB_H
|
||||
#define RBBIRB_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/uobject.h"
|
||||
#include "unicode/rbbi.h"
|
||||
#include "unicode/uniset.h"
|
||||
#include "unicode/parseerr.h"
|
||||
#include "uhash.h"
|
||||
#include "uvector.h"
|
||||
#include "unicode/symtable.h"// For UnicodeSet parsing, is the interface that
|
||||
// looks up references to $variables within a set.
|
||||
|
||||
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
class RBBIRuleScanner;
|
||||
struct RBBIRuleTableEl;
|
||||
class RBBISetBuilder;
|
||||
class RBBINode;
|
||||
class RBBITableBuilder;
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
//
|
||||
// RBBISymbolTable. Implements SymbolTable interface that is used by the
|
||||
// UnicodeSet parser to resolve references to $variables.
|
||||
//
|
||||
//--------------------------------------------------------------------------------
|
||||
class RBBISymbolTableEntry : public UMemory { // The symbol table hash table contains one
|
||||
public: // of these structs for each entry.
|
||||
RBBISymbolTableEntry();
|
||||
UnicodeString key;
|
||||
RBBINode *val;
|
||||
~RBBISymbolTableEntry();
|
||||
|
||||
private:
|
||||
RBBISymbolTableEntry(const RBBISymbolTableEntry &other); // forbid copying of this class
|
||||
RBBISymbolTableEntry &operator=(const RBBISymbolTableEntry &other); // forbid copying of this class
|
||||
};
|
||||
|
||||
|
||||
class RBBISymbolTable : public UMemory, public SymbolTable {
|
||||
private:
|
||||
const UnicodeString &fRules;
|
||||
UHashtable *fHashTable;
|
||||
RBBIRuleScanner *fRuleScanner;
|
||||
|
||||
// These next two fields are part of the mechanism for passing references to
|
||||
// already-constructed UnicodeSets back to the UnicodeSet constructor
|
||||
// when the pattern includes $variable references.
|
||||
const UnicodeString ffffString; // = "/uffff"
|
||||
UnicodeSet *fCachedSetLookup;
|
||||
|
||||
public:
|
||||
// API inherited from class SymbolTable
|
||||
virtual const UnicodeString* lookup(const UnicodeString& s) const;
|
||||
virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const;
|
||||
virtual UnicodeString parseReference(const UnicodeString& text,
|
||||
ParsePosition& pos, int32_t limit) const;
|
||||
|
||||
// Additional Functions
|
||||
RBBISymbolTable(RBBIRuleScanner *, const UnicodeString &fRules, UErrorCode &status);
|
||||
virtual ~RBBISymbolTable();
|
||||
|
||||
virtual RBBINode *lookupNode(const UnicodeString &key) const;
|
||||
virtual void addEntry (const UnicodeString &key, RBBINode *val, UErrorCode &err);
|
||||
|
||||
#ifdef RBBI_DEBUG
|
||||
virtual void rbbiSymtablePrint() const;
|
||||
#else
|
||||
// A do-nothing inline function for non-debug builds. Member funcs can't be empty
|
||||
// or the call sites won't compile.
|
||||
int fFakeField;
|
||||
#define rbbiSymtablePrint() fFakeField=0;
|
||||
#endif
|
||||
|
||||
private:
|
||||
RBBISymbolTable(const RBBISymbolTable &other); // forbid copying of this class
|
||||
RBBISymbolTable &operator=(const RBBISymbolTable &other); // forbid copying of this class
|
||||
};
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
//
|
||||
// class RBBIRuleBuilder The top-level class handling RBBI rule compiling.
|
||||
//
|
||||
//--------------------------------------------------------------------------------
|
||||
class RBBIRuleBuilder : public UMemory {
|
||||
public:
|
||||
|
||||
// Create a rule based break iterator from a set of rules.
|
||||
// This function is the main entry point into the rule builder. The
|
||||
// public ICU API for creating RBBIs uses this function to do the actual work.
|
||||
//
|
||||
static BreakIterator * createRuleBasedBreakIterator( const UnicodeString &rules,
|
||||
UParseError &parseError,
|
||||
UErrorCode &status);
|
||||
|
||||
public:
|
||||
// The "public" functions and data members that appear below are accessed
|
||||
// (and shared) by the various parts that make up the rule builder. They
|
||||
// are NOT intended to be accessed by anything outside of the
|
||||
// rule builder implementation.
|
||||
RBBIRuleBuilder(const UnicodeString &rules,
|
||||
UParseError &parseErr,
|
||||
UErrorCode &status
|
||||
);
|
||||
|
||||
virtual ~RBBIRuleBuilder();
|
||||
char *fDebugEnv; // controls debug trace output
|
||||
UErrorCode *fStatus; // Error reporting. Keeping status
|
||||
UParseError *fParseError; // here avoids passing it everywhere.
|
||||
const UnicodeString &fRules; // The rule string that we are compiling
|
||||
|
||||
RBBIRuleScanner *fScanner; // The scanner.
|
||||
RBBINode *fForwardTree; // The parse trees, generated by the scanner,
|
||||
RBBINode *fReverseTree; // then manipulated by subsequent steps.
|
||||
RBBINode *fSafeFwdTree;
|
||||
RBBINode *fSafeRevTree;
|
||||
|
||||
RBBINode **fDefaultTree; // For rules not qualified with a !
|
||||
// the tree to which they belong to.
|
||||
|
||||
UBool fChainRules; // True for chained Unicode TR style rules.
|
||||
// False for traditional regexp rules.
|
||||
|
||||
UBool fLBCMNoChain; // True: suppress chaining of rules on
|
||||
// chars with LineBreak property == CM.
|
||||
|
||||
UBool fLookAheadHardBreak; // True: Look ahead matches cause an
|
||||
// immediate break, no continuing for the
|
||||
// longest match.
|
||||
|
||||
RBBISetBuilder *fSetBuilder; // Set and Character Category builder.
|
||||
UVector *fUSetNodes; // Vector of all uset nodes.
|
||||
|
||||
RBBITableBuilder *fForwardTables; // State transition tables
|
||||
RBBITableBuilder *fReverseTables;
|
||||
RBBITableBuilder *fSafeFwdTables;
|
||||
RBBITableBuilder *fSafeRevTables;
|
||||
|
||||
UVector *fRuleStatusVals; // The values that can be returned
|
||||
// from getRuleStatus().
|
||||
|
||||
RBBIDataHeader *flattenData(); // Create the flattened (runtime format)
|
||||
// data tables..
|
||||
private:
|
||||
RBBIRuleBuilder(const RBBIRuleBuilder &other); // forbid copying of this class
|
||||
RBBIRuleBuilder &operator=(const RBBIRuleBuilder &other); // forbid copying of this class
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// RBBISetTableEl is an entry in the hash table of UnicodeSets that have
|
||||
// been encountered. The val Node will be of nodetype uset
|
||||
// and contain pointers to the actual UnicodeSets.
|
||||
// The Key is the source string for initializing the set.
|
||||
//
|
||||
// The hash table is used to avoid creating duplicate
|
||||
// unnamed (not $var references) UnicodeSets.
|
||||
//
|
||||
// Memory Management:
|
||||
// The Hash Table owns these RBBISetTableEl structs and
|
||||
// the key strings. It does NOT own the val nodes.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
struct RBBISetTableEl {
|
||||
UnicodeString *key;
|
||||
RBBINode *val;
|
||||
};
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// RBBIDebugPrintf Printf equivalent, for debugging output.
|
||||
// Conditional compilation of the implementation lets us
|
||||
// get rid of the stdio dependency in environments where it
|
||||
// is unavailable.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
#ifdef RBBI_DEBUG
|
||||
#include <stdio.h>
|
||||
#define RBBIDebugPrintf printf
|
||||
#else
|
||||
inline void RBBIDebugPrintf(...) {}
|
||||
#endif
|
||||
|
||||
U_NAMESPACE_END
|
||||
#endif
|
||||
|
||||
|
||||
|
273
extern/icu/source/common/rbbirpt.h
vendored
273
extern/icu/source/common/rbbirpt.h
vendored
@ -1,273 +0,0 @@
|
||||
//---------------------------------------------------------------------------------
|
||||
//
|
||||
// Generated Header File. Do not edit by hand.
|
||||
// This file contains the state table for the ICU Rule Based Break Iterator
|
||||
// rule parser.
|
||||
// It is generated by the Perl script "rbbicst.pl" from
|
||||
// the rule parser state definitions file "rbbirpt.txt".
|
||||
//
|
||||
// Copyright (C) 2002-2003 International Business Machines Corporation
|
||||
// and others. All rights reserved.
|
||||
//
|
||||
//---------------------------------------------------------------------------------
|
||||
#ifndef RBBIRPT_H
|
||||
#define RBBIRPT_H
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
//
|
||||
// Character classes for RBBI rule scanning.
|
||||
//
|
||||
static const uint8_t kRuleSet_digit_char = 128;
|
||||
static const uint8_t kRuleSet_white_space = 129;
|
||||
static const uint8_t kRuleSet_rule_char = 130;
|
||||
static const uint8_t kRuleSet_name_start_char = 131;
|
||||
static const uint8_t kRuleSet_name_char = 132;
|
||||
|
||||
|
||||
enum RBBI_RuleParseAction {
|
||||
doExprOrOperator,
|
||||
doOptionEnd,
|
||||
doRuleErrorAssignExpr,
|
||||
doTagValue,
|
||||
doEndAssign,
|
||||
doRuleError,
|
||||
doVariableNameExpectedErr,
|
||||
doRuleChar,
|
||||
doLParen,
|
||||
doSlash,
|
||||
doStartTagValue,
|
||||
doDotAny,
|
||||
doExprFinished,
|
||||
doScanUnicodeSet,
|
||||
doExprRParen,
|
||||
doStartVariableName,
|
||||
doTagExpectedError,
|
||||
doTagDigit,
|
||||
doUnaryOpStar,
|
||||
doEndVariableName,
|
||||
doNOP,
|
||||
doUnaryOpQuestion,
|
||||
doExit,
|
||||
doStartAssign,
|
||||
doEndOfRule,
|
||||
doUnaryOpPlus,
|
||||
doExprStart,
|
||||
doOptionStart,
|
||||
doExprCatOperator,
|
||||
doReverseDir,
|
||||
doCheckVarDef,
|
||||
rbbiLastAction};
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
//
|
||||
// RBBIRuleTableEl represents the structure of a row in the transition table
|
||||
// for the rule parser state machine.
|
||||
//-------------------------------------------------------------------------------
|
||||
struct RBBIRuleTableEl {
|
||||
RBBI_RuleParseAction fAction;
|
||||
uint8_t fCharClass; // 0-127: an individual ASCII character
|
||||
// 128-255: character class index
|
||||
uint8_t fNextState; // 0-250: normal next-stat numbers
|
||||
// 255: pop next-state from stack.
|
||||
uint8_t fPushState;
|
||||
UBool fNextChar;
|
||||
};
|
||||
|
||||
static const struct RBBIRuleTableEl gRuleParseStateTable[] = {
|
||||
{doNOP, 0, 0, 0, TRUE}
|
||||
, {doExprStart, 254, 21, 8, FALSE} // 1 start
|
||||
, {doNOP, 129, 1,0, TRUE} // 2
|
||||
, {doExprStart, 36 /* $ */, 80, 90, FALSE} // 3
|
||||
, {doNOP, 33 /* ! */, 11,0, TRUE} // 4
|
||||
, {doNOP, 59 /* ; */, 1,0, TRUE} // 5
|
||||
, {doNOP, 252, 0,0, FALSE} // 6
|
||||
, {doExprStart, 255, 21, 8, FALSE} // 7
|
||||
, {doEndOfRule, 59 /* ; */, 1,0, TRUE} // 8 break-rule-end
|
||||
, {doNOP, 129, 8,0, TRUE} // 9
|
||||
, {doRuleError, 255, 95,0, FALSE} // 10
|
||||
, {doNOP, 33 /* ! */, 13,0, TRUE} // 11 rev-option
|
||||
, {doReverseDir, 255, 20, 8, FALSE} // 12
|
||||
, {doOptionStart, 131, 15,0, TRUE} // 13 option-scan1
|
||||
, {doRuleError, 255, 95,0, FALSE} // 14
|
||||
, {doNOP, 132, 15,0, TRUE} // 15 option-scan2
|
||||
, {doOptionEnd, 255, 17,0, FALSE} // 16
|
||||
, {doNOP, 59 /* ; */, 1,0, TRUE} // 17 option-scan3
|
||||
, {doNOP, 129, 17,0, TRUE} // 18
|
||||
, {doRuleError, 255, 95,0, FALSE} // 19
|
||||
, {doExprStart, 255, 21, 8, FALSE} // 20 reverse-rule
|
||||
, {doRuleChar, 254, 30,0, TRUE} // 21 term
|
||||
, {doNOP, 129, 21,0, TRUE} // 22
|
||||
, {doRuleChar, 130, 30,0, TRUE} // 23
|
||||
, {doNOP, 91 /* [ */, 86, 30, FALSE} // 24
|
||||
, {doLParen, 40 /* ( */, 21, 30, TRUE} // 25
|
||||
, {doNOP, 36 /* $ */, 80, 29, FALSE} // 26
|
||||
, {doDotAny, 46 /* . */, 30,0, TRUE} // 27
|
||||
, {doRuleError, 255, 95,0, FALSE} // 28
|
||||
, {doCheckVarDef, 255, 30,0, FALSE} // 29 term-var-ref
|
||||
, {doNOP, 129, 30,0, TRUE} // 30 expr-mod
|
||||
, {doUnaryOpStar, 42 /* * */, 35,0, TRUE} // 31
|
||||
, {doUnaryOpPlus, 43 /* + */, 35,0, TRUE} // 32
|
||||
, {doUnaryOpQuestion, 63 /* ? */, 35,0, TRUE} // 33
|
||||
, {doNOP, 255, 35,0, FALSE} // 34
|
||||
, {doExprCatOperator, 254, 21,0, FALSE} // 35 expr-cont
|
||||
, {doNOP, 129, 35,0, TRUE} // 36
|
||||
, {doExprCatOperator, 130, 21,0, FALSE} // 37
|
||||
, {doExprCatOperator, 91 /* [ */, 21,0, FALSE} // 38
|
||||
, {doExprCatOperator, 40 /* ( */, 21,0, FALSE} // 39
|
||||
, {doExprCatOperator, 36 /* $ */, 21,0, FALSE} // 40
|
||||
, {doExprCatOperator, 46 /* . */, 21,0, FALSE} // 41
|
||||
, {doExprCatOperator, 47 /* / */, 47,0, FALSE} // 42
|
||||
, {doExprCatOperator, 123 /* { */, 59,0, TRUE} // 43
|
||||
, {doExprOrOperator, 124 /* | */, 21,0, TRUE} // 44
|
||||
, {doExprRParen, 41 /* ) */, 255,0, TRUE} // 45
|
||||
, {doExprFinished, 255, 255,0, FALSE} // 46
|
||||
, {doSlash, 47 /* / */, 49,0, TRUE} // 47 look-ahead
|
||||
, {doNOP, 255, 95,0, FALSE} // 48
|
||||
, {doExprCatOperator, 254, 21,0, FALSE} // 49 expr-cont-no-slash
|
||||
, {doNOP, 129, 35,0, TRUE} // 50
|
||||
, {doExprCatOperator, 130, 21,0, FALSE} // 51
|
||||
, {doExprCatOperator, 91 /* [ */, 21,0, FALSE} // 52
|
||||
, {doExprCatOperator, 40 /* ( */, 21,0, FALSE} // 53
|
||||
, {doExprCatOperator, 36 /* $ */, 21,0, FALSE} // 54
|
||||
, {doExprCatOperator, 46 /* . */, 21,0, FALSE} // 55
|
||||
, {doExprOrOperator, 124 /* | */, 21,0, TRUE} // 56
|
||||
, {doExprRParen, 41 /* ) */, 255,0, TRUE} // 57
|
||||
, {doExprFinished, 255, 255,0, FALSE} // 58
|
||||
, {doNOP, 129, 59,0, TRUE} // 59 tag-open
|
||||
, {doStartTagValue, 128, 62,0, FALSE} // 60
|
||||
, {doTagExpectedError, 255, 95,0, FALSE} // 61
|
||||
, {doNOP, 129, 66,0, TRUE} // 62 tag-value
|
||||
, {doNOP, 125 /* } */, 66,0, FALSE} // 63
|
||||
, {doTagDigit, 128, 62,0, TRUE} // 64
|
||||
, {doTagExpectedError, 255, 95,0, FALSE} // 65
|
||||
, {doNOP, 129, 66,0, TRUE} // 66 tag-close
|
||||
, {doTagValue, 125 /* } */, 69,0, TRUE} // 67
|
||||
, {doTagExpectedError, 255, 95,0, FALSE} // 68
|
||||
, {doExprCatOperator, 254, 21,0, FALSE} // 69 expr-cont-no-tag
|
||||
, {doNOP, 129, 69,0, TRUE} // 70
|
||||
, {doExprCatOperator, 130, 21,0, FALSE} // 71
|
||||
, {doExprCatOperator, 91 /* [ */, 21,0, FALSE} // 72
|
||||
, {doExprCatOperator, 40 /* ( */, 21,0, FALSE} // 73
|
||||
, {doExprCatOperator, 36 /* $ */, 21,0, FALSE} // 74
|
||||
, {doExprCatOperator, 46 /* . */, 21,0, FALSE} // 75
|
||||
, {doExprCatOperator, 47 /* / */, 47,0, FALSE} // 76
|
||||
, {doExprOrOperator, 124 /* | */, 21,0, TRUE} // 77
|
||||
, {doExprRParen, 41 /* ) */, 255,0, TRUE} // 78
|
||||
, {doExprFinished, 255, 255,0, FALSE} // 79
|
||||
, {doStartVariableName, 36 /* $ */, 82,0, TRUE} // 80 scan-var-name
|
||||
, {doNOP, 255, 95,0, FALSE} // 81
|
||||
, {doNOP, 131, 84,0, TRUE} // 82 scan-var-start
|
||||
, {doVariableNameExpectedErr, 255, 95,0, FALSE} // 83
|
||||
, {doNOP, 132, 84,0, TRUE} // 84 scan-var-body
|
||||
, {doEndVariableName, 255, 255,0, FALSE} // 85
|
||||
, {doScanUnicodeSet, 91 /* [ */, 255,0, TRUE} // 86 scan-unicode-set
|
||||
, {doScanUnicodeSet, 112 /* p */, 255,0, TRUE} // 87
|
||||
, {doScanUnicodeSet, 80 /* P */, 255,0, TRUE} // 88
|
||||
, {doNOP, 255, 95,0, FALSE} // 89
|
||||
, {doNOP, 129, 90,0, TRUE} // 90 assign-or-rule
|
||||
, {doStartAssign, 61 /* = */, 21, 93, TRUE} // 91
|
||||
, {doNOP, 255, 29, 8, FALSE} // 92
|
||||
, {doEndAssign, 59 /* ; */, 1,0, TRUE} // 93 assign-end
|
||||
, {doRuleErrorAssignExpr, 255, 95,0, FALSE} // 94
|
||||
, {doExit, 255, 95,0, TRUE} // 95 errorDeath
|
||||
};
|
||||
static const char * const RBBIRuleStateNames[] = { 0,
|
||||
"start",
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
"break-rule-end",
|
||||
0,
|
||||
0,
|
||||
"rev-option",
|
||||
0,
|
||||
"option-scan1",
|
||||
0,
|
||||
"option-scan2",
|
||||
0,
|
||||
"option-scan3",
|
||||
0,
|
||||
0,
|
||||
"reverse-rule",
|
||||
"term",
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
"term-var-ref",
|
||||
"expr-mod",
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
"expr-cont",
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
"look-ahead",
|
||||
0,
|
||||
"expr-cont-no-slash",
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
"tag-open",
|
||||
0,
|
||||
0,
|
||||
"tag-value",
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
"tag-close",
|
||||
0,
|
||||
0,
|
||||
"expr-cont-no-tag",
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
"scan-var-name",
|
||||
0,
|
||||
"scan-var-start",
|
||||
0,
|
||||
"scan-var-body",
|
||||
0,
|
||||
"scan-unicode-set",
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
"assign-or-rule",
|
||||
0,
|
||||
0,
|
||||
"assign-end",
|
||||
0,
|
||||
"errorDeath",
|
||||
0};
|
||||
|
||||
U_NAMESPACE_END
|
||||
#endif
|
315
extern/icu/source/common/rbbirpt.txt
vendored
315
extern/icu/source/common/rbbirpt.txt
vendored
@ -1,315 +0,0 @@
|
||||
|
||||
#*****************************************************************************
|
||||
#
|
||||
# Copyright (C) 2002-2003, International Business Machines Corporation and others.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
#*****************************************************************************
|
||||
#
|
||||
# file: rbbirpt.txt
|
||||
# ICU Break Iterator Rule Parser State Table
|
||||
#
|
||||
# This state table is used when reading and parsing a set of RBBI rules
|
||||
# The rule parser uses a state machine; the data in this file define the
|
||||
# state transitions that occur for each input character.
|
||||
#
|
||||
# *** This file defines the RBBI rule grammar. This is it.
|
||||
# *** The determination of what is accepted is here.
|
||||
#
|
||||
# This file is processed by a perl script "rbbicst.pl" to produce initialized C arrays
|
||||
# that are then built with the rule parser.
|
||||
#
|
||||
|
||||
#
|
||||
# Here is the syntax of the state definitions in this file:
|
||||
#
|
||||
#
|
||||
#StateName:
|
||||
# input-char n next-state ^push-state action
|
||||
# input-char n next-state ^push-state action
|
||||
# | | | | |
|
||||
# | | | | |--- action to be performed by state machine
|
||||
# | | | | See function RBBIRuleScanner::doParseActions()
|
||||
# | | | |
|
||||
# | | | |--- Push this named state onto the state stack.
|
||||
# | | | Later, when next state is specified as "pop",
|
||||
# | | | the pushed state will become the current state.
|
||||
# | | |
|
||||
# | | |--- Transition to this state if the current input character matches the input
|
||||
# | | character or char class in the left hand column. "pop" causes the next
|
||||
# | | state to be popped from the state stack.
|
||||
# | |
|
||||
# | |--- When making the state transition specified on this line, advance to the next
|
||||
# | character from the input only if 'n' appears here.
|
||||
# |
|
||||
# |--- Character or named character classes to test for. If the current character being scanned
|
||||
# matches, peform the actions and go to the state specified on this line.
|
||||
# The input character is tested sequentally, in the order written. The characters and
|
||||
# character classes tested for do not need to be mutually exclusive. The first match wins.
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# start state, scan position is at the beginning of the rules file, or in between two rules.
|
||||
#
|
||||
start:
|
||||
escaped term ^break-rule-end doExprStart
|
||||
white_space n start
|
||||
'$' scan-var-name ^assign-or-rule doExprStart
|
||||
'!' n rev-option
|
||||
';' n start # ignore empty rules.
|
||||
eof exit
|
||||
default term ^break-rule-end doExprStart
|
||||
|
||||
#
|
||||
# break-rule-end: Returned from doing a break-rule expression.
|
||||
#
|
||||
break-rule-end:
|
||||
';' n start doEndOfRule
|
||||
white_space n break-rule-end
|
||||
default errorDeath doRuleError
|
||||
|
||||
|
||||
#
|
||||
# ! We've just scanned a '!', indicating either a !!key word flag or a
|
||||
# !Reverse rule.
|
||||
#
|
||||
rev-option:
|
||||
'!' n option-scan1
|
||||
default reverse-rule ^break-rule-end doReverseDir
|
||||
|
||||
option-scan1:
|
||||
name_start_char n option-scan2 doOptionStart
|
||||
default errorDeath doRuleError
|
||||
|
||||
option-scan2:
|
||||
name_char n option-scan2
|
||||
default option-scan3 doOptionEnd
|
||||
|
||||
option-scan3:
|
||||
';' n start
|
||||
white_space n option-scan3
|
||||
default errorDeath doRuleError
|
||||
|
||||
|
||||
reverse-rule:
|
||||
default term ^break-rule-end doExprStart
|
||||
|
||||
|
||||
#
|
||||
# term. Eat through a single rule character, or a composite thing, which
|
||||
# could be a parenthesized expression, a variable name, or a Unicode Set.
|
||||
#
|
||||
term:
|
||||
escaped n expr-mod doRuleChar
|
||||
white_space n term
|
||||
rule_char n expr-mod doRuleChar
|
||||
'[' scan-unicode-set ^expr-mod
|
||||
'(' n term ^expr-mod doLParen
|
||||
'$' scan-var-name ^term-var-ref
|
||||
'.' n expr-mod doDotAny
|
||||
default errorDeath doRuleError
|
||||
|
||||
|
||||
|
||||
#
|
||||
# term-var-ref We've just finished scanning a reference to a $variable.
|
||||
# Check that the variable was defined.
|
||||
# The variable name scanning is in common with assignment statements,
|
||||
# so the check can't be done there.
|
||||
term-var-ref:
|
||||
default expr-mod doCheckVarDef
|
||||
|
||||
|
||||
#
|
||||
# expr-mod We've just finished scanning a term, now look for the optional
|
||||
# trailing '*', '?', '+'
|
||||
#
|
||||
expr-mod:
|
||||
white_space n expr-mod
|
||||
'*' n expr-cont doUnaryOpStar
|
||||
'+' n expr-cont doUnaryOpPlus
|
||||
'?' n expr-cont doUnaryOpQuestion
|
||||
default expr-cont
|
||||
|
||||
|
||||
#
|
||||
# expr-cont Expression, continuation. At a point where additional terms are
|
||||
# allowed, but not required.
|
||||
#
|
||||
expr-cont:
|
||||
escaped term doExprCatOperator
|
||||
white_space n expr-cont
|
||||
rule_char term doExprCatOperator
|
||||
'[' term doExprCatOperator
|
||||
'(' term doExprCatOperator
|
||||
'$' term doExprCatOperator
|
||||
'.' term doExprCatOperator
|
||||
'/' look-ahead doExprCatOperator
|
||||
'{' n tag-open doExprCatOperator
|
||||
'|' n term doExprOrOperator
|
||||
')' n pop doExprRParen
|
||||
default pop doExprFinished
|
||||
|
||||
|
||||
#
|
||||
# look-ahead Scanning a '/', which identifies a break point, assuming that the
|
||||
# remainder of the expression matches.
|
||||
#
|
||||
# Generate a parse tree as if this was a special kind of input symbol
|
||||
# appearing in an otherwise normal concatenation expression.
|
||||
#
|
||||
look-ahead:
|
||||
'/' n expr-cont-no-slash doSlash
|
||||
default errorDeath
|
||||
|
||||
|
||||
#
|
||||
# expr-cont-no-slash Expression, continuation. At a point where additional terms are
|
||||
# allowed, but not required. Just like
|
||||
# expr-cont, above, except that no '/'
|
||||
# look-ahead symbol is permitted.
|
||||
#
|
||||
expr-cont-no-slash:
|
||||
escaped term doExprCatOperator
|
||||
white_space n expr-cont
|
||||
rule_char term doExprCatOperator
|
||||
'[' term doExprCatOperator
|
||||
'(' term doExprCatOperator
|
||||
'$' term doExprCatOperator
|
||||
'.' term doExprCatOperator
|
||||
'|' n term doExprOrOperator
|
||||
')' n pop doExprRParen
|
||||
default pop doExprFinished
|
||||
|
||||
|
||||
#
|
||||
# tags scanning a '{', the opening delimiter for a tag that identifies
|
||||
# the kind of match. Scan the whole {dddd} tag, where d=digit
|
||||
#
|
||||
tag-open:
|
||||
white_space n tag-open
|
||||
digit_char tag-value doStartTagValue
|
||||
default errorDeath doTagExpectedError
|
||||
|
||||
tag-value:
|
||||
white_space n tag-close
|
||||
'}' tag-close
|
||||
digit_char n tag-value doTagDigit
|
||||
default errorDeath doTagExpectedError
|
||||
|
||||
tag-close:
|
||||
white_space n tag-close
|
||||
'}' n expr-cont-no-tag doTagValue
|
||||
default errorDeath doTagExpectedError
|
||||
|
||||
|
||||
|
||||
#
|
||||
# expr-cont-no-tag Expression, continuation. At a point where additional terms are
|
||||
# allowed, but not required. Just like
|
||||
# expr-cont, above, except that no "{ddd}"
|
||||
# tagging is permitted.
|
||||
#
|
||||
expr-cont-no-tag:
|
||||
escaped term doExprCatOperator
|
||||
white_space n expr-cont-no-tag
|
||||
rule_char term doExprCatOperator
|
||||
'[' term doExprCatOperator
|
||||
'(' term doExprCatOperator
|
||||
'$' term doExprCatOperator
|
||||
'.' term doExprCatOperator
|
||||
'/' look-ahead doExprCatOperator
|
||||
'|' n term doExprOrOperator
|
||||
')' n pop doExprRParen
|
||||
default pop doExprFinished
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Variable Name Scanning.
|
||||
#
|
||||
# The state that branched to here must have pushed a return state
|
||||
# to go to after completion of the variable name scanning.
|
||||
#
|
||||
# The current input character must be the $ that introduces the name.
|
||||
# The $ is consummed here rather than in the state that first detected it
|
||||
# so that the doStartVariableName action only needs to happen in one
|
||||
# place (here), and the other states don't need to worry about it.
|
||||
#
|
||||
scan-var-name:
|
||||
'$' n scan-var-start doStartVariableName
|
||||
default errorDeath
|
||||
|
||||
|
||||
scan-var-start:
|
||||
name_start_char n scan-var-body
|
||||
default errorDeath doVariableNameExpectedErr
|
||||
|
||||
scan-var-body:
|
||||
name_char n scan-var-body
|
||||
default pop doEndVariableName
|
||||
|
||||
|
||||
|
||||
#
|
||||
# scan-unicode-set Unicode Sets are parsed by the the UnicodeSet class.
|
||||
# Within the RBBI parser, after finding the first character
|
||||
# of a Unicode Set, we just hand the rule input at that
|
||||
# point of to the Unicode Set constructor, then pick
|
||||
# up parsing after the close of the set.
|
||||
#
|
||||
# The action for this state invokes the UnicodeSet parser.
|
||||
#
|
||||
scan-unicode-set:
|
||||
'[' n pop doScanUnicodeSet
|
||||
'p' n pop doScanUnicodeSet
|
||||
'P' n pop doScanUnicodeSet
|
||||
default errorDeath
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# assign-or-rule. A $variable was encountered at the start of something, could be
|
||||
# either an assignment statement or a rule, depending on whether an '='
|
||||
# follows the variable name. We get to this state when the variable name
|
||||
# scanning does a return.
|
||||
#
|
||||
assign-or-rule:
|
||||
white_space n assign-or-rule
|
||||
'=' n term ^assign-end doStartAssign # variable was target of assignment
|
||||
default term-var-ref ^break-rule-end # variable was a term in a rule
|
||||
|
||||
|
||||
|
||||
#
|
||||
# assign-end This state is entered when the end of the expression on the
|
||||
# right hand side of an assignment is found. We get here via
|
||||
# a pop; this state is pushed when the '=' in an assignment is found.
|
||||
#
|
||||
# The only thing allowed at this point is a ';'. The RHS of an
|
||||
# assignment must look like a rule expression, and we come here
|
||||
# when what is being scanned no longer looks like an expression.
|
||||
#
|
||||
assign-end:
|
||||
';' n start doEndAssign
|
||||
default errorDeath doRuleErrorAssignExpr
|
||||
|
||||
|
||||
|
||||
#
|
||||
# errorDeath. This state is specified as the next state whenever a syntax error
|
||||
# in the source rules is detected. Barring bugs, the state machine will never
|
||||
# actually get here, but will stop because of the action associated with the error.
|
||||
# But, just in case, this state asks the state machine to exit.
|
||||
errorDeath:
|
||||
default n errorDeath doExit
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user