OSDN Git Service

* interpret.cc (STOREA): Rewrite using temporary variable to
[pf3gnuchains/gcc-fork.git] / libjava / scripts / classes.pl
1 # classes.pl - A perl program to generate most of the contents of
2 # javaprims.h automatically.
3
4 # Copyright (C) 1998, 1999, 2000, 2002, 2005, 2006  Free Software Foundation
5 #
6 # This file is part of libgcj.
7 #
8 # This software is copyrighted work licensed under the terms of the
9 # Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
10 # details.
11
12 # Usage: cd <build>/classpath/lib ; perl classes.pl.
13
14 use DirHandle;
15
16 if (-d 'java')
17 {
18     # Ok here.
19 }
20 elsif (-d '../java')
21 {
22     chdir ('..');
23 }
24 else
25 {
26     die "couldn't find java directory\n";
27 }
28
29 &scan ('java', 2);
30
31 exit 0;
32
33 sub scan
34 {
35     local ($dir, $indent) = @_;
36     local (@subdirs) = ();
37     local (%classes) = ();
38
39     local ($d) = new DirHandle $dir;
40     local (*JFILE);
41     local ($name);
42     if (defined $d)
43     {
44         while (defined ($name = $d->read))
45         {
46             next if $name eq 'CVS';
47             next if $name eq '.svn';
48             next if $name eq '.';
49             next if $name eq '..';
50             if ($dir eq 'java'
51                 && $name ne 'lang'
52                 && $name ne 'util'
53                 && $name ne 'io')
54             {
55                 # We only generate decls for java.lang, java.io, and
56                 # java.util.
57                 next;
58             }
59             if (-d ($dir . '/' . $name))
60             {
61                 push (@subdirs, $name);
62                 next;
63             }
64             next unless $name =~ s/\.class$//;
65             $classes{$name} = 1;
66         }
67
68         undef $d;
69     }
70
71     local ($spaces) = ' ' x $indent;
72     local ($classname);
73     ($classname = $dir) =~ s/^.*\///;
74     print $spaces, "namespace ", $classname, "\n";
75     print $spaces, "{\n";
76
77     foreach (sort keys %classes)
78     {
79         print $spaces, "  class ", $_, ";\n";
80     }
81     print "\n" if scalar @classes > 0 && scalar @subdirs > 0;
82
83     local ($first) = 1;
84     foreach (sort @subdirs)
85     {
86         print "\n" unless $first;
87         $first = 0;
88         &scan ("$dir/$_", $indent + 2);
89     }
90
91     print $spaces, "}\n";
92 }