GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  C::SCAN (3)

.ds Aq ’

NAME

C::Scan - scan C language files for easily recognized constructs.

CONTENTS

SYNOPSIS



  $c = new C::Scan filename => $filename, filename_filter => $filter,
                   add_cppflags => $addflags;
  $c->set(includeDirs => [$Config::Config{shrpdir}]);

  my $fdec = $c->get(parsed_fdecls);



DESCRIPTION

<B>This description is B>VERY<B> incomplete.B>

This module uses Data::Flow interface, thus one uses it in the following fashion:



  $c = new C::Scan(attr1 => $value1, attr2 => $value2);
  $c->set( attr3 => $value3 );

  $value4 = $c->get(attr4);



Attributes are depending on some other attributes. The only required attribute, i.e., the attribute which should be set, is filename, which denotes which file to parse.

All other attributes are either optional, or would be calculated basing on values of required and optional attributes.

    Output attributes

includes Value: reference to a list of included files.
defines_args Value: reference to hash of macros with arguments. The values are references to an array of length 2, the first element is a reference to the list of arguments, the second one being the expansion. Newlines are not unescaped, thus



  #define C(x,y) E\
                 F



will finish with ("C" => [ ["x", "y"], "E\nF"]).

defines_no_args Value: reference to hash of macros without arguments. Newlines are not escaped, thus



  #define A B



will finish with ("A" => "B").

fdecls Value: reference to list of declarations of functions.
inlines Value: reference to list of definitions of functions.
parsed_fdecls Value: reference to list of parsed declarations of functions.

A parsed declaration is a reference to a list of (rt, nm, args, ft, mod). Here rt is return type of a function, nm is the name, args is the list of arguments, ft is the full text of the declaration, and mod is the modifier (which is always undef).

Each entry in the list args is of the same form (ty, nm, args, ft, mod), here ty is the type of an argument, nm is the name (a generated one if missing in the declaration), args is undef, and mod is the string of array modifiers.

typedef_hash Value: a reference to a hash which contains known typedefs as keys. Values of the hash are array references of length 2, with what should be put before/after the type for a standalone typedef declaration (but without the typedef substring).

Parse uses naive heuristics.

typedef_texts Value: a reference to a list which contains known expansions of typedefs.
typedefs_maybe Value: a reference to a list of typedefed names. Heuristics are used.
vdecls Value: a reference to a list of extern variable declarations.
vdecl_hash Value: a reference to a hash of parsed extern variable declarations, containing the variable names as keys. Values of the hash are array references of length 2, with what should be put before/after the name for a standalone extern variable declaration (but without the extern substring).
typedef_structs Value: a reference to a hash of parsed struct declarations from typedefs. Keys are typedefed names, values are undef if not a struct or union, else an array reference of definitions of the elements of the structure; each definition is itself an array reference of length 3, consisting of what should be put before/after the name for a standalone variable declaration, followed by the name of the element. Anonymous structs and unions used within the definitions are given an arbitrary name including the string ANON, and referred to using that name.
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 SCAN (3) 2000-03-23

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.