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 : #include "nscore.h"
7 : #include "nsCOMPtr.h"
8 :
9 : #include "nsXULTemplateQueryProcessorRDF.h"
10 : #include "nsRDFQuery.h"
11 :
12 0 : NS_IMPL_CYCLE_COLLECTION(nsRDFQuery, mQueryNode)
13 :
14 0 : NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsRDFQuery)
15 0 : NS_INTERFACE_MAP_ENTRY(nsITemplateRDFQuery)
16 0 : NS_INTERFACE_MAP_ENTRY(nsISupports)
17 0 : NS_INTERFACE_MAP_END
18 :
19 0 : NS_IMPL_CYCLE_COLLECTING_ADDREF(nsRDFQuery)
20 0 : NS_IMPL_CYCLE_COLLECTING_RELEASE(nsRDFQuery)
21 :
22 : void
23 0 : nsRDFQuery::Finish()
24 : {
25 : // the template builder is going away and the query processor likely as
26 : // well. Clear the reference to avoid calling it.
27 0 : mProcessor = nullptr;
28 0 : mCachedResults = nullptr;
29 0 : }
30 :
31 : nsresult
32 0 : nsRDFQuery::SetCachedResults(nsXULTemplateQueryProcessorRDF* aProcessor,
33 : const InstantiationSet& aInstantiations)
34 : {
35 0 : mCachedResults = new nsXULTemplateResultSetRDF(aProcessor, this, &aInstantiations);
36 0 : return NS_OK;
37 : }
38 :
39 :
40 : void
41 0 : nsRDFQuery::UseCachedResults(nsISimpleEnumerator** aResults)
42 : {
43 0 : *aResults = mCachedResults;
44 0 : NS_IF_ADDREF(*aResults);
45 :
46 0 : mCachedResults = nullptr;
47 0 : }
|