-- -- Copyright (C) 2022-2023, AdaCore -- -- SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -- -- This package provides access to command line arguments as parsed options. with Ada.Containers.Vectors; with VSS.Strings; with VSS.String_Vectors; package VSS.Command_Line is type Name_Value is record Name : VSS.Strings.Virtual_String; Value : VSS.Strings.Virtual_String; end record; package Name_Value_Vectors is new Ada.Containers.Vectors (Positive, Name_Value); type Abstract_Option is abstract tagged record Description : VSS.Strings.Virtual_String; end record; type Positional_Option is new Abstract_Option with record Name : VSS.Strings.Virtual_String; end record; type Named_Option is abstract new Abstract_Option with record Short_Name : VSS.Strings.Virtual_String; Long_Name : VSS.Strings.Virtual_String; end record; type Binary_Option is new Named_Option with null record; type Value_Option is new Named_Option with record Value_Name : VSS.Strings.Virtual_String; end record; type Name_Value_Option is new Named_Option with record Name_Name : VSS.Strings.Virtual_String; Value_Name : VSS.Strings.Virtual_String; end record; procedure Add_Option (Option : Abstract_Option'Class); procedure Add_Help_Option; -- Adds builtin definition of the option to display help information. This -- option is handled automatically. procedure Process; -- Parse command line. If error is found then report it and terminate -- application. function Is_Specified (Option : Abstract_Option'Class) return Boolean; -- Return True when given option has been specified the command line. function Value (Option : Positional_Option'Class) return VSS.Strings.Virtual_String; -- Return value of the given option. function Value (Option : Value_Option'Class) return VSS.Strings.Virtual_String; -- Return value of the given option. function Values (Option : Value_Option'Class) return VSS.String_Vectors.Virtual_String_Vector; -- Return all values of the given option specified in the command line. function Values (Option : Name_Value_Option'Class) return Name_Value_Vectors.Vector; -- Return all name=value pairs of the given option specified in the -- command line. function Positional_Arguments return VSS.String_Vectors.Virtual_String_Vector; -- Return list of positional arguments. procedure Report_Error (Message : VSS.Strings.Virtual_String) with No_Return; -- Report error and terminate application. private function Unique_Name (Self : Named_Option'Class) return VSS.Strings.Virtual_String; end VSS.Command_Line;