------------------------------------------------------------------------------
--                                                                          --
--                          ASIStint COMPONENTS                             --
--                                                                          --
--                A S I S T I N T . E N U M _ M A P P I N G                 --
--                                                                          --
--                                 B o d y                                  --
--                                                                          --
--            Copyright (c) 1997, Free Software Foundation, Inc.            --
--                                                                          --
-- ASIStint is free software; you can redistribute  it  and/or  modify  it  --
-- under terms of the GNU General Public License  as published by the  Free --
-- Software Foundation;  either version 2,  or  (at your option)  any later --
-- version.  ASIStint  is distributed  in the hope  that it will be useful, --
-- but  WITHOUT  ANY  WARRANTY;  without even the implied warranty of  MER- --
-- CHANTABILITY or  FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General --
-- Public License for more details.  You should have received a copy of the --
-- GNU General Public License  distributed with ASIStint; see file COPYING. --
-- If not, write to the  Free  Software  Foundation,  59 Temple Place Suite --
-- 330, Boston, MA 02111-1307, USA.                                         --
--                                                                          --
-- ASIStint  was  originally  developed  by  the  ASIS-for-GNAT team at the --
-- Software Engineering  Laboratory  of  the  Swiss  Federal  Institute  of --
-- Technology (LGL-EPFL) in Lausanne, Switzerland, in cooperation with  the --
-- Scientific  Research  Computer  Center  of Moscow State University (SRCC --
-- MSU), Russia.                                                            --
--                                                                          --
-- This work was supported by a  grant  from  the  Swiss  National  Science --
-- Foundation, no 7SUPJ048247, funding a project entitled  "Development  of --
-- ASIS for GNAT with industry quality".                                    --
------------------------------------------------------------------------------

with Asis;
with Asis.Compilation_Units;
with Asis.Elements;
with Asis.Errors;
with Asis.Implementation;

package body ASIStint.Enum_Mapping is

