headerwalk.pl   [plain text]


#!/usr/bin/perl

# This tool walks a header and generates a bunch of very simple
# text content.  This is mostly just a fun example of using the
# block parser in a different way than it was intended.  :-)

# Comment out all but one of these.
my $language = "C";
# my $language = "ooc";
# my $language = "cpp";

use lib "./Modules";
use HeaderDoc::Utilities qw(quote linesFromFile);
use HeaderDoc::BlockParse qw(blockParse);
use HeaderDoc::ParserState;
use HeaderDoc::ParseTree;
use HeaderDoc::APIOwner;
use File::Basename qw(basename);
use strict;

%HeaderDoc::ignorePrefixes = ();
%HeaderDoc::perHeaderIgnorePrefixes = ();
%HeaderDoc::perHeaderIgnoreFuncMacros = ();

my $headerObj = HeaderDoc::APIOwner->new();
$headerObj->lang("C");
$headerObj->sublang($language);
my ($case_sensitive, $keywordhashref) = $headerObj->keywords();
$HeaderDoc::headerObject = $headerObj;

foreach my $header (@ARGV) {
	print "HEADER $header\n";

	my @inputLines = &linesFromFile($header);

	my $inputCounter = 0;
	my $nlines = $#inputLines;
	while ($inputCounter <= $nlines) {
		my ($newInputCounter, $dec, $type, $name, $pt, $value, $pplref, $returntype, $pridec, $parseTree, $simpleTDcontents, $bpavail) = &blockParse($header, 0, \@inputLines, $inputCounter, 0, \%HeaderDoc::ignorePrefixes, \%HeaderDoc::perHeaderIgnorePrefixes, \%HeaderDoc::perHeaderIgnoreFuncMacros, $keywordhashref, $case_sensitive);
		$inputCounter = $newInputCounter;

		print "GOT DEC:\n";
		print $parseTree->textTree();
		print "END DEC.\n\n";

	}

}