#!/usr/bin/perl
#
# Program:   KWSys - Kitware System Library
# Module:    $RCSfile: kwsysHeaderDump.pl,v $
#
# Copyright (c) Kitware, Inc., Insight Consortium.  All rights reserved.
# See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
#
#    This software is distributed WITHOUT ANY WARRANTY; without even
#    the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
#    PURPOSE.  See the above copyright notices for more information.
#

if ( $#ARGV+1 < 2 )
{
    print "Usage: ./kwsysHeaderDump.pl <name> <header>\n";
    exit(1);
}

$name = $ARGV[0];
$max = 0;
open(INFILE, $ARGV[1]);
while (chomp ($line = <INFILE>))
{
    if (($line !~ /^\#/) &&
        ($line =~ s/.*kwsys${name}_([A-Za-z0-9_]*).*/\1/) &&
        ($i{$line}++ < 1))
    {
        push(@lines, "$line");
        if (length($line) > $max)
        {
            $max = length($line);
        }
    }
}
close(INFILE);

$width = $max + 13;
print sprintf("#define %-${width}s kwsys_ns(${name})\n", "kwsys${name}");
foreach $l (@lines)
{
    print sprintf("#define %-${width}s kwsys_ns(${name}_$l)\n",
                  "kwsys${name}_$l");
}
print "\n";
print sprintf("# undef kwsys${name}\n");
foreach $l (@lines)
{
    print sprintf("# undef kwsys${name}_$l\n");
}
