private with Ada.Strings.Unbounded;
package Scripting.Expressions.Functions is
type Function_Call is new Expression with private;
type A_Function is access all Function_Call'Class;
function Create_Function( name : not null A_Identifier_Token ) return A_Function;
pragma Postcondition( Create_Function'Result /= null );
function Evaluate( this : access Function_Call;
context : not null A_Eval_Context ) return Value_Ptr;
function Get_Name( this : not null access Function_Call'Class ) return String;
procedure Set_Arguments( this : not null access Function_Call'Class;
arguments : in out Expression_Lists.List );
private
use Ada.Strings.Unbounded;
type Function_Call is new Expression with
record
name : Unbounded_String;
arguments : Expression_Lists.List;
end record;
procedure Construct( this : access Function_Call;
loc : Token_Location;
name : String );
procedure Delete( this : in out Function_Call );
end Scripting.Expressions.Functions;