-- -- Copyright (C) 2024, AdaCore -- -- SPDX-License-Identifier: Apache-2.0 WITH LLVM-Exception -- with Ada.Containers.Indefinite_Holders; with Ada.Tags; with Ada.Text_IO; package body GPR2.Message.Reporter is package Holders is new Ada.Containers.Indefinite_Holders (Object'Class); Default : Text_Reporter; The_Reporter : Holders.Holder := Holders.To_Holder (Default); --------------------- -- Active_Reporter -- --------------------- function Active_Reporter return Object'Class is begin return The_Reporter.Element; end Active_Reporter; -------------------------------- -- Configure_Default_Reporter -- -------------------------------- procedure Configure_Default_Reporter (Use_Full_Pathname : Boolean := False; Level_Report_Format : Level_Format := Long) is use type Ada.Tags.Tag; begin if The_Reporter.Element'Tag = Text_Reporter'Tag then The_Reporter := Holders.To_Holder (Text_Reporter' (Full_Path => Use_Full_Pathname, Level_Fmt => Level_Report_Format)); end if; end Configure_Default_Reporter; ----------------------- -- Register_Reporter -- ----------------------- procedure Register_Reporter (Instance : Object'Class) is begin The_Reporter := Holders.To_Holder (Instance); end Register_Reporter; ------------ -- Report -- ------------ overriding procedure Report (Self : Text_Reporter; Message : GPR2.Message.Object) is use Ada.Text_IO; begin Put_Line ((case Message.Level is when Information | Lint => Current_Output, when Error | Warning => Current_Error), Message.Format (Self.Full_Path, Self.Level_Fmt)); end Report; overriding procedure Report (Self : Text_Reporter; Message : String) is use Ada.Text_IO; begin Put_Line (Current_Output, Message); end Report; end GPR2.Message.Reporter;