12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package processor;
- import java.util.HashMap;
- /**
- * a frame containing variables.
- * can be used for storing variables and/or for pushing them to the stack.
- * @author kolja
- *
- */
- public class StackFrame {
- /**
- * whether the frame belongs to a function or a loop.
- * @author kolja
- *
- */
- public enum FrameType {
- FUNCTION,
- LOOP
- }
-
- private HashMap< String, Object > data;
- private FrameType type;
-
- public StackFrame( FrameType type )
- {
- this.type = type;
- data = new HashMap< String, Object >();
- }
-
- public FrameType getType()
- {
- return type;
- }
-
- public <T> void declare( String name, T value )
- {
- if( data.containsKey( name ) )
- throw new IllegalStateException( "Variable is already declared" );
- data.put( name, (Object)value );
- }
-
- public <T> void set( String name, T value )
- {
- data.put( name, (Object)value );
- }
-
- public void undeclare( String name )
- {
- data.remove( name );
- }
-
- public boolean isDefined( String name )
- {
- return data.containsKey( name );
- }
-
- @SuppressWarnings("unchecked")
- public <T> T get( String name )
- {
- return (T)data.get( name );
- }
- }
|