with Ada.Containers; use Ada.Containers;
with Ada.Containers.Doubly_Linked_Lists;
with Objects; use Objects;
package Scripting.Statements is
type Statement is abstract new Limited_Object with private;
type A_Statement is access all Statement'Class;
procedure Evaluate( this : access Statement;
context : not null A_Eval_Context ) is abstract;
procedure Delete( this : in out A_Statement );
pragma Postcondition( this = null );
package Statement_Lists is new Ada.Containers.Doubly_Linked_Lists( A_Statement, "=" );
procedure Delete_Contents( statements : in out Statement_Lists.List );
pragma Postcondition( Statement_Lists.Length( statements ) = 0 );
private
type Statement is abstract new Limited_Object with null record;
end Scripting.Statements;