with Ada.Characters.Latin_1; private with Ada.Strings.Unbounded, Ada.Strings.Maps; package Scanners is -- This package roughly corresponds to -- the Java StringTokenizer class. -- At the moment the most significant difference -- is that the Next_Token function does not raise -- an exception if there are no tokens to return. --- Instead, it returns an empty string. type Scanner is tagged private; Default_Delimiters : constant String := Ada.Characters.Latin_1.HT & Ada.Characters.Latin_1.LF & Ada.Characters.Latin_1.FF & Ada.Characters.Latin_1.CR & " "; function Create (Input : in String; Delimiters : in String := Default_Delimiters; Return_Delims : in Boolean := False) return Scanner; function Has_More_Tokens (This : in Scanner) return Boolean; function Next_Token (This : in out Scanner) return String; function Remaining_Token_Count (This : in Scanner) return Natural; procedure Reset (This : in out Scanner); private package UB renames Ada.Strings.Unbounded; package SM renames Ada.Strings.Maps; Default_Delimiter_Set : constant SM.Character_Set := SM.To_Set (Default_Delimiters); type Scanner is tagged record Text : UB.Unbounded_String := UB.Null_Unbounded_String; Position : Positive := 1; Next_Start : Positive := 1; Next_Finish : Natural := 0; Delimiters : SM.Character_Set := SM.Null_Set; Return_Delims : Boolean := False; end record; end Scanners;