+++ /dev/null
-# classes.pl - A perl program to generate most of the contents of
-# javaprims.h automatically.
-
-# Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
-#
-# 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");
- local ($outer, $classname);
- while (<FILE>)
- {
- s,//.*$,,;
- # NOTE: we don't skip `/*' comments. However, we do
- # skip lines with a `*' with leading whitespace. This
- # catches the most important cases.
- s,^\s*\*.*$,,;
-
- # For now assume that class names start with upper
- # case letter.
- next unless /\b(class|interface) ([A-Z][A-Za-z0-9]+)/;
- $classname = $2;
-
- # We assume the code is properly indented, so that we
- # can print inner classes properly.
- if (/^\s/)
- {
- die "no outer class for $classname in $dir/$name"
- unless $outer;
- $classes{$outer . "\$" . $classname} = 1;
- }
- else
- {
- $classes{$classname} = 1;
- $outer = $classname;
- }
- }
- close (FILE);
- }
-
- undef $d;
- }
-
- local ($spaces) = ' ' x $indent;
- local ($classname);
- ($classname = $dir) =~ s/^.*\///;
- print $spaces, "namespace ", $classname, "\n";
- print $spaces, "{\n";
-
- foreach (sort keys %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";
-}