Update of /cvsroot/net-script/netscript2/src/perl/NetScript
In directory usw-pr-cvs1:/tmp/cvs-serv6134
Modified Files:
Interpreter.pm
Log Message:
* added support for classes and methods
* did a complete rewrite of the variable system
* various bugfixes
Index: Interpreter.pm
===================================================================
RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Interpreter.pm,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** Interpreter.pm 7 Jul 2002 14:34:48 -0000 1.10
--- Interpreter.pm 11 Jul 2002 22:03:09 -0000 1.11
***************
*** 110,114 ****
use XML::DOM2::DOMWriter;
use XML::DOM2::XMLDOMWriterStyle;
!
--- 110,114 ----
use XML::DOM2::DOMWriter;
use XML::DOM2::XMLDOMWriterStyle;
! use Carp qw(cluck);
***************
*** 149,155 ****
--- 149,160 ----
$this -> { m_currentState } =
NetScript::Engine::State -> new();
+ $this -> { m_globalState } =
+ $this -> { m_currentState };
$this -> { m_ScriptURL } = undef;
$this -> { m_DOMParser } = XML::DOM2::DOMParser -> new();
+ my @stateTrees = ();
+ $this -> { m_stateTrees } = \@stateTrees;
+
my $eventListener = NetScript::Engine::EventListener -> new();
$eventListener -> init( $FATAL_EVENT, "onFatalEvent", $this,
***************
*** 168,171 ****
--- 173,177 ----
$libLoader -> loadLibrary( "Variables" );
$libLoader -> loadLibrary( "Forms" );
+ $libLoader -> loadLibrary( "Class" );
my $systemWrapper = NetScript::Engine::ClassWrapper -> new( $this );
***************
*** 174,179 ****
# register the SYS-object
! $this -> getState() -> createObjectValue( "SYS", $systemWrapper );
!
return $this; # return Object
}
--- 180,187 ----
# register the SYS-object
! $this -> getStatementEvaluator() -> createVariable( "SYS", $systemWrapper );
!
! # basic init is done - save the global state by putting a new state over it
! $this -> newStateTree();
return $this; # return Object
}
***************
*** 397,400 ****
--- 405,420 ----
#/**
+ # Creates a new state tree on base of the global state.
+ # @public
+ #*/
+ sub newStateTree {
+ my ( $this ) = @_;
+ my $oldState = $this -> getState();
+ push( @{$this -> { m_stateTrees }}, $oldState );
+ my $newState = NetScript::Engine::State -> new( $this -> { m_globalState } );
+ $this -> { m_currentState } = $newState;
+ }
+
+ #/**
# Drops the current state and sets its parent
# as new current state.
***************
*** 407,410 ****
--- 427,441 ----
}
+ #/**
+ # Drops the current state tree and sets its predecessor as new
+ # current state.
+ # @public
+ #*/
+ sub dropStateTree {
+ my ( $this ) = @_;
+ my $pred = pop( @{ $this -> { m_stateTrees } } );
+ $this -> { m_currentState } = $pred;
+ }
+
#----------------------------------------------------------------
# Message Handling
***************
*** 422,426 ****
sub onFatalEvent {
my ($this, $event ) = @_;
!
# Check for mod_perl
if ( $this -> { m_Request } ) {
--- 453,457 ----
sub onFatalEvent {
my ($this, $event ) = @_;
! cluck "ERROR!";
# Check for mod_perl
if ( $this -> { m_Request } ) {
|