Parrot::Pmc2c - PMC to C Code Generation
use Parrot::Pmc2c;
Parrot::Pmc2c (and the subclasses defined in this file) is used by classes/pmc2c2.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
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 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
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.
dont_edit($pmcfile)
Returns the "DO NOT EDIT THIS FILE" warning text. $pmcfile is the name of the original source *.pmc file.
$pmcfile
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
rewrite_method($class, $method, $super, $super_table)
Rewrites the method body performing the various macro subsitiutions for vtable method bodies (see classes/pmc2c.pl).
body($method)
Returns the C code for the method body.
methods($line)
Returns the C code for the vtable methods. $line is used to accumulate the number of lines.
$line
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($file)
Generates the C implementation file code for the PMC.
$file is the name of the original source *.pmc file.
$file
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($file)
Generates the C header file code for the PMC.
implements($method)
True if this class generates code for $method.
$method
Standard behavior.
Overrides the default implementation to throw exception if the method writes.
Always true.
body($method, $line)
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.
Overrides the default implementation to throw an execption for unknown methods.
The Null PMC throws an execption for all methods.
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.
This class is a wrapper around a collection of PMCs linked in the same dynamic library. A degenerate case is having an unnamed library with just ne PMC, which is the case used by the Parrot core.
new($opt, $vtable_dump, %pmcs)
$library = Parrot::Pmc2c::Library->new ( $options, # hash refernce, the same passet to other constructors $vtable_dump, # vtable.dump pmc1 => $pmc1_dump, pmc2 => $pmc2_dump, ... );
Creates a new library object. If the $options hash contains a library key its value will be used for the library name.
$options
library
write_all_files()
Writes C and header files for all the PMCs in the library, plus <libname>.c and pmc_<libname>.h if his object represents a named library.
gen_h
Writes the header file for the library.
gen_c
Writes the C file for the library.
1 POD Error
The following errors were encountered while parsing the POD:
Unterminated C<...> sequence
To install Make, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Make
CPAN shell
perl -MCPAN -e shell install Make
For more information on module installation, please visit the detailed CPAN module installation guide.