From: Jan T. <de...@us...> - 2002-07-11 22:03:13
|
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 } ) { |