61 lines
1.4 KiB
Ada
61 lines
1.4 KiB
Ada
with
|
|
ada.Strings.unbounded;
|
|
|
|
|
|
package XML.Reader
|
|
is
|
|
use ada.Strings.unbounded;
|
|
|
|
|
|
type Parser is private;
|
|
|
|
function Create_Parser return Parser;
|
|
|
|
|
|
|
|
type Start_Element_Handler is access procedure (Name : in unbounded_String;
|
|
Atts : in XML.Attributes_view);
|
|
type End_Element_Handler is access procedure (Name : in unbounded_String);
|
|
|
|
|
|
procedure Set_Element_Handler (The_Parser : in Parser;
|
|
Start_Handler : in Start_Element_Handler;
|
|
End_Handler : in End_Element_Handler);
|
|
|
|
|
|
|
|
type Character_Data_Handler is access procedure (Data: in unbounded_String);
|
|
|
|
procedure Set_Character_Data_Handler (The_Parser : in Parser;
|
|
CD_Handler : in Character_Data_Handler);
|
|
|
|
|
|
|
|
procedure Parse (The_Parser : in Parser;
|
|
XML : in String;
|
|
Is_Final : in Boolean);
|
|
|
|
XML_Parse_Error : exception;
|
|
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
type XML_Parser_Ptr is access all Character; -- Essentially, C's "void *".
|
|
|
|
type Parser_Rec is
|
|
record
|
|
XML_Parser : XML_Parser_Ptr;
|
|
Start_Handler : Start_Element_Handler;
|
|
End_Handler : End_Element_Handler;
|
|
CD_Handler : Character_Data_Handler;
|
|
end record;
|
|
|
|
type Parser is access Parser_Rec;
|
|
|
|
-- pragma Linker_Options ("-lexpat");
|
|
|
|
end XML.Reader;
|