1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#!/usr/bin/perl 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* 3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#******************************************************************************* 450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#* Copyright (C) 2001-2010, International Business Machines 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* Corporation and others. All Rights Reserved. 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#******************************************************************************* 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* file name: genren.pl 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* encoding: US-ASCII 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* tab size: 8 (not used) 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* indentation:4 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* Created by: Vladimir Weinstein 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* 07/19/2001 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* Used to generate renaming headers. 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#* Run on UNIX platforms (linux) in order to catch all the exports 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 19b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruuse POSIX qw(strftime); 20b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru$headername = 'urename.h'; 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru$path = substr($0, 0, rindex($0, "/")+1)."../../common/unicode/uversion.h"; 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 25c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru$nmopts = '-Cg -f s'; 26c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru$post = ''; 27c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho$mode = 'POSIX'; 29c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru(-e $path) || die "Cannot find uversion.h"; 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruopen(UVERSION, $path); 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruwhile(<UVERSION>) { 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(/\#define U_ICU_VERSION_SUFFIX/) { 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru chop; 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s/\#define U_ICU_VERSION_SUFFIX //; 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru $U_ICU_VERSION_SUFFIX = "$_"; 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru last; 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruwhile($ARGV[0] =~ /^-/) { # detects whether there are any arguments 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru $_ = shift @ARGV; # extracts the argument for processing 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /^-v/ && ($VERBOSE++, next); # verbose 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /^-h/ && (&printHelpMsgAndExit, next); # help 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /^-o/ && (($headername = shift (@ARGV)), next); # output file 48c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /^-n/ && (($nmopts = shift (@ARGV)), next); # nm opts 49c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /^-p/ && (($post = shift (@ARGV)), next); # nm opts 50c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /^-x/ && (($mode = shift (@ARGV)), next); # nm opts 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /^-S/ && (($U_ICU_VERSION_SUFFIX = shift(@ARGV)), next); # pick the suffix 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru warn("Invalid option $_\n"); 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru &printHelpMsgAndExit; 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruunless(@ARGV > 0) { 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru warn "No libraries, exiting...\n"; 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru &printHelpMsgAndExit; 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#$headername = "uren".substr($ARGV[0], 6, index(".", $ARGV[0])-7).".h"; 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru$HEADERDEF = uc($headername); # this is building the constant for #define 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru$HEADERDEF =~ s/\./_/; 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru open HEADER, ">$headername"; # opening a header file 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#We will print our copyright here + warnings 70b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 71b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru$YEAR = strftime "%Y",localtime; 72b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprint HEADER <<"EndOfHeaderComment"; 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 76b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* Copyright (C) 2002-$YEAR, International Business Machines 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* file name: $headername 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* encoding: US-ASCII 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* tab size: 8 (not used) 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* indentation:4 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Created by: Perl script written by Vladimir Weinstein 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Contains data for renaming ICU exports. 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Gets included by umachine.h 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* THIS FILE IS MACHINE-GENERATED, DON'T PLAY WITH IT IF YOU DON'T KNOW WHAT 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* YOU ARE DOING, OTHERWISE VERY BAD THINGS WILL HAPPEN! 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef $HEADERDEF 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define $HEADERDEF 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* Uncomment the following line to disable renaming on platforms 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru that do not use Autoconf. */ 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* #define U_DISABLE_RENAMING 1 */ 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !U_DISABLE_RENAMING 10250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 10350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/* We need the U_ICU_ENTRY_POINT_RENAME definition. There's a default one in unicode/uvernum.h we can use, but we will give 10450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho the platform a chance to define it first. 10550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho Normally (if utypes.h or umachine.h was included first) this will not be necessary as it will already be defined. 10650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 10750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#ifndef U_ICU_ENTRY_POINT_RENAME 10850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/umachine.h" 10950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 11050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 11150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/* If we still don't have U_ICU_ENTRY_POINT_RENAME use the default. */ 11250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#ifndef U_ICU_ENTRY_POINT_RENAME 11350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/uvernum.h" 11450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 11550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 11650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/* Error out before the following defines cause very strange and unexpected code breakage */ 11750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#ifndef U_ICU_ENTRY_POINT_RENAME 11850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#error U_ICU_ENTRY_POINT_RENAME is not defined - cannot continue. Consider defining U_DISABLE_RENAMING if renaming should not be used. 11950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 12050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruEndOfHeaderComment 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 12350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho$fileCount = 0; 12450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho$itemCount = 0; 12550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho$symbolCount = 0; 12650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querufor(;@ARGV; shift(@ARGV)) { 12850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho $fileCount++; 129c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru @NMRESULT = `nm $nmopts $ARGV[0] $post`; 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if($?) { 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru warn "Couldn't do 'nm' for $ARGV[0], continuing...\n"; 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru next; # Couldn't do nm for the file 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 134c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru if($mode =~ /POSIX/) { 135c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru splice @NMRESULT, 0, 6; 136c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } elsif ($mode =~ /Mach-O/) { 137c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru# splice @NMRESULT, 0, 10; 138c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru foreach (@NMRESULT) { # Process every line of result and stuff it in $_ 14050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho $itemCount++; 141c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru if($mode =~ /POSIX/) { 142c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru ($_, $address, $type) = split(/\|/); 143c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } elsif ($mode =~ /Mach-O/) { 144c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru if(/^(?:[0-9a-fA-F]){8} ([A-Z]) (?:_)?(.*)$/) { 145c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru ($_, $type) = ($2, $1); 146c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } else { 147c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru next; 148c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 149c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } else { 150c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru die "Unknown mode $mode"; 151c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru &verbose( "type: \"$type\" "); 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(!($type =~ /[UAwW?]/)) { 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(/@@/) { # These would be imports 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru &verbose( "Import: $_ \"$type\"\n"); 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru &verbose( "C++ method: $_\n"); 15750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } elsif (/^[^\(]*::/) { # C++ methods, stuff class name in associative array 15850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ## DON'T match ... ( foo::bar ... want :: to be to the left of paren 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ## icu_2_0::CharString::~CharString(void) -> CharString 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru @CppName = split(/::/); ## remove scope stuff 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(@CppName>1) { 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ## MessageFormat virtual table -> MessageFormat 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru @CppName = split(/ /, $CppName[1]); ## remove debug stuff 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ## ures_getUnicodeStringByIndex(UResourceBundle -> ures_getUnicodeStringByIndex 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru @CppName = split(/\(/, $CppName[0]); ## remove function args 167c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru if($CppName[0] =~ /^operator/) { 168c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru &verbose ("Skipping C++ function: $_\n"); 169c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } elsif($CppName[0] =~ /^~/) { 170c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru &verbose ("Skipping C++ destructor: $_\n"); 171c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } else { 17250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho &verbose( " Class: '$CppName[0]': $_ \n"); 173c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru $CppClasses{$CppName[0]}++; 17450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho $symbolCount++; 175c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 17650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } elsif ( my ($cfn) = m/^([A-Za-z0-9_]*)\(.*/ ) { 17750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho &verbose ( "$ARGV[0]: got global C++ function $cfn with '$_'\n" ); 17850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho $CFuncs{$cfn}++; 17950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho $symbolCount++; 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } elsif ( /\(/) { # These are strange functions 18150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho print STDERR "$ARGV[0]: Not sure what to do with '$_'\n"; 18250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } elsif ( /^_init/ ) { 18350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho &verbose( "$ARGV[0]: Skipped initializer $_\n" ); 18450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } elsif ( /^_fini/ ) { 18550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho &verbose( "$ARGV[0]: Skipped finilizer $_\n" ); 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } elsif ( /icu_/) { 18750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho print STDERR "$ARGV[0]: Skipped strange mangled function $_\n"; 188c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } elsif ( /^vtable for /) { 18950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho print STDERR "$ARGV[0]: Skipped vtable $_\n"; 190c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } elsif ( /^typeinfo for /) { 19150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho print STDERR "$ARGV[0]: Skipped typeinfo $_\n"; 192c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } elsif ( /operator\+/ ) { 19350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho print STDERR "$ARGV[0]: Skipped ignored function $_\n"; 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { # This is regular C function 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru &verbose( "C func: $_\n"); 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru @funcname = split(/[\(\s+]/); 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru $CFuncs{$funcname[0]}++; 19850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho $symbolCount++; 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru &verbose( "Skipped: $_ $1\n"); 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 20650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoif( $fileCount == 0 ) { 20750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho die "Error: $itemCount lines from $fileCount files processed, but $symbolCount symbols were found.\n"; 20850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 20950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 21050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoif( $symbolCount == 0 ) { 21150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho die "Error: $itemCount lines from $fileCount files processed, but $symbolCount symbols were found.\n"; 21250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 21350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 21450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoprint " Loaded $symbolCount symbols from $itemCount lines in $fileCount files.\n"; 21550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprint HEADER "\n/* C exports renaming data */\n\n"; 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruforeach(sort keys(%CFuncs)) { 21850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho print HEADER "#define $_ U_ICU_ENTRY_POINT_RENAME($_)\n"; 21950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho# print HEADER "#define $_ $_$U_ICU_VERSION_SUFFIX\n"; 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 22250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoprint HEADER "\n\n"; 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprint HEADER "/* C++ class names renaming defines */\n\n"; 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprint HEADER "#ifdef XP_CPLUSPLUS\n"; 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprint HEADER "#if !U_HAVE_NAMESPACE\n\n"; 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruforeach(sort keys(%CppClasses)) { 22750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho print HEADER "#define $_ U_ICU_ENTRY_POINT_RENAME($_)\n"; 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprint HEADER "\n#endif\n"; 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprint HEADER "#endif\n"; 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprint HEADER "\n#endif\n"; 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprint HEADER "\n#endif\n"; 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclose HEADER; 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querusub verbose { 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if($VERBOSE) { 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru print STDERR @_; 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querusub printHelpMsgAndExit { 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru print STDERR <<"EndHelpText"; 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUsage: $0 [OPTIONS] LIBRARY_FILES 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Options: 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru -v - verbose 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru -h - help 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru -o - output file name (defaults to 'urename.h' 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru -S - suffix (defaults to _MAJOR_MINOR of current ICU version) 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruWill produce a renaming .h file 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruEndHelpText 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru exit 0; 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 259