with GNATCOM.Dispinterface;

package MSHTML.IHTMLDOMNode3_Interface is

   type IHTMLDOMNode3_Type is
     new GNATCOM.Dispinterface.Dispinterface_Type with null record;

   procedure Initialize (This : in out IHTMLDOMNode3_Type);

   function Pointer (This : IHTMLDOMNode3_Type)
     return Pointer_To_IHTMLDOMNode3;

   procedure Attach (This    : in out IHTMLDOMNode3_Type;
                     Pointer : in     Pointer_To_IHTMLDOMNode3);

   procedure Put_prefix
     (This : IHTMLDOMNode3_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_prefix
     (This : IHTMLDOMNode3_Type)
     return GNATCOM.Types.VARIANT;

   function Get_localName
     (This : IHTMLDOMNode3_Type)
     return GNATCOM.Types.VARIANT;

   function Get_namespaceURI
     (This : IHTMLDOMNode3_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_textContent
     (This : IHTMLDOMNode3_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_textContent
     (This : IHTMLDOMNode3_Type)
     return GNATCOM.Types.VARIANT;

   function isEqualNode
     (This      : IHTMLDOMNode3_Type;
      otherNode : Pointer_To_IHTMLDOMNode3)
     return GNATCOM.Types.VARIANT_BOOL;

   function lookupNamespaceURI
     (This             : IHTMLDOMNode3_Type;
      pvarPrefix       : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING)
     return GNATCOM.Types.VARIANT;

   function lookupPrefix
     (This             : IHTMLDOMNode3_Type;
      pvarNamespaceURI : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING)
     return GNATCOM.Types.VARIANT;

   function isDefaultNamespace
     (This               : IHTMLDOMNode3_Type;
      pvarNamespace      : access GNATCOM.Types.VARIANT :=
        GNATCOM.Types.PVARIANT_MISSING)
     return GNATCOM.Types.VARIANT_BOOL;

   function appendChild
     (This     : IHTMLDOMNode3_Type;
      newChild : Pointer_To_IHTMLDOMNode)
     return Pointer_To_IHTMLDOMNode;

   function insertBefore
     (This     : IHTMLDOMNode3_Type;
      newChild : Pointer_To_IHTMLDOMNode;
      refChild : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      Free     : Boolean := True)
     return Pointer_To_IHTMLDOMNode;

   function removeChild
     (This     : IHTMLDOMNode3_Type;
      oldChild : Pointer_To_IHTMLDOMNode)
     return Pointer_To_IHTMLDOMNode;

   function replaceChild
     (This     : IHTMLDOMNode3_Type;
      newChild : Pointer_To_IHTMLDOMNode;
      oldChild : Pointer_To_IHTMLDOMNode)
     return Pointer_To_IHTMLDOMNode;

   function isSameNode
     (This      : IHTMLDOMNode3_Type;
      otherNode : Pointer_To_IHTMLDOMNode3)
     return GNATCOM.Types.VARIANT_BOOL;

   function compareDocumentPosition
     (This      : IHTMLDOMNode3_Type;
      otherNode : Pointer_To_IHTMLDOMNode)
     return Interfaces.C.unsigned_short;

   function isSupported
     (This          : IHTMLDOMNode3_Type;
      feature       : GNATCOM.Types.BSTR;
      version       : GNATCOM.Types.VARIANT;
      Free          : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL;

end MSHTML.IHTMLDOMNode3_Interface;

