2007-03-22 10:30:00 -07:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2012-05-21 04:12:37 -07:00
|
|
|
/* 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/. */
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
#ifndef nsXPathEvaluator_h__
|
|
|
|
#define nsXPathEvaluator_h__
|
|
|
|
|
|
|
|
#include "nsIDOMXPathEvaluator.h"
|
|
|
|
#include "nsIXPathEvaluatorInternal.h"
|
|
|
|
#include "nsIWeakReference.h"
|
|
|
|
#include "nsAutoPtr.h"
|
|
|
|
#include "nsString.h"
|
|
|
|
#include "txResultRecycler.h"
|
|
|
|
#include "nsAgg.h"
|
|
|
|
#include "nsTArray.h"
|
2012-06-18 19:30:09 -07:00
|
|
|
#include "mozilla/Attributes.h"
|
2012-12-14 11:10:49 -08:00
|
|
|
#include "mozilla/ErrorResult.h"
|
|
|
|
|
|
|
|
class nsINode;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* A class for evaluating an XPath expression string
|
|
|
|
*/
|
2012-06-18 19:30:09 -07:00
|
|
|
class nsXPathEvaluator MOZ_FINAL : public nsIDOMXPathEvaluator,
|
|
|
|
public nsIXPathEvaluatorInternal
|
2007-03-22 10:30:00 -07:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
nsXPathEvaluator(nsISupports *aOuter);
|
|
|
|
|
|
|
|
nsresult Init();
|
|
|
|
|
|
|
|
// nsISupports interface (support aggregation)
|
|
|
|
NS_DECL_AGGREGATED
|
|
|
|
|
|
|
|
// nsIDOMXPathEvaluator interface
|
|
|
|
NS_DECL_NSIDOMXPATHEVALUATOR
|
|
|
|
|
|
|
|
// nsIXPathEvaluatorInternal interface
|
|
|
|
NS_IMETHOD SetDocument(nsIDOMDocument* aDocument);
|
|
|
|
NS_IMETHOD CreateExpression(const nsAString &aExpression,
|
|
|
|
nsIDOMXPathNSResolver *aResolver,
|
2009-01-18 12:14:14 -08:00
|
|
|
nsTArray<nsString> *aNamespaceURIs,
|
2009-01-21 20:15:34 -08:00
|
|
|
nsTArray<nsCString> *aContractIDs,
|
2007-03-22 10:30:00 -07:00
|
|
|
nsCOMArray<nsISupports> *aState,
|
|
|
|
nsIDOMXPathExpression **aResult);
|
|
|
|
|
2012-12-14 11:10:49 -08:00
|
|
|
// WebIDL API
|
|
|
|
JSObject* WrapObject(JSContext* aCx, JSObject* aScope);
|
|
|
|
static already_AddRefed<nsXPathEvaluator>
|
2013-01-28 03:08:21 -08:00
|
|
|
Constructor(nsISupports* aGlobal, mozilla::ErrorResult& rv);
|
2012-12-14 11:10:49 -08:00
|
|
|
already_AddRefed<nsIDOMXPathExpression>
|
|
|
|
CreateExpression(const nsAString& aExpression,
|
|
|
|
nsIDOMXPathNSResolver* aResolver,
|
|
|
|
mozilla::ErrorResult& rv);
|
|
|
|
already_AddRefed<nsIDOMXPathNSResolver>
|
|
|
|
CreateNSResolver(nsINode* aNodeResolver, mozilla::ErrorResult& rv);
|
|
|
|
already_AddRefed<nsISupports>
|
|
|
|
Evaluate(const nsAString& aExpression, nsINode* aContextNode,
|
|
|
|
nsIDOMXPathNSResolver* aResolver, uint16_t aType,
|
|
|
|
nsISupports* aResult, mozilla::ErrorResult& rv);
|
2007-03-22 10:30:00 -07:00
|
|
|
private:
|
|
|
|
nsresult CreateExpression(const nsAString & aExpression,
|
|
|
|
nsIDOMXPathNSResolver *aResolver,
|
2012-08-22 08:56:38 -07:00
|
|
|
nsTArray<int32_t> *aNamespaceIDs,
|
2009-01-21 20:15:34 -08:00
|
|
|
nsTArray<nsCString> *aContractIDs,
|
2007-03-22 10:30:00 -07:00
|
|
|
nsCOMArray<nsISupports> *aState,
|
|
|
|
nsIDOMXPathExpression **aResult);
|
|
|
|
|
|
|
|
nsWeakPtr mDocument;
|
|
|
|
nsRefPtr<txResultRecycler> mRecycler;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* d0a75e02-b5e7-11d5-a7f2-df109fb8a1fc */
|
|
|
|
#define TRANSFORMIIX_XPATH_EVALUATOR_CID \
|
|
|
|
{ 0xd0a75e02, 0xb5e7, 0x11d5, { 0xa7, 0xf2, 0xdf, 0x10, 0x9f, 0xb8, 0xa1, 0xfc } }
|
|
|
|
|
|
|
|
#endif
|