Parrot::Pmc2c - PMC to C Code Generation
use Parrot::Pmc2c;
Parrot::Pmc2c (and the subclasses defined in this file) is used by tools/build/pmc2c.pl to generate C code from PMC files.
Parrot::Pmc2c
does_write($method, $section)
Returns whether a method writes.
count_newlines($string)
Returns the number of newlines (\n) in $string.
\n
$string
dont_edit($pmcfile)
Returns the "DO NOT EDIT THIS FILE" warning text. $pmcfile is the name of the original source *.pmc file.
$pmcfile
gen_ret($method, $body)
Generate the C code for a return statement, if the body is empty then make a cast if needed.
return
This method is imported by subclasses.
class_name($self, $class)
Returns the appropriate Parrot::Pmc2c subclass for the PMC ($self->{class}). $self is the hash reference passed to new(), and $class is Parrot::Pmc2c.
$self->{class}
$self
new()
$class
dynext_load_code($library_name, %classes)
$library_name is the name of the dynamic library to be created.
$library_name
%classes is a map from the PMC names for which code is to be generated, to dump info (PMC metadata).
%classes
This function is exported.
new($self, $opt)
Returns $self as a new instance.
$self is a hash reference eval-ed from a *.dump file generated by src/classes/pmc2c.pl from a *.pmc file. It is bless-ed either into Parrot::Pmc2c::::Standard, or into one of the other special PMCs: default, delegate, Null, Ref or SharedRef.
eval
bless
Parrot::Pmc2c::::Standard
delegate
Null
Ref
SharedRef
$opt is a hash reference.
$opt
line_directive($self,$line,$file)
Generates the C pre processor string for a #line directive, or an empty string if $self-{opt}{nolines}> is true.
$self-
line_directive_here($self,$output,$file)
Generates the C pre processor string for a #line directive to reset the compiler's line number to the next physical line in the output.
get_vtable_section()
Creates a hash of all the method names containing vtable section. Called from init().
init()
make_const($class)
If the PMC had its const_too flag set then this method is called in init() to to create the read-only set methods.
const_too
init($class)
Initializes the instance. $class is its class.
decl($classname, $method, $for_header)
Returns the C code for the PMC method declaration. $for_header indicates whether the code is for a header or implementation file.
$for_header
includes()
Returns the C #include for the header file of each of the PMC's superclasses.
#include
full_arguments($args)
Prepends INTERP, SELF to $args.
INTERP, SELF
$args
proto($type,$parameters)
Determines the prototype (argument signature) for a method body (see src/call_list).
rewrite_nci_method($class, $method, $super, $super_table)
Rewrites the method body performing the various macro substitutions for nci method bodies (see src/classes/pmc2c.pl).
rewrite_vtable_method($class, $method, $super, $super_table)
Rewrites the method body performing the various macro substitutions for vtable method bodies (see src/classes/pmc2c.pl).
body($method, $line, $out_name)
Returns the C code for the method body. $line is used to accumulate the number of lines, $out_name is the name of the output file we are generating.
$line
$out_name
methods($line, $out_name)
Returns the C code for the vtable methods. $line is used to accumulate the number of lines, $out_name is the name of the output file we are generating.
lib_load_code()
Returns the C code for loading a library.
pmc_is_dynpmc
Determines if a given PMC type is dynamically loaded or not.
init_func()
Returns the C code for the PMC's initialization method, or an empty string if the PMC has a no_init flag.
no_init
gen_c($out_name)
Generates the C implementation file code for the PMC. $out_name is the name of the output file we are generating.
hdecls()
Returns the C code function declarations for all the methods for inclusion in the PMC's C header file.
TODO include MMD variants.
gen_h($out_name)
Generates the C header file code for the PMC. $out_name is the name of the output file we are generating.
implements($method)
True if this class generates code for the method $method.
$method
implements_vtable($method)
True if this class generates code for VTABLE method $method.
Standard behavior.
Returns the C code for the method body.
Always true for vtables.
Overrides the default implementation to direct all unknown methods to the thing referred to.
SharedRef is like Ref but with locking.
gen_ret($type)
Generate the C code for a return statement.
Overrides the default implementation to perform locking.
Always true.
Overrides the default implementation to throw an execption for unknown methods.
True for vtable methods.
The Null PMC throws an execption for all methods.
True for vtables.
trans($type)
Used in signature() to normalize argument types.
signature()
signature($params)
Returns the method signature for $params.
$params
The delegate PMC redirects all methods to bytecode.
Overrides the default implementation to direct all unknown methods to the PMC in the first attribute slot.
To install Ruby, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Ruby
CPAN shell
perl -MCPAN -e shell install Ruby
For more information on module installation, please visit the detailed CPAN module installation guide.