]> mj.ucw.cz Git - libucw.git/blobdiff - tools/map-symbols
Doc: Documented growing arrays, generic allocators and related things
[libucw.git] / tools / map-symbols
index 5e193b8fea089b9abc77206fec7c7dfb65e3a136..94d3016dafc309938d3e9111b7beccb9ca813a39 100755 (executable)
@@ -4,12 +4,24 @@
 
 use common::sense;
 
+sub symbol {
+       my ($sym) = @_;
+       return if $sym =~ m{^(ucw|ucwlib)_};
+       print "$sym\n";
+}
+
 sub parse {
        my ($file) = @_;
        print "# $file\n";
        open my $f, '<', $file or die;
        while (<$f>) {
                chomp;
+               # Interpret special comments
+               m{// NOAPI} and next;
+               if (m{// API: (\w+)}) {
+                       print "$1\n";
+                       next;
+               }
                # Find things which look like top-level declarations
                s{//.*}{};
                s{/\*.*}{};
@@ -32,9 +44,9 @@ sub parse {
                if (m{^extern [^,]*(\s+\**\w+(,\s+\**\w+)*);}) {
                        my $x = $1;
                        $x =~ s{[,*]}{}g;
-                       print join("\n", grep { !/^$/ } split /\s+/, $x), "\n";
+                       symbol $_ for grep { !/^$/ } split /\s+/, $x;
                } elsif (m{( |\*)(\w+)\(}) {
-                       print "$2\n";
+                       symbol($2);
                } else {
                        print "??? $_\n";
                }
@@ -63,9 +75,11 @@ my %blacklist = map { $_ => 1 } qw(
        charset/U-lower.h
        charset/U-unacc.h
        charset/U-upper.h
+       images/image-walk.h
+       images/scale-gen.h
 );
 
-for my $f (<ucw/*.h>, <ucw/sorter/common.h>, <charset/*.h>) {
+for my $f (<ucw/*.h>, <ucw/sorter/common.h>, <charset/*.h>, <images/*.h>) {
        next if $blacklist{$f};
        parse($f);
 }