layout/inspector/inDeepTreeWalker.h
author Tooru Fujisawa <arai_a@mac.com>
Fri, 16 May 2014 01:50:14 +0900
changeset 183847 bcf7062a8d7808987b61b117ddcf97ba58f701b8
parent 158784 20ba1c3ccad8d5f6f0d38885cc47187b81cb5c37
child 184030 ea0448aacaa368a012650135e7fdb696634eabc8
permissions -rw-r--r--
Bug 1003149 - Part2: Implement JSOP_SPREAD* optimized stubs in the baseline compiler. r=jandem

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef __inDeepTreeWalker_h___
#define __inDeepTreeWalker_h___

#include "inIDeepTreeWalker.h"

#include "nsCOMPtr.h"
#include "nsIDOMNode.h"
#include "nsTArray.h"

class inIDOMUtils;

////////////////////////////////////////////////////

struct DeepTreeStackItem
{
  nsCOMPtr<nsIDOMNode> node;
  nsCOMPtr<nsIDOMNodeList> kids;
  uint32_t lastIndex; // Index one bigger than the index of whatever
                      // kid we're currently at in |kids|.
};

////////////////////////////////////////////////////

class inDeepTreeWalker : public inIDeepTreeWalker
{
public:
	NS_DECL_ISUPPORTS
	NS_DECL_NSIDOMTREEWALKER
	NS_DECL_INIDEEPTREEWALKER

  inDeepTreeWalker();
  virtual ~inDeepTreeWalker();

protected:
  void PushNode(nsIDOMNode* aNode);

  bool mShowAnonymousContent;
  bool mShowSubDocuments;
  nsCOMPtr<nsIDOMNode> mRoot;
  nsCOMPtr<nsIDOMNode> mCurrentNode;
  uint32_t mWhatToShow;
  
  nsAutoTArray<DeepTreeStackItem, 8> mStack;
  nsCOMPtr<inIDOMUtils> mDOMUtils;
};

// {BFCB82C2-5611-4318-90D6-BAF4A7864252}
#define IN_DEEPTREEWALKER_CID \
{ 0xbfcb82c2, 0x5611, 0x4318, { 0x90, 0xd6, 0xba, 0xf4, 0xa7, 0x86, 0x42, 0x52 } }

#endif // __inDeepTreeWalker_h___