LCOV - code coverage report
Current view: top level - dom/xslt/xpath - txXPathNode.h (source / functions) Hit Total Coverage
Test: output.info Lines: 4 41 9.8 %
Date: 2017-07-14 16:53:18 Functions: 1 13 7.7 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /* This Source Code Form is subject to the terms of the Mozilla Public
       3             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       4             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       5             : 
       6             : #ifndef txXPathNode_h__
       7             : #define txXPathNode_h__
       8             : 
       9             : #include "nsAutoPtr.h"
      10             : #include "nsIContent.h"
      11             : #include "nsIDocument.h"
      12             : #include "nsIDOMNode.h"
      13             : #include "nsNameSpaceManager.h"
      14             : #include "nsContentUtils.h" // For NameSpaceManager().
      15             : 
      16             : typedef nsIDOMNode txXPathNodeType;
      17             : 
      18             : class txXPathNode
      19             : {
      20             : public:
      21             :     bool operator==(const txXPathNode& aNode) const;
      22           0 :     bool operator!=(const txXPathNode& aNode) const
      23             :     {
      24           0 :         return !(*this == aNode);
      25             :     }
      26             :     ~txXPathNode();
      27             : 
      28             : private:
      29             :     friend class txNodeSet;
      30             :     friend class txXPathNativeNode;
      31             :     friend class txXPathNodeUtils;
      32             :     friend class txXPathTreeWalker;
      33             : 
      34             :     txXPathNode(const txXPathNode& aNode);
      35             : 
      36           0 :     explicit txXPathNode(nsIDocument* aDocument) : mNode(aDocument),
      37             :                                                    mRefCountRoot(0),
      38           0 :                                                    mIndex(eDocument)
      39             :     {
      40           0 :         MOZ_COUNT_CTOR(txXPathNode);
      41           0 :     }
      42           0 :     txXPathNode(nsINode *aNode, uint32_t aIndex, nsINode *aRoot)
      43           0 :         : mNode(aNode),
      44           0 :           mRefCountRoot(aRoot ? 1 : 0),
      45           0 :           mIndex(aIndex)
      46             :     {
      47           0 :         MOZ_COUNT_CTOR(txXPathNode);
      48           0 :         if (aRoot) {
      49           0 :             NS_ADDREF(aRoot);
      50             :         }
      51           0 :     }
      52             : 
      53           0 :     static nsINode *RootOf(nsINode *aNode)
      54             :     {
      55           0 :         nsINode *ancestor, *root = aNode;
      56           0 :         while ((ancestor = root->GetParentNode())) {
      57           0 :             root = ancestor;
      58             :         }
      59           0 :         return root;
      60             :     }
      61           0 :     nsINode *Root() const
      62             :     {
      63           0 :         return RootOf(mNode);
      64             :     }
      65             :     nsINode *GetRootToAddRef() const
      66             :     {
      67             :         return mRefCountRoot ? Root() : nullptr;
      68             :     }
      69             : 
      70           0 :     bool isDocument() const
      71             :     {
      72           0 :         return mIndex == eDocument;
      73             :     }
      74           0 :     bool isContent() const
      75             :     {
      76           0 :         return mIndex == eContent;
      77             :     }
      78           0 :     bool isAttribute() const
      79             :     {
      80           0 :         return mIndex != eDocument && mIndex != eContent;
      81             :     }
      82             : 
      83           0 :     nsIContent* Content() const
      84             :     {
      85           0 :         NS_ASSERTION(isContent() || isAttribute(), "wrong type");
      86           0 :         return static_cast<nsIContent*>(mNode);
      87             :     }
      88           0 :     nsIDocument* Document() const
      89             :     {
      90           0 :         NS_ASSERTION(isDocument(), "wrong type");
      91           0 :         return static_cast<nsIDocument*>(mNode);
      92             :     }
      93             : 
      94             :     enum PositionType
      95             :     {
      96             :         eDocument = (1 << 30),
      97             :         eContent = eDocument - 1
      98             :     };
      99             : 
     100             :     nsINode* mNode;
     101             :     uint32_t mRefCountRoot : 1;
     102             :     uint32_t mIndex : 31;
     103             : };
     104             : 
     105             : class txNamespaceManager
     106             : {
     107             : public:
     108             :     static int32_t getNamespaceID(const nsAString& aNamespaceURI);
     109             :     static nsresult getNamespaceURI(const int32_t aID, nsAString& aResult);
     110             : };
     111             : 
     112             : /* static */
     113             : inline int32_t
     114          48 : txNamespaceManager::getNamespaceID(const nsAString& aNamespaceURI)
     115             : {
     116          48 :     int32_t namespaceID = kNameSpaceID_Unknown;
     117             :     nsContentUtils::NameSpaceManager()->
     118          48 :         RegisterNameSpace(aNamespaceURI, namespaceID);
     119          48 :     return namespaceID;
     120             : }
     121             : 
     122             : /* static */
     123             : inline nsresult
     124           0 : txNamespaceManager::getNamespaceURI(const int32_t aID, nsAString& aResult)
     125             : {
     126             :     return nsContentUtils::NameSpaceManager()->
     127           0 :         GetNameSpaceURI(aID, aResult);
     128             : }
     129             : 
     130             : inline bool
     131           0 : txXPathNode::operator==(const txXPathNode& aNode) const
     132             : {
     133           0 :     return mIndex == aNode.mIndex && mNode == aNode.mNode;
     134             : }
     135             : 
     136             : #endif /* txXPathNode_h__ */

Generated by: LCOV version 1.13