------------------------------------------------------------------------------
--                                                                          --
--                An Ada2005 binding to the Qt C++ framework                --
--                                                                          --
------------------------------------------------------------------------------
--                                                                          --
-- Copyright © 2008-2010 Vadim Godunko <vgodunko@gmail.com>                 --
--                                                                          --
-- QtAda is free software;  you can  redistribute it and/or modify it under --
-- terms of the  GNU General Public License as published  by the Free Soft- --
-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
-- sion. QtAda is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
-- 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 QtAda;  see file COPYING.  If not, write --
-- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
-- Boston, MA 02110-1301, USA.                                              --
--                                                                          --
-- As a special exception,  if other files  instantiate  generics from this --
-- unit, or you link  this unit with other files  to produce an executable, --
-- this  unit  does not  by itself cause  the resulting  executable  to  be --
-- covered  by the  GNU  General  Public  License.  This exception does not --
-- however invalidate  any other reasons why  the executable file  might be --
-- covered by the  GNU Public License.                                      --
--                                                                          --
------------------------------------------------------------------------------
--    This file has been generated automatically. Please don't edit it.     --
------------------------------------------------------------------------------
private with Ada.Finalization;
with Interfaces.C;
with Qt4.IO_Devices;
with Qt4.Strings;
private with Qt_Ada.Internals.Value_Class_Sizes;
with System;

package Qt4.Dom_Nodes is

   --  QDomImplementation::InvalidDataPolicy

   type Dom_Invalid_Data_Policy is
    (Accept_Invalid_Chars,
     Drop_Invalid_Chars,
     Return_Null_Node);
   pragma Convention (C, Dom_Invalid_Data_Policy);
   for Dom_Invalid_Data_Policy'Size use Interfaces.C.unsigned'Size;

   --  QDomNode::EncodingPolicy

   type Encoding_Policy is
    (Encoding_From_Document,
     Encoding_From_Text_Stream);
   pragma Convention (C, Encoding_Policy);
   for Encoding_Policy'Size use Interfaces.C.unsigned'Size;
   for Encoding_Policy use
    (Encoding_From_Document    => 1,
     Encoding_From_Text_Stream => 2);

   --  QDomNode::NodeType

   type Dom_Node_Type is
    (Element_Node,
     Attribute_Node,
     Text_Node,
     CDATA_Section_Node,
     Entity_Reference_Node,
     Entity_Node,
     Processing_Instruction_Node,
     Comment_Node,
     Document_Node,
     Document_Type_Node,
     Document_Fragment_Node,
     Notation_Node,
     Base_Node,
     Character_Data_Node);
   pragma Convention (C, Dom_Node_Type);
   for Dom_Node_Type'Size use Interfaces.C.unsigned'Size;
   for Dom_Node_Type use
    (Element_Node                => 1,
     Attribute_Node              => 2,
     Text_Node                   => 3,
     CDATA_Section_Node          => 4,
     Entity_Reference_Node       => 5,
     Entity_Node                 => 6,
     Processing_Instruction_Node => 7,
     Comment_Node                => 8,
     Document_Node               => 9,
     Document_Type_Node          => 10,
     Document_Fragment_Node      => 11,
     Notation_Node               => 12,
     Base_Node                   => 21,
     Character_Data_Node         => 22);

   type Q_Dom_Implementation is tagged private;

   type Q_Dom_Named_Node_Map is tagged private;

   type Q_Dom_Node_List is tagged private;

   type Q_Dom_Node is tagged private;

   type Q_Dom_Attr is new Q_Dom_Node with private;

   type Q_Dom_Character_Data is new Q_Dom_Node with private;

   type Q_Dom_Comment is new Q_Dom_Character_Data with private;

   type Q_Dom_Document is new Q_Dom_Node with private;

   type Q_Dom_Document_Fragment is new Q_Dom_Node with private;

   type Q_Dom_Document_Type is new Q_Dom_Node with private;

   type Q_Dom_Element is new Q_Dom_Node with private;

   type Q_Dom_Entity is new Q_Dom_Node with private;

   type Q_Dom_Entity_Reference is new Q_Dom_Node with private;

   type Q_Dom_Notation is new Q_Dom_Node with private;

   type Q_Dom_Processing_Instruction is new Q_Dom_Node with private;

   type Q_Dom_Text is new Q_Dom_Character_Data with private;

   type Q_Dom_CDATA_Section is new Q_Dom_Text with private;

   function Create
    (Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Document;

   function Create
    (Doctype : Q_Dom_Document_Type'Class)
       return Q_Dom_Document;

   function Create_Document
    (Self : not null access Q_Dom_Implementation'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Q_Name : Qt4.Strings.Q_String'Class;
     Doctype : Q_Dom_Document_Type'Class)
       return Q_Dom_Document;

   function Create_Document_Type
    (Self : not null access Q_Dom_Implementation'Class;
     Q_Name : Qt4.Strings.Q_String'Class;
     Public_Id : Qt4.Strings.Q_String'Class;
     System_Id : Qt4.Strings.Q_String'Class)
       return Q_Dom_Document_Type;

   function Has_Feature
    (Self : Q_Dom_Implementation'Class;
     Feature : Qt4.Strings.Q_String'Class;
     Version : Qt4.Strings.Q_String'Class)
       return Boolean;

   function Is_Null
    (Self : not null access Q_Dom_Implementation'Class)
       return Boolean;

   overriding function "="
    (Self : Q_Dom_Implementation;
     X : Q_Dom_Implementation)
       return Boolean;

   function Invalid_Data_Policy
     return Dom_Invalid_Data_Policy;

   procedure Set_Invalid_Data_Policy
    (Policy : Dom_Invalid_Data_Policy);

   function Contains
    (Self : Q_Dom_Named_Node_Map'Class;
     Name : Qt4.Strings.Q_String'Class)
       return Boolean;

   function Count
    (Self : Q_Dom_Named_Node_Map'Class)
       return Qt4.Q_Integer;

   function Is_Empty
    (Self : Q_Dom_Named_Node_Map'Class)
       return Boolean;

   function Item
    (Self : Q_Dom_Named_Node_Map'Class;
     Index : Qt4.Q_Integer)
       return Q_Dom_Node;

   function Length
    (Self : Q_Dom_Named_Node_Map'Class)
       return Qt4.Q_Unsigned_Integer;

   function Named_Item
    (Self : Q_Dom_Named_Node_Map'Class;
     Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Node;

   function Named_Item_NS
    (Self : Q_Dom_Named_Node_Map'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Local_Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Node;

   procedure Remove_Named_Item
    (Self : in out Q_Dom_Named_Node_Map'Class;
     Name : Qt4.Strings.Q_String'Class);

   procedure Remove_Named_Item_NS
    (Self : in out Q_Dom_Named_Node_Map'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Local_Name : Qt4.Strings.Q_String'Class);

   procedure Set_Named_Item
    (Self : in out Q_Dom_Named_Node_Map'Class;
     New_Node : Q_Dom_Node'Class);

   procedure Set_Named_Item_NS
    (Self : in out Q_Dom_Named_Node_Map'Class;
     New_Node : Q_Dom_Node'Class);

   function Size
    (Self : Q_Dom_Named_Node_Map'Class)
       return Qt4.Q_Integer;

   overriding function "="
    (Self : Q_Dom_Named_Node_Map;
     N : Q_Dom_Named_Node_Map)
       return Boolean;

   function Item_At
    (Self : Q_Dom_Node_List'Class;
     Index : Qt4.Q_Integer)
       return Q_Dom_Node;

   function Count
    (Self : Q_Dom_Node_List'Class)
       return Qt4.Q_Integer;

   function Is_Empty
    (Self : Q_Dom_Node_List'Class)
       return Boolean;

   function Item
    (Self : Q_Dom_Node_List'Class;
     Index : Qt4.Q_Integer)
       return Q_Dom_Node;

   function Length
    (Self : Q_Dom_Node_List'Class)
       return Qt4.Q_Unsigned_Integer;

   function Size
    (Self : Q_Dom_Node_List'Class)
       return Qt4.Q_Integer;

   overriding function "="
    (Self : Q_Dom_Node_List;
     N : Q_Dom_Node_List)
       return Boolean;

   procedure Append_Child
    (Self : in out Q_Dom_Node'Class;
     New_Child : Q_Dom_Node'Class);

   function Attributes
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Named_Node_Map;

   function Child_Nodes
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Node_List;

   procedure Clear
    (Self : in out Q_Dom_Node'Class);

   function Clone_Node
    (Self : Q_Dom_Node'Class;
     Deep : Boolean
       := True)
       return Q_Dom_Node;

   function Column_Number
    (Self : Q_Dom_Node'Class)
       return Qt4.Q_Integer;

   function First_Child
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Node;

   function First_Child_Element
    (Self : Q_Dom_Node'Class;
     Tag_Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Element;

   function Has_Attributes
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Has_Child_Nodes
    (Self : Q_Dom_Node'Class)
       return Boolean;

   procedure Insert_After
    (Self : in out Q_Dom_Node'Class;
     New_Child : Q_Dom_Node'Class;
     Ref_Child : Q_Dom_Node'Class);

   procedure Insert_Before
    (Self : in out Q_Dom_Node'Class;
     New_Child : Q_Dom_Node'Class;
     Ref_Child : Q_Dom_Node'Class);

   function Is_Attr
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_CDATA_Section
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Character_Data
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Comment
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Document
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Document_Fragment
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Document_Type
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Element
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Entity
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Entity_Reference
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Notation
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Null
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Processing_Instruction
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Is_Supported
    (Self : Q_Dom_Node'Class;
     Feature : Qt4.Strings.Q_String'Class;
     Version : Qt4.Strings.Q_String'Class)
       return Boolean;

   function Is_Text
    (Self : Q_Dom_Node'Class)
       return Boolean;

   function Last_Child
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Node;

   function Last_Child_Element
    (Self : Q_Dom_Node'Class;
     Tag_Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Element;

   function Line_Number
    (Self : Q_Dom_Node'Class)
       return Qt4.Q_Integer;

   function Local_Name
    (Self : Q_Dom_Node'Class)
       return Qt4.Strings.Q_String;

   function Named_Item
    (Self : Q_Dom_Node'Class;
     Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Node;

   function Namespace_URI
    (Self : Q_Dom_Node'Class)
       return Qt4.Strings.Q_String;

   function Next_Sibling
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Node;

   function Next_Sibling_Element
    (Self : Q_Dom_Node'Class;
     Tag_Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Element;

   function Node_Name
    (Self : Q_Dom_Node'Class)
       return Qt4.Strings.Q_String;

   function Node_Type
    (Self : Q_Dom_Node'Class)
       return Dom_Node_Type;

   function Node_Value
    (Self : Q_Dom_Node'Class)
       return Qt4.Strings.Q_String;

   procedure Normalize
    (Self : in out Q_Dom_Node'Class);

   function Owner_Document
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Document;

   function Parent_Node
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Node;

   function Prefix
    (Self : Q_Dom_Node'Class)
       return Qt4.Strings.Q_String;

   function Previous_Sibling
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Node;

   function Previous_Sibling_Element
    (Self : Q_Dom_Node'Class;
     Tag_Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Element;

   procedure Remove_Child
    (Self : in out Q_Dom_Node'Class;
     Old_Child : Q_Dom_Node'Class);

   procedure Replace_Child
    (Self : in out Q_Dom_Node'Class;
     New_Child : Q_Dom_Node'Class;
     Old_Child : Q_Dom_Node'Class);

   procedure Set_Node_Value
    (Self : in out Q_Dom_Node'Class;
     V : Qt4.Strings.Q_String'Class);

   procedure Set_Prefix
    (Self : in out Q_Dom_Node'Class;
     Pre : Qt4.Strings.Q_String'Class);

   function To_Attr
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Attr;

   function To_CDATA_Section
    (Self : Q_Dom_Node'Class)
       return Q_Dom_CDATA_Section;

   function To_Character_Data
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Character_Data;

   function To_Comment
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Comment;

   function To_Document
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Document;

   function To_Document_Fragment
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Document_Fragment;

   function To_Document_Type
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Document_Type;

   function To_Element
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Element;

   function To_Entity
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Entity;

   function To_Entity_Reference
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Entity_Reference;

   function To_Notation
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Notation;

   function To_Processing_Instruction
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Processing_Instruction;

   function To_Text
    (Self : Q_Dom_Node'Class)
       return Q_Dom_Text;

   overriding function "="
    (Self : Q_Dom_Node;
     N : Q_Dom_Node)
       return Boolean;

   function Name
    (Self : Q_Dom_Attr'Class)
       return Qt4.Strings.Q_String;

   function Node_Type
    (Self : Q_Dom_Attr'Class)
       return Dom_Node_Type;

   function Owner_Element
    (Self : Q_Dom_Attr'Class)
       return Q_Dom_Element;

   procedure Set_Value
    (Self : in out Q_Dom_Attr'Class;
     V : Qt4.Strings.Q_String'Class);

   function Specified
    (Self : Q_Dom_Attr'Class)
       return Boolean;

   function Value
    (Self : Q_Dom_Attr'Class)
       return Qt4.Strings.Q_String;

   procedure Append_Data
    (Self : in out Q_Dom_Character_Data'Class;
     Arg : Qt4.Strings.Q_String'Class);

   function Data
    (Self : Q_Dom_Character_Data'Class)
       return Qt4.Strings.Q_String;

   procedure Delete_Data
    (Self : in out Q_Dom_Character_Data'Class;
     Offset : Qt4.Q_Unsigned_Long;
     Count : Qt4.Q_Unsigned_Long);

   procedure Insert_Data
    (Self : in out Q_Dom_Character_Data'Class;
     Offset : Qt4.Q_Unsigned_Long;
     Arg : Qt4.Strings.Q_String'Class);

   function Length
    (Self : Q_Dom_Character_Data'Class)
       return Qt4.Q_Unsigned_Integer;

   function Node_Type
    (Self : Q_Dom_Character_Data'Class)
       return Dom_Node_Type;

   procedure Replace_Data
    (Self : in out Q_Dom_Character_Data'Class;
     Offset : Qt4.Q_Unsigned_Long;
     Count : Qt4.Q_Unsigned_Long;
     Arg : Qt4.Strings.Q_String'Class);

   procedure Set_Data
    (Self : in out Q_Dom_Character_Data'Class;
     Arg : Qt4.Strings.Q_String'Class);

   function Node_Type
    (Self : Q_Dom_Comment'Class)
       return Dom_Node_Type;

   function Create_Attribute
    (Self : not null access Q_Dom_Document'Class;
     Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Attr;

   function Create_Attribute_NS
    (Self : not null access Q_Dom_Document'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Q_Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Attr;

   function Create_CDATA_Section
    (Self : not null access Q_Dom_Document'Class;
     Data : Qt4.Strings.Q_String'Class)
       return Q_Dom_CDATA_Section;

   function Create_Comment
    (Self : not null access Q_Dom_Document'Class;
     Data : Qt4.Strings.Q_String'Class)
       return Q_Dom_Comment;

   function Create_Document_Fragment
    (Self : not null access Q_Dom_Document'Class)
       return Q_Dom_Document_Fragment;

   function Create_Element
    (Self : not null access Q_Dom_Document'Class;
     Tag_Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Element;

   function Create_Element_NS
    (Self : not null access Q_Dom_Document'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Q_Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Element;

   function Create_Entity_Reference
    (Self : not null access Q_Dom_Document'Class;
     Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Entity_Reference;

   function Create_Processing_Instruction
    (Self : not null access Q_Dom_Document'Class;
     Target : Qt4.Strings.Q_String'Class;
     Data : Qt4.Strings.Q_String'Class)
       return Q_Dom_Processing_Instruction;

   function Create_Text_Node
    (Self : not null access Q_Dom_Document'Class;
     Data : Qt4.Strings.Q_String'Class)
       return Q_Dom_Text;

   function Doctype
    (Self : Q_Dom_Document'Class)
       return Q_Dom_Document_Type;

   function Document_Element
    (Self : Q_Dom_Document'Class)
       return Q_Dom_Element;

   function Element_By_Id
    (Self : not null access Q_Dom_Document'Class;
     Element_Id : Qt4.Strings.Q_String'Class)
       return Q_Dom_Element;

   function Elements_By_Tag_Name
    (Self : Q_Dom_Document'Class;
     Tagname : Qt4.Strings.Q_String'Class)
       return Q_Dom_Node_List;

   function Elements_By_Tag_Name_NS
    (Self : not null access Q_Dom_Document'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Local_Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Node_List;

   function Implementation
    (Self : Q_Dom_Document'Class)
       return Q_Dom_Implementation;

   function Import_Node
    (Self : not null access Q_Dom_Document'Class;
     Imported_Node : Q_Dom_Node'Class;
     Deep : Boolean)
       return Q_Dom_Node;

   function Node_Type
    (Self : Q_Dom_Document'Class)
       return Dom_Node_Type;

   function Set_Content
    (Self : not null access Q_Dom_Document'Class;
     Text : Qt4.Strings.Q_String'Class;
     Namespace_Processing : Boolean)
       return Boolean;

   function Set_Content
    (Self : not null access Q_Dom_Document'Class;
     Dev : not null access Qt4.IO_Devices.Q_IO_Device'Class;
     Error_Msg : access Qt4.Strings.Q_String := null;
     Error_Line : access Qt4.Q_Integer := null;
     Error_Column : access Qt4.Q_Integer := null)
       return Boolean;

   function To_String
    (Self : Q_Dom_Document'Class;
     Indent : Qt4.Q_Integer
       := 1)
       return Qt4.Strings.Q_String;

   function Node_Type
    (Self : Q_Dom_Document_Fragment'Class)
       return Dom_Node_Type;

   function Entities
    (Self : Q_Dom_Document_Type'Class)
       return Q_Dom_Named_Node_Map;

   function Internal_Subset
    (Self : Q_Dom_Document_Type'Class)
       return Qt4.Strings.Q_String;

   function Name
    (Self : Q_Dom_Document_Type'Class)
       return Qt4.Strings.Q_String;

   function Node_Type
    (Self : Q_Dom_Document_Type'Class)
       return Dom_Node_Type;

   function Notations
    (Self : Q_Dom_Document_Type'Class)
       return Q_Dom_Named_Node_Map;

   function Public_Id
    (Self : Q_Dom_Document_Type'Class)
       return Qt4.Strings.Q_String;

   function System_Id
    (Self : Q_Dom_Document_Type'Class)
       return Qt4.Strings.Q_String;

   function Attribute
    (Self : Q_Dom_Element'Class;
     Name : Qt4.Strings.Q_String'Class;
     Def_Value : Qt4.Strings.Q_String'Class)
       return Qt4.Strings.Q_String;

   function Attribute_NS
    (Self : Q_Dom_Element'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Local_Name : Qt4.Strings.Q_String'Class;
     Def_Value : Qt4.Strings.Q_String'Class)
       return Qt4.Strings.Q_String;

   function Attributes
    (Self : Q_Dom_Element'Class)
       return Q_Dom_Named_Node_Map;

   function Elements_By_Tag_Name
    (Self : Q_Dom_Element'Class;
     Tagname : Qt4.Strings.Q_String'Class)
       return Q_Dom_Node_List;

   function Elements_By_Tag_Name_NS
    (Self : Q_Dom_Element'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Local_Name : Qt4.Strings.Q_String'Class)
       return Q_Dom_Node_List;

   function Has_Attribute
    (Self : Q_Dom_Element'Class;
     Name : Qt4.Strings.Q_String'Class)
       return Boolean;

   function Has_Attribute_NS
    (Self : Q_Dom_Element'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Local_Name : Qt4.Strings.Q_String'Class)
       return Boolean;

   function Node_Type
    (Self : Q_Dom_Element'Class)
       return Dom_Node_Type;

   procedure Remove_Attribute
    (Self : in out Q_Dom_Element'Class;
     Name : Qt4.Strings.Q_String'Class);

   procedure Remove_Attribute_NS
    (Self : in out Q_Dom_Element'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Local_Name : Qt4.Strings.Q_String'Class);

   procedure Set_Attribute
    (Self : in out Q_Dom_Element'Class;
     Name : Qt4.Strings.Q_String'Class;
     Value : Qt4.Strings.Q_String'Class);

   procedure Set_Attribute_NS
    (Self : in out Q_Dom_Element'Class;
     Ns_URI : Qt4.Strings.Q_String'Class;
     Q_Name : Qt4.Strings.Q_String'Class;
     Value : Qt4.Strings.Q_String'Class);

   procedure Set_Attribute_Node
    (Self : in out Q_Dom_Element'Class;
     New_Attr : Q_Dom_Attr'Class);

   procedure Set_Attribute_Node_NS
    (Self : in out Q_Dom_Element'Class;
     New_Attr : Q_Dom_Attr'Class);

   procedure Set_Tag_Name
    (Self : in out Q_Dom_Element'Class;
     Name : Qt4.Strings.Q_String'Class);

   function Tag_Name
    (Self : Q_Dom_Element'Class)
       return Qt4.Strings.Q_String;

   function Text
    (Self : Q_Dom_Element'Class)
       return Qt4.Strings.Q_String;

   function Node_Type
    (Self : Q_Dom_Entity'Class)
       return Dom_Node_Type;

   function Notation_Name
    (Self : Q_Dom_Entity'Class)
       return Qt4.Strings.Q_String;

   function Public_Id
    (Self : Q_Dom_Entity'Class)
       return Qt4.Strings.Q_String;

   function System_Id
    (Self : Q_Dom_Entity'Class)
       return Qt4.Strings.Q_String;

   function Node_Type
    (Self : Q_Dom_Entity_Reference'Class)
       return Dom_Node_Type;

   function Node_Type
    (Self : Q_Dom_Notation'Class)
       return Dom_Node_Type;

   function Public_Id
    (Self : Q_Dom_Notation'Class)
       return Qt4.Strings.Q_String;

   function System_Id
    (Self : Q_Dom_Notation'Class)
       return Qt4.Strings.Q_String;

   function Data
    (Self : Q_Dom_Processing_Instruction'Class)
       return Qt4.Strings.Q_String;

   function Node_Type
    (Self : Q_Dom_Processing_Instruction'Class)
       return Dom_Node_Type;

   procedure Set_Data
    (Self : in out Q_Dom_Processing_Instruction'Class;
     D : Qt4.Strings.Q_String'Class);

   function Target
    (Self : Q_Dom_Processing_Instruction'Class)
       return Qt4.Strings.Q_String;

   function Node_Type
    (Self : Q_Dom_Text'Class)
       return Dom_Node_Type;

   procedure Split_Text
    (Self : in out Q_Dom_Text'Class;
     Offset : Qt4.Q_Integer);

   function Node_Type
    (Self : Q_Dom_CDATA_Section'Class)
       return Dom_Node_Type;

   package Internals is

      type QDomImplementation is private;

      type QDomImplementation_Access is access all QDomImplementation;
      pragma Convention (C, QDomImplementation_Access);

      function QDomImplementation_View
       (Item : Q_Dom_Implementation'Class)
          return QDomImplementation_Access;
      pragma Inline (QDomImplementation_View);

      function To_Pointer
       (Address : System.Address)
          return QDomImplementation_Access;
      pragma Inline (To_Pointer);

      function To_Address
       (Pointer : QDomImplementation_Access)
          return System.Address;
      pragma Inline (To_Address);

      function Create_Wrapper
       (Item : Internals.QDomImplementation_Access)
          return Q_Dom_Implementation;

      type QDomNamedNodeMap is private;

      type QDomNamedNodeMap_Access is access all QDomNamedNodeMap;
      pragma Convention (C, QDomNamedNodeMap_Access);

      function QDomNamedNodeMap_View
       (Item : Q_Dom_Named_Node_Map'Class)
          return QDomNamedNodeMap_Access;
      pragma Inline (QDomNamedNodeMap_View);

      function To_Pointer
       (Address : System.Address)
          return QDomNamedNodeMap_Access;
      pragma Inline (To_Pointer);

      function To_Address
       (Pointer : QDomNamedNodeMap_Access)
          return System.Address;
      pragma Inline (To_Address);

      function Create_Wrapper
       (Item : Internals.QDomNamedNodeMap_Access)
          return Q_Dom_Named_Node_Map;

      type QDomNodeList is private;

      type QDomNodeList_Access is access all QDomNodeList;
      pragma Convention (C, QDomNodeList_Access);

      function QDomNodeList_View
       (Item : Q_Dom_Node_List'Class)
          return QDomNodeList_Access;
      pragma Inline (QDomNodeList_View);

      function To_Pointer
       (Address : System.Address)
          return QDomNodeList_Access;
      pragma Inline (To_Pointer);

      function To_Address
       (Pointer : QDomNodeList_Access)
          return System.Address;
      pragma Inline (To_Address);

      function Create_Wrapper
       (Item : Internals.QDomNodeList_Access)
          return Q_Dom_Node_List;

      type QDomNode is private;

      type QDomNode_Access is access all QDomNode;
      pragma Convention (C, QDomNode_Access);

      function QDomNode_View
       (Item : Q_Dom_Node'Class)
          return QDomNode_Access;
      pragma Inline (QDomNode_View);

      function To_Pointer
       (Address : System.Address)
          return QDomNode_Access;
      pragma Inline (To_Pointer);

      function To_Address
       (Pointer : QDomNode_Access)
          return System.Address;
      pragma Inline (To_Address);

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Node;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Attr;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Character_Data;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Comment;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Document;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Document_Fragment;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Document_Type;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Element;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Entity;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Entity_Reference;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Notation;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Processing_Instruction;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_Text;

      function Create_Wrapper
       (Item : Internals.QDomNode_Access)
          return Q_Dom_CDATA_Section;

   private

      type QDomImplementation is record
         Placeholder : Interfaces.C.char_array (1 .. Qt_Ada.Internals.Value_Class_Sizes.QDomImplementation_C_Size_Of);
      end record;
      pragma Convention (C, QDomImplementation);

      type QDomNamedNodeMap is record
         Placeholder : Interfaces.C.char_array (1 .. Qt_Ada.Internals.Value_Class_Sizes.QDomNamedNodeMap_C_Size_Of);
      end record;
      pragma Convention (C, QDomNamedNodeMap);

      type QDomNodeList is record
         Placeholder : Interfaces.C.char_array (1 .. Qt_Ada.Internals.Value_Class_Sizes.QDomNodeList_C_Size_Of);
      end record;
      pragma Convention (C, QDomNodeList);

      type QDomNode is record
         Placeholder : Interfaces.C.char_array (1 .. Qt_Ada.Internals.Value_Class_Sizes.QDomNode_C_Size_Of);
      end record;
      pragma Convention (C, QDomNode);

   end Internals;

private

   type Q_Dom_Implementation is new Ada.Finalization.Controlled with record
      Storage : aliased Internals.QDomImplementation;
      Object  : Internals.QDomImplementation_Access := null;
      Wrapper : Boolean := False;
   end record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Implementation);

   overriding
   procedure Finalize (Self : in out Q_Dom_Implementation);

   overriding
   procedure Initialize (Self : in out Q_Dom_Implementation);

   type Q_Dom_Named_Node_Map is new Ada.Finalization.Controlled with record
      Storage : aliased Internals.QDomNamedNodeMap;
      Object  : Internals.QDomNamedNodeMap_Access := null;
      Wrapper : Boolean := False;
   end record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Named_Node_Map);

   overriding
   procedure Finalize (Self : in out Q_Dom_Named_Node_Map);

   overriding
   procedure Initialize (Self : in out Q_Dom_Named_Node_Map);

   type Q_Dom_Node_List is new Ada.Finalization.Controlled with record
      Storage : aliased Internals.QDomNodeList;
      Object  : Internals.QDomNodeList_Access := null;
      Wrapper : Boolean := False;
   end record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Node_List);

   overriding
   procedure Finalize (Self : in out Q_Dom_Node_List);

   overriding
   procedure Initialize (Self : in out Q_Dom_Node_List);

   type Q_Dom_Node is new Ada.Finalization.Controlled with record
      Storage : aliased Internals.QDomNode;
      Object  : Internals.QDomNode_Access := null;
      Wrapper : Boolean := False;
   end record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Node);

   overriding
   procedure Finalize (Self : in out Q_Dom_Node);

   overriding
   procedure Initialize (Self : in out Q_Dom_Node);

   type Q_Dom_Attr is new Q_Dom_Node with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Attr);

   overriding
   procedure Finalize (Self : in out Q_Dom_Attr);

   overriding
   procedure Initialize (Self : in out Q_Dom_Attr);

   type Q_Dom_Character_Data is new Q_Dom_Node with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Character_Data);

   overriding
   procedure Finalize (Self : in out Q_Dom_Character_Data);

   overriding
   procedure Initialize (Self : in out Q_Dom_Character_Data);

   type Q_Dom_Comment is new Q_Dom_Character_Data with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Comment);

   overriding
   procedure Finalize (Self : in out Q_Dom_Comment);

   overriding
   procedure Initialize (Self : in out Q_Dom_Comment);

   type Q_Dom_Document is new Q_Dom_Node with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Document);

   overriding
   procedure Finalize (Self : in out Q_Dom_Document);

   overriding
   procedure Initialize (Self : in out Q_Dom_Document);

   type Q_Dom_Document_Fragment is new Q_Dom_Node with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Document_Fragment);

   overriding
   procedure Finalize (Self : in out Q_Dom_Document_Fragment);

   overriding
   procedure Initialize (Self : in out Q_Dom_Document_Fragment);

   type Q_Dom_Document_Type is new Q_Dom_Node with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Document_Type);

   overriding
   procedure Finalize (Self : in out Q_Dom_Document_Type);

   overriding
   procedure Initialize (Self : in out Q_Dom_Document_Type);

   type Q_Dom_Element is new Q_Dom_Node with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Element);

   overriding
   procedure Finalize (Self : in out Q_Dom_Element);

   overriding
   procedure Initialize (Self : in out Q_Dom_Element);

   type Q_Dom_Entity is new Q_Dom_Node with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Entity);

   overriding
   procedure Finalize (Self : in out Q_Dom_Entity);

   overriding
   procedure Initialize (Self : in out Q_Dom_Entity);

   type Q_Dom_Entity_Reference is new Q_Dom_Node with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Entity_Reference);

   overriding
   procedure Finalize (Self : in out Q_Dom_Entity_Reference);

   overriding
   procedure Initialize (Self : in out Q_Dom_Entity_Reference);

   type Q_Dom_Notation is new Q_Dom_Node with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Notation);

   overriding
   procedure Finalize (Self : in out Q_Dom_Notation);

   overriding
   procedure Initialize (Self : in out Q_Dom_Notation);

   type Q_Dom_Processing_Instruction is new Q_Dom_Node with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Processing_Instruction);

   overriding
   procedure Finalize (Self : in out Q_Dom_Processing_Instruction);

   overriding
   procedure Initialize (Self : in out Q_Dom_Processing_Instruction);

   type Q_Dom_Text is new Q_Dom_Character_Data with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_Text);

   overriding
   procedure Finalize (Self : in out Q_Dom_Text);

   overriding
   procedure Initialize (Self : in out Q_Dom_Text);

   type Q_Dom_CDATA_Section is new Q_Dom_Text with null record;

   overriding
   procedure Adjust (Self : in out Q_Dom_CDATA_Section);

   overriding
   procedure Finalize (Self : in out Q_Dom_CDATA_Section);

   overriding
   procedure Initialize (Self : in out Q_Dom_CDATA_Section);

end Qt4.Dom_Nodes;
