Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: icu46/source/tools/gendraft/genheaders.pl

Issue 5516007: Check in the pristine copy of ICU 4.6... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « icu46/source/tools/gendraft/exclude.txt ('k') | icu46/source/tools/gennorm2/Makefile.in » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: icu46/source/tools/gendraft/genheaders.pl
===================================================================
--- icu46/source/tools/gendraft/genheaders.pl (revision 0)
+++ icu46/source/tools/gendraft/genheaders.pl (revision 0)
@@ -0,0 +1,264 @@
+#!/usr/bin/perl
+#*
+#*******************************************************************************
+#* Copyright (C) 2006-2010, International Business Machines
+#* Corporation and others. All Rights Reserved.
+#*******************************************************************************
+#*
+#* file name: genheaders.pl
+#* encoding: US-ASCII
+#* tab size: 8 (not used)
+#* indentation:4
+#*
+#* Created by: Ram Viswanadha
+#*
+#* This tool filters the deprecated.html and friends file generated by Doxygen and generates udarft.h
+#* udeprctd.h and uobslete.h
+#*
+
+use File::Find;
+use File::Basename;
+use IO::File;
+use Cwd;
+use File::Copy;
+use Getopt::Long;
+use File::Path;
+use File::Copy;
+
+$draftHeaderName = "udraft.h";
+$draftAppend = "DRAFT_API_DO_NOT_USE";
+$draftDefine = "U_HIDE_DRAFT_API";
+
+$deprecatedHeaderName = "udeprctd.h";
+$deprecatedAppend = "DEPRECATED_API_DO_NOT_USE";
+$deprecatedDefine = "U_HIDE_DEPRECATED_API";
+
+$obsoleteHeaderName = "uobslete.h";
+$obsoleteAppend = "OBSOLETE_API_DO_NOT_USE";
+$obsoleteDefine = "U_HIDE_OBSOLETE_API";
+
+$systemHeaderName = "usystem.h";
+$systemAppend = "SYSTEM_API_DO_NOT_USE";
+$systemDefine = "U_HIDE_SYSTEM_API";
+
+$internalHeaderName = "uintrnal.h";
+$internalAppend = "INTERNAL_API_DO_NOT_USE";
+$internalDefine = "U_HIDE_INTERNAL_API";
+
+$versionAppend="";
+
+#run the program
+main();
+
+#---------------------------------------------------------------------
+# The main program
+
+sub main(){
+ GetOptions(
+ "--srcdir=s" => \$srcDir,
+ "--destdir=s" => \$destDir,
+ "--version=s" => \$version,
+ "--exclusion-list=s" => \$exclude,
+ "--include-types" => \$includeTypes,
+ "--verbose" => \$verbose
+ );
+ usage() unless defined $srcDir;
+ usage() unless defined $destDir;
+ usage() unless defined $version;
+ usage() unless defined $exclude;
+ $draftFile = "$srcDir/draft.html";
+ $deprecatedFile = "$srcDir/deprecated.html";
+ $obsoleteFile = "$srcDir/obsolete.html";
+ $systemFile = "$srcDir/system.html";
+ $internalFile = "$srcDir/internal.html";
+
+ $versionAppend = $version;
+ $versionAppend=~ s/^([0-9]+)\.([0-9]+).*/\1_\2/;
+ $excludeFH = IO::File->new($exclude,"r")
+ or die "could not open the file $exclude for reading: $! \n";
+ my %exclude;
+ while (defined ($line = <$excludeFH>)){
+ next if( $line =~ /^#/);
+ $line =~ s/^\s+//;
+ $line =~ s/\s+\n$//;
+ $exclude{$line}="EXCLUDE";
+ }
+
+ writeFile($draftFile, $draftHeaderName, $destDir, $draftAppend, $draftDefine, \%exclude);
+ writeFile($deprecatedFile, $deprecatedHeaderName, $destDir, $deprecatedAppend, $deprecatedDefine, \%exclude);
+ writeFile($obsoleteFile, $obsoleteHeaderName, $destDir, $obsoleteAppend, $obsoleteDefine, \%exclude);
+ writeFile($systemFile, $systemHeaderName, $destDir, $systemAppend, $systemDefine, \%exclude);
+ writeFile($internalFile, $internalHeaderName, $destDir, $internalAppend, $internalDefine, \%exclude);
+}
+
+#-----------------------------------------------------------------------
+sub getHeaderDef{
+ ($headerName) = @_;
+ $headerDef = uc($headerName); # this is building the constant for #define
+ $headerDef =~ s/\./_/;
+ return $headerDef;
+}
+
+#-----------------------------------------------------------------------
+sub writeFile{
+ ($infile,$outfile,$destDir, $symbolAppend, $symbolDef, $exclude) = @_;
+
+ my $outFileName = $outfile;
+ $headerDef = getHeaderDef($outfile);
+
+ $outfile = $destDir."/".$outfile;
+
+ $inFH = IO::File->new($infile,"r")
+ or die "could not open the file $infile for reading: $! \n";
+ $outFH = IO::File->new($outfile,"w")
+ or die "could not open the file $outfile for writing: $! \n";
+
+ #print "$headerDef>>> $outfile\n";
+ printHeader($outFH, $outFileName, $headerDef, $symbolDef);
+ parseWriteFile($inFH, $outFH, $symbolAppend, $exclude);
+ printFooter($outFH, $headerDef, $symbolDef);
+ close($inFH);
+ close($outFH);
+}
+
+#-----------------------------------------------------------------------
+sub printHeader{
+ ($outFH, $headername, $HEADERDEF, $symbolDef) = @_;
+ ($DAY, $MONTH, $YEAR) = (localtime)[3,4,5];
+ $YEAR += 1900;
+#We will print our copyright here + warnings
+print $outFH <<END_HEADER_COMMENT;
+/*
+*******************************************************************************
+* Copyright (C) 2004-$YEAR, International Business Machines
+* Corporation and others. All Rights Reserved.
+*******************************************************************************
+*
+* file name: $headername
+* encoding: US-ASCII
+* tab size: 8 (not used)
+* indentation:4
+*
+* Created by: genheaders.pl, a perl script written by Ram Viswanadha
+*
+* Contains data for commenting out APIs.
+* Gets included by umachine.h
+*
+* THIS FILE IS MACHINE-GENERATED, DON'T PLAY WITH IT IF YOU DON'T KNOW WHAT
+* YOU ARE DOING, OTHERWISE VERY BAD THINGS WILL HAPPEN!
+*/
+
+#ifndef $HEADERDEF
+#define $HEADERDEF
+
+#ifdef $symbolDef
+
+END_HEADER_COMMENT
+}
+
+#-----------------------------------------------------------------------
+sub parseWriteFile{
+ ($inFH, $outFH, $symbolAppend, $exclude) = @_;
+ %disableRenaming;
+ %enableRenaning;
+ while (defined ($line = <$inFH>)){
+ #just process C APIs for now
+ if($line =~ /\<dt\>/ ){
+ #special cases
+ if( ($line =~ /LEUnicode/)|| ($line =~ /LanguageCodes/) ||
+ ($line =~ /ScriptCodes/) || ($line =~ /\:+/) ||
+ ($line =~ /Class/) ){
+ next;
+ }
+ if( $line =~ /^\<dt\>File [^\>]*\>([^\<]*)/ ) {
+ print "Skipping file-scope $symbolAppend $1\n";
+ next;
+ }
+ #<dt>Global <a class="el" href="utrans_8h.html#a21">utrans_unregister</a> </dt>
+ #<dt>Global <a class="el" href="classUnicodeString.html#w1w0">UnicodeString::kInvariant</a> </dt>
+ # the below regular expression works for both the above formats.
+ $line=~ m/\<dt\>.*\<a class=\".*\" href=\".*\">(.*)\<\/dt\>/;
+ my $value = $1;
+ $value =~ s/\<\/a\>\s*//g;
+ $value =~ s/^\s+//;
+ $value =~ s/\s+$//;
+ #print "$exclude->{$value}\n";
+ if($exclude->{$value} eq "EXCLUDE"){
+ #print "$value $exclude->{$value}\n";
+ next;
+ }
+ print "$value $realSymbol $nonExSymbol :: $line\n" if defined $verbose;
+ next if(isStringAcceptable($value)==1);
+ if($value =~ /^operator[^a-zA-Z]/) {
+ print "Skipping operator $symbolAppend $value from $line\n";
+ next;
+ }
+ $realSymbol = $value."_".$versionAppend;
+ $nonExSymbol = $value."_".$symbolAppend;
+ $disableRenaming{$value} = $nonExSymbol;
+ $enableRenaming{$realSymbol} = $nonExSymbol;
+ print "$value $realSymbol $nonExSymbol\n" if defined $verbose;
+
+ }
+ }
+ print "size of disableRenaming: " . keys( %disableRenaming) . ".\n";
+ print "size of enableRenaming: " . keys( %enableRenaming) . ".\n";
+ print $outFH "# if U_DISABLE_RENAMING\n";
+ foreach $key (sort (keys(%disableRenaming))) {
+ print $outFH "# define $key $disableRenaming{$key}\n";
+ delete($disableRenaming{$key});
+ }
+ print $outFH "# else\n";
+ foreach $key (sort (keys(%enableRenaming))) {
+ print $outFH "# define $key $enableRenaming{$key}\n";
+ delete($enableRenaming{$key});
+ }
+ print $outFH "# endif /* U_DISABLE_RENAMING */\n";
+}
+#-----------------------------------------------------------------------
+sub isStringAcceptable{
+ ($string) = @_;
+ @str = split(//, $string);
+ $ret = 1;
+ foreach $val (@str){
+ if(($val ne "_") && !($val =~ /[0-9A-Z]/)){
+ #print "$val\n";
+ $ret = 0;
+ }
+ }
+ #print "$string : $ret\n";
+ if(!(defined $includeTypes)){
+ if($ret==0 && $str[0] eq 'U'){
+ $ret=1;
+ }
+ }
+ return $ret;
+}
+
+#-----------------------------------------------------------------------
+sub printFooter{
+
+ ($outFH, $headerDef, $symbolDef ) = @_;
+#print the footer
+print $outFH <<END_FOOTER;
+
+#endif /* $symbolDef */
+#endif /* $headerDef */
+
+END_FOOTER
+}
+#-----------------------------------------------------------------------
+sub usage {
+ print << "END";
+Usage:
+gendraft.pl
+Options:
+ --srcdir=<directory>
+ --destdir=<directory>
+ --version=<current version of ICU>
+ --exclusion-list=<file name>
+ --include-types
+e.g.: genheaders.pl --srcdir=<icu>/source/common/docs/html --destdir=<icu>/source/common/unicode --version=2.8 --exclusion-list=exclude.txt
+END
+ exit(0);
+}
Property changes on: icu46/source/tools/gendraft/genheaders.pl
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:eol-style
+ LF
« no previous file with comments | « icu46/source/tools/gendraft/exclude.txt ('k') | icu46/source/tools/gennorm2/Makefile.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698