----------------------------------------------------------------------- -- el-variables-default -- Default Variable Mapper -- Copyright (C) 2009, 2010, 2011, 2018, 2021 Stephane Carrez -- Written by Stephane Carrez (Stephane.Carrez@gmail.com) -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. ----------------------------------------------------------------------- private with Ada.Strings.Unbounded; private with Ada.Containers.Hashed_Maps; private with Ada.Strings.Unbounded.Hash; package EL.Variables.Default is -- Default Variable Mapper type Default_Variable_Mapper is new Variable_Mapper with private; overriding procedure Bind (Mapper : in out Default_Variable_Mapper; Name : in String; Value : in EL.Objects.Object); overriding function Get_Variable (Mapper : Default_Variable_Mapper; Name : Unbounded_String) return EL.Expressions.Expression; overriding procedure Set_Variable (Mapper : in out Default_Variable_Mapper; Name : in Unbounded_String; Value : in EL.Expressions.Expression); -- Set the next variable mapper that will be used to resolve a variable if -- the current variable mapper does not find a variable. procedure Set_Next_Variable_Mapper (Mapper : in out Default_Variable_Mapper; Next_Mapper : in Variable_Mapper_Access); private use type EL.Expressions.Expression; package Variable_Maps is new Ada.Containers.Hashed_Maps (Key_Type => Unbounded_String, Element_Type => EL.Expressions.Expression, Hash => Ada.Strings.Unbounded.Hash, Equivalent_Keys => "="); type Default_Variable_Mapper is new Variable_Mapper with record Next_Mapper : Variable_Mapper_Access := null; Map : Variable_Maps.Map; end record; end EL.Variables.Default;