NAME

Devel::Depend::Cpp - Extract dependency trees from c files

SYNOPSIS

  use Devel::Depend::Cpp;
  
 my ($success, $includ_levels, $included_files) 
	= Devel::Depend::Cpp::Depend
 		(
		undef, # use default 'cpp' command
 		'/usr/include/stdio.h',
 		'',  # switches to cpp
		0,  # include system includes
		0,  # dump 'cpp' output in terminal
 		) ;
 

OUTPUT

include levels for '/usr/include/stdio.h':
|- 1
|  |- /usr/include/bits/stdio_lim.h
|  |- /usr/include/bits/sys_errlist.h
|  |- /usr/include/bits/types.h
|  |- /usr/include/features.h
|  |- /usr/include/libio.h
|  `- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h
|- 2
|  |- /usr/include/_G_config.h
|  |- /usr/include/bits/typesizes.h
|  |- /usr/include/bits/wordsize.h
|  |- /usr/include/gnu/stubs.h
|  |- /usr/include/sys/cdefs.h
|  |- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stdarg.h
|  `- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h
|- 3
|  |- /usr/include/gconv.h
|  |- /usr/include/wchar.h
|  `- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h
|- 4
|  |- /usr/include/bits/wchar.h
|  |- /usr/include/wchar.h
|  `- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h
`- 5
   `- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h

'/usr/include/stdio.h' included files:
|- /usr/include/_G_config.h
|- /usr/include/bits/stdio_lim.h
|- /usr/include/bits/sys_errlist.h
|- /usr/include/bits/types.h
|- /usr/include/bits/typesizes.h
|- /usr/include/bits/wchar.h
|- /usr/include/bits/wordsize.h
|- /usr/include/features.h
|- /usr/include/gconv.h
|- /usr/include/gnu/stubs.h
|- /usr/include/libio.h
|- /usr/include/sys/cdefs.h
|- /usr/include/wchar.h
|- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stdarg.h
`- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h

'/usr/include/stdio.h' included files tree:
|- /usr/include/bits/stdio_lim.h
|- /usr/include/bits/sys_errlist.h
|- /usr/include/bits/types.h
|  |- /usr/include/bits/typesizes.h
|  |- /usr/include/bits/wordsize.h
|  `- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h
|- /usr/include/features.h
|  |- /usr/include/gnu/stubs.h
|  `- /usr/include/sys/cdefs.h
|- /usr/include/libio.h
|  |- /usr/include/_G_config.h
|  |  |- /usr/include/gconv.h
|  |  |  |- /usr/include/wchar.h
|  |  |  |  |- /usr/include/bits/wchar.h
|  |  |  |  `- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h
|  |  |  `- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h
|  |  |- /usr/include/wchar.h
|  |  `- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h
|  `- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stdarg.h
`- /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/include/stddef.h

DESCRIPTION

Extract dependency trees from c files.

MEMBER FUNCTIONS

Depend

Depend calls cpp (the c pre-processor) to extract all the included files.

Returns

  • Success flag

  • A reference to a hash where the included files are sorted perl level. A file can appear at different levels

  • A reference to a hash with one file per entry

  • A reference to a hash representing an include tree

  • A string containing an error message, if any

Arguments

  • the name of the 'cpp' binary to use. undef to use the first 'cpp' in your path

  • The name of the file to depend

  • A string to be passed to cpp, ex: '-DDEBUG'

  • A boolean indicating if the system include files should be included in the result (anything under /usr/)

  • a sub reference to be called everytime a node is added (see depender.pl for an example)

  • A boolean indicating if the output of cpp should be dumped on the screen

This sub is a wrapper around RunAndParse.

RunAndParse

This sub runs a, preprocessor, command passed as an argument and parses its output. The output is expected to follow the cpp output format. This sub allows finer control of the preprocessing. Try Depend first.

CollapsePath

Removes '.' and '..' from a path.

EXPORT

$PreprocessorDepend, a scalar containing a reference to the Depend sub.

DEPENDENCIES

cpp.

AUTHOR

Khemir Nadim ibn Hamouda
CPAN ID: NKH
mailto:nadim@khemir.net
http:// no web site

COPYRIGHT

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

SEE ALSO

PerlBuldSystem.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 225:

Unknown directive: =comment