The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
	Changed to use Data::Flow, strips extern from function declarations.
	Can reliably restrict attention to some included file. 
	Cpp no longer ignored.
	Will not bark if an argument to a function is an array.
	Minor misprint corrected. 
	Minimal documentation added.
	Made new() use two arg version of bless to allow subclassing
	Made C::Scan a subclass of Data::Flow.
	Added new attributes defines_full, defines_args_full, and
           defines_no_args_full which use cpp -dM to get fully
           resolved #defines.
	Added $C::Scan::MACROS_ONLY which defaults to '-dM'
	Fixed up a bit to output to a file, and to give more
	   standard testing output.
	Fixed regexp bug that didn't allow macros with any space
	   between the end of the argument list and the beginning of
	   the body section, e.g. #define FOO_NAME(bar)((BAZ*) fooBAR(bar))->baz
	   which is a legal macro.
	Fixed regexp bug which did TOO minimal a match on some
	  argument lists.
	Un-fixed bugfix in 0.4 that actually broke procesing
	Added '__const' to list of keywords (which was the appropriate
          way to fix the previously mentioned bug).
	Fixed EMX 0.9d "feature" that include file names have \\ in them.
	Add PREREQ_PM.  (Thanks to Michael G Schwern.)
	Handle glibc-style gcc int32_t declarations.
	  (Thanks to Michael G Schwern.)
	Change POSIX to Symbol.  (Thanks to Mike Blazer.)
	Include C9X keywords.
0.61:	String and char literals were processed by (...)+, thus $1
	contained the last char only.
	The leading '/' in comments was not counted in the length.
	(Thanks to Martin Cowie and Steven Knight for reporting and
	fixing these problems.)
	New attribute typedefs_whited (used by typedefs_maybe).
	Remove trailing semicolons from typedefs.
	Handle predeclarations (such as struct foo;).
	Another attempt to remove $` etc.
	Parse typedefs.
	typedef_hash's has reasonable values.
0.71:	Recognize that a list of function arguments may look like (int);
	There was a REx quadratic in the length of input.
	Allow for '__extension__ typedef' syntax (what does it mean?).
0.72:	Updates by Hugo <>:
	  implement a new attribute 'typedef_structs'
	  - adds one recipe, and two functions 'typedef_structs'
	    and 'parse_struct'
	  modifies the attribute 'typedef_texts' to remove #directives
	  modifies the function 'typedef_texts' to avoid an unnecessary
	    array copy
	  modifies the function 'whited_decls' to white out the '+' character
            within '[...]'. (A proper fix here would handle all legal
	    expressions between the brackets, but that is well beyond the scope
	    of this patch.)
	  corrects the typo 'interwening'
	  corrects the regexp matching continuation lines in function 'sanitize'.
	Related updates to documentation (unfinished, since not explained), 
	  related updates to the test suite.
	Bug: Test produces typedef_structs which looks meaningless, such as
		'typedef_hash' => HASH(0xbf440)
		   '__fsid_t' => ARRAY(0x1298c8)
		      0  ' struct
    int __val[2];
  } '
		      1  ''
		'typedef_structs' => HASH(0xc64d0)
		   '__fsid_t' => ARRAY(0x149f64)
		      0  ARRAY(0x149f7c)
		         0  'int __val [ 2'
		         1  '];'
0.73:	Updates by Hugo <>:
	  implement a new attribute 'vdecls_hash'
	  cleanup and fix implementation of 'typedef_structs' (fixes above bug)
	Related updates to documentation and test suite
	  vdecls_hash test produces no output with current test file
0.74:	Updates by Hugo <>:
	  fix regexp bug that misparses pointers