diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-07 14:42:40 +0000 |
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-04-07 14:42:40 +0000 |
| commit | 2c60951ba0efef23e2b765964b5dc0f1f49438a9 (patch) | |
| tree | d96801a16fdf03a5682ef98730fe333a46eef944 /libjava/classes.pl | |
| parent | 1135eed2207f8f82c589e42ce113a1c2f0310778 (diff) | |
| download | ppe42-gcc-2c60951ba0efef23e2b765964b5dc0f1f49438a9.tar.gz ppe42-gcc-2c60951ba0efef23e2b765964b5dc0f1f49438a9.zip | |
Initial revision
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26263 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/classes.pl')
| -rw-r--r-- | libjava/classes.pl | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/libjava/classes.pl b/libjava/classes.pl new file mode 100644 index 00000000000..4db80a08c2e --- /dev/null +++ b/libjava/classes.pl @@ -0,0 +1,104 @@ +# classes.pl - A perl program to generate most of the contents of +# javaprims.h automatically. + +# Copyright (C) 1998, 1999 Cygnus Solutions +# +# This file is part of libjava. +# +# This software is copyrighted work licensed under the terms of the +# Libjava License. Please consult the file "LIBJAVA_LICENSE" for +# details. + +# Usage: cd <top-srcdir> ; perl classes.pl. +# Can also be run from the `include' directory; this lets us +# more easily insert the output into javaprims.h (which is where it goes). + +use DirHandle; + +if (-d 'java') +{ + # Ok here. +} +elsif (-d '../java') +{ + chdir ('..'); +} +else +{ + die "couldn't find java directory\n"; +} + +&scan ('java', 2); + +exit 0; + +sub scan +{ + local ($dir, $indent) = @_; + local (@subdirs) = (); + local (@classes) = (); + + local ($d) = new DirHandle $dir; + local (*JFILE); + local ($name); + if (defined $d) + { + while (defined ($name = $d->read)) + { + next if $name eq 'CVS'; + next if $name eq '.'; + next if $name eq '..'; + if ($dir eq 'java' + && $name ne 'lang' + && $name ne 'util' + && $name ne 'io') + { + # We only generate decls for java.lang, java.io, and + # java.util. + next; + } + if (-d ($dir . '/' . $name)) + { + push (@subdirs, $name); + next; + } + next unless $name =~ /\.java$/; + + open (FILE, "< $dir/$name"); + while (<FILE>) + { + # NOTE: we don't skip `/*' comments. + s,//.*$,,; + # For now assume that class names start with upper + # case letter. + next unless /(class|interface) ([A-Z][A-Za-z0-9]+)/; + push (@classes, $2); + } + close (FILE); + } + + undef $d; + } + + local ($spaces) = ' ' x $indent; + local ($classname); + ($classname = $dir) =~ s/^.*\///; + print $spaces, "namespace ", $classname, "\n"; + print $spaces, "{\n"; + + foreach (sort @classes) + { + print $spaces, " class ", $_, ";\n"; + } + print "\n" if scalar @classes > 0 && scalar @subdirs > 0; + + local ($first) = 1; + foreach (sort @subdirs) + { + print "\n" unless $first; + $first = 0; + &scan ("$dir/$_", $indent + 2); + } + + print $spaces, "};\n"; +} |