------------------------------------------------------------------------------
-- Mapping of ASIS queries that return enumeration types
------------------------------------------------------------------------------

  function Status
    return Wide_String is
  begin
    return Asis.Errors.Error_Kinds'Wide_Image(
             Asis.Implementation.Status );
  end;

  function Unit_Kind (Compilation_Unit : in Asis.Compilation_Unit)
    return Wide_String is
  begin
    return Asis.Unit_Kinds'Wide_Image(
             Asis.Compilation_Units.Unit_Kind (Compilation_Unit) );
  end;

  function Unit_Class (Compilation_Unit : in Asis.Compilation_Unit)
    return Wide_String is
  begin
    return Asis.Unit_Classes'Wide_Image(
             Asis.Compilation_Units.Unit_Class (Compilation_Unit) );
  end;

  function Unit_Origin (Compilation_Unit : in Asis.Compilation_Unit)
    return Wide_String is
  begin
    return Asis.Unit_Origins'Wide_Image(
             Asis.Compilation_Units.Unit_Origin (Compilation_Unit) );
  end;

  function Element_Kind (Element : in Asis.Element)
    return Wide_String is
  begin
    return Asis.Element_Kinds'Wide_Image(
             Asis.Elements.Element_Kind (Element) );
  end Element_Kind;

  function Pragma_Kind (Pragma_Element : Asis.Pragma_Element)
    return Wide_String is
  begin
    return Asis.Pragma_Kinds'Wide_Image(
             Asis.Elements.Pragma_Kind (Pragma_Element) );
  end Pragma_Kind;

  function Defining_Name_Kind (Defining_Name : in Asis.Defining_Name)
    return Wide_String is
  begin
    return Asis.Defining_Name_Kinds'Wide_Image(
             Asis.Elements.Defining_Name_Kind (Defining_Name) );
  end Defining_Name_Kind;

  function Declaration_Kind (Declaration : in Asis.Declaration)
    return Wide_String is
  begin
    return Asis.Declaration_Kinds'Wide_Image(
             Asis.Elements.Declaration_Kind (Declaration) );
  end Declaration_Kind;

  function Trait_Kind (Element : in Asis.Element)
    return Wide_String is
  begin
    return Asis.Trait_Kinds'Wide_Image(
             Asis.Elements.Trait_Kind (Element) );
  end Trait_Kind;

  function Declaration_Origin (Declaration : in Asis.Declaration)
    return Wide_String is
  begin
    return Asis.Declaration_Origins'Wide_Image(
             Asis.Elements.Declaration_Origin(Declaration) );
  end Declaration_Origin;

  function Mode_Kind (Declaration : in Asis.Declaration)
    return Wide_String is
  begin
    return Asis.Mode_Kinds'Wide_Image(
             Asis.Elements.Mode_Kind(Declaration) );
  end Mode_Kind;

  function Default_Kind (Declaration : in Asis.Generic_Formal_Parameter)
    return Wide_String is
  begin
    return Asis.Subprogram_Default_Kinds'Wide_Image(
             Asis.Elements.Default_Kind (Declaration) );
  end Default_Kind;

  function Definition_Kind (Definition : in Asis.Definition)
    return Wide_String is
  begin
    return Asis.Definition_Kinds'Wide_Image(
             Asis.Elements.Definition_Kind(Definition) );
  end Definition_Kind;

  function Type_Kind (Definition : in Asis.Type_Definition)
    return Wide_String is
  begin
    return Asis.Type_Kinds'Wide_Image(
             Asis.Elements.Type_Kind (Definition) );
  end Type_Kind;

  function Formal_Type_Kind (Definition : in Asis.Formal_Type_Definition)
    return Wide_String is
  begin
    return Asis.Formal_Type_Kinds'Wide_Image(
             Asis.Elements.Formal_Type_Kind (Definition) );
  end Formal_Type_Kind;

  function Access_Type_Kind (Definition : in Asis.Access_Type_Definition)
    return Wide_String is
  begin
    return Asis.Access_Type_Kinds'Wide_Image(
             Asis.Elements.Access_Type_Kind (Definition) );
  end Access_Type_Kind;

  function Root_Type_Kind (Definition : in Asis.Root_Type_Definition)
    return Wide_String is
  begin
    return Asis.Root_Type_Kinds'Wide_Image(
             Asis.Elements.Root_Type_Kind (Definition) );
  end Root_Type_Kind;

  function Constraint_Kind (Definition : in Asis.Constraint)
    return Wide_String is
  begin
    return Asis.Constraint_Kinds'Wide_Image(
             Asis.Elements.Constraint_Kind(Definition) );
  end Constraint_Kind;

  function Discrete_Range_Kind (Definition : in Asis.Discrete_Range)
    return Wide_String is
  begin
    return Asis.Discrete_Range_Kinds'Wide_Image(
             Asis.Elements.Discrete_Range_Kind (Definition) );
  end Discrete_Range_Kind;

  function Expression_Kind (Expression : in Asis.Expression)
    return Wide_String is
  begin
    return Asis.Expression_Kinds'Wide_Image(
             Asis.Elements.Expression_Kind (Expression) );
  end Expression_Kind;

  function Operator_Kind (Element : in Asis.Element)
    return Wide_String is
  begin
    return Asis.Operator_Kinds'Wide_Image(
             Asis.Elements.Operator_Kind (Element) );
  end Operator_Kind;

  function Attribute_Kind (Expression : in Asis.Expression)
    return Wide_String is
  begin
    return Asis.Attribute_Kinds'Wide_Image(
             Asis.Elements.Attribute_Kind (Expression) );
  end Attribute_Kind;

  function Association_Kind (Association : in Asis.Association)
    return Wide_String is
  begin
    return Asis.Association_Kinds'Wide_Image(
             Asis.Elements.Association_Kind (Association) );
  end Association_Kind;

  function Statement_Kind (Statement : in Asis.Statement)
    return Wide_String is
  begin
    return Asis.Statement_Kinds'Wide_Image(
             Asis.Elements.Statement_Kind (Statement) );
  end Statement_Kind;

  function Path_Kind (Path : in Asis.Path)
    return Wide_String is
  begin
    return Asis.Path_Kinds'Wide_Image(
             Asis.Elements.Path_Kind (Path) );
  end Path_Kind;

  function Clause_Kind (Clause : in Asis.Clause)
    return Wide_String is
  begin
    return Asis.Clause_Kinds'Wide_Image(
             Asis.Elements.Clause_Kind (Clause) );
  end Clause_Kind;

  function Representation_Clause_Kind (Clause : in Asis.Representation_Clause)
    return Wide_String is
  begin
    return Asis.Representation_Clause_Kinds'Wide_Image(
             Asis.Elements.Representation_Clause_Kind(Clause) );
  end Representation_Clause_Kind;

--PTI Template for further extensions
--
--    return Wide_String is
--  begin
--    'Wide_Image(
--             Asis. );
--  end ;

end ASIStint.Enum_Mapping;