NAME

B::JVM::Jasmin::CompileState - Internal package used by B::JVM::Jasmin to keep state of compilation

SYNOPSIS

use B::JVM::Jasmin::CompileState;

my $state = new B::JVM::Jasmin::CompileState([HASHREF]);

DESCRIPTION

This class is used to store the internal state of the compiler as it runs. Certain global information must be accounted for, and instead of making a bunch of global variables, I thought it would be better to keep track of this via a sub-package.

AUTHOR

Bradley M. Kuhn, bkuhn@ebb.org, http://www.ebb.org/bkuhn

COPYRIGHT

Copyright (C) 1999, Bradley M. Kuhn, All Rights Reserved.

LICENSE

You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the LICENSE file that was shipped with this distribution.

SEE ALSO

perl(1), jasmin(1), B::JVM::Jasmin(3).

DETAILED DOCUMENTATION

B::JVM::Jasmin::CompileState Package Variables

$VERSION

Version number of B::JVM::Jasmin::CompileState. It should always match the version of B::JVM::Jasmin

@ISA

Canonical @ISA array, derives from nothing

Modules used by B::JVM::Jasmin::CompileState

Carp

Used for error reporting

File::Spec::Functions

Used to do some operations on files

IO::File

used for creating lexically scoped file handles

B::JVM::Jasmin::Emit

Needed for creating emitter objects for output

Methods in B::JVM::Jasmin::CompileState

B::JVM::Jasmin::CompileState::new

usage: B::JVM::Jasmin::CompileState::new(HASHREF)

Creates a new object of the class. First, it checks for the validity of the keys of the given initialization package (valid keys are kept in @validUserParameters), and if everything checks out, it sets up a few defaults if none were given and returns the blessed object.

Accepted User Parameters:

mainClassName

The name to be used for the Java class that will correspond to the "main::" package. Defaults to "Main" if none is given.

currentPackage

This is the current package being compiled. Should be updated by the user using the setCurrentPackage method. There is really no need to initialize it until compilation starts. Consequently, the value defaults to undef.

outputDirectory

A directory to use for creation of output files. Defaults to the current working directory.

keepIntermediateFiles

If true, intermediate files that are generated during the compilation process are kept for user inspection.

B::JVM::Jasmin::CompileState::createNewFile

usage: $obj->createNewFile($packageName, [$className])

Creates a new file entry in the compiler state object and opens a new file handle for use when writing out jasmin files. If the file has already been created, nothing is done. This is typically called whenever a new package is discovered, so that a seperate class file can be generated for that package (class) in True Java Style (TM) :)

B::JVM::Jasmin::CompileState::emit

usage: $obj->emit([PACAKGE_NAME])

returns the emitter object associated with the given package, PACAKGE_NAME. If PACKAGE_NAME is missing, then the emitter object of the currentPackage is returned

B::JVM::Jasmin::CompileState::setCurrentMethod

usage: $obj->setCurrentMethod($methodName)

Set the current method to be $methodName

B::JVM::Jasmin::CompileState::setCurrentPackage

usage: $obj->setCurrentPackage($packageName)

Set the current package to be $packageName

B::JVM::Jasmin::CompileState::clearCurrentMethod

usage: $obj->clearCurrentMethod()

Clear the current method name stored

B::JVM::Jasmin::CompileState::getCurrentMethod

usage: $obj->getCurrentMethod()

Return the current method

B::JVM::Jasmin::CompileState::DESTORY

usage: $obj->DESTROY()

Default destructor for the object