Back to index

lightning-sunbird  0.9+nobinonly
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends
CompositeDataSourceImpl Class Reference
Inheritance diagram for CompositeDataSourceImpl:
Inheritance graph
[legend]
Collaboration diagram for CompositeDataSourceImpl:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 CompositeDataSourceImpl (void)
 CompositeDataSourceImpl (char **dataSources)
NS_DECL_ISUPPORTS
NS_DECL_NSIRDFDATASOURCE
NS_DECL_NSIRDFCOMPOSITEDATASOURCE
NS_DECL_NSIRDFOBSERVER PRBool 
HasAssertionN (int n, nsIRDFResource *source, nsIRDFResource *property, nsIRDFNode *target, PRBool tv)
void AddDataSource (in nsIRDFDataSource aDataSource)
 Add a datasource the the composite data source.
void RemoveDataSource (in nsIRDFDataSource aDataSource)
 Remove a datasource from the composite data source.
nsISimpleEnumerator GetDataSources ()
 Retrieve the datasources in the composite data source.
nsIRDFResource GetSource (in nsIRDFResource aProperty, in nsIRDFNode aTarget, in boolean aTruthValue)
 Find an RDF resource that points to a given node over the specified arc & truth value.
nsISimpleEnumerator GetSources (in nsIRDFResource aProperty, in nsIRDFNode aTarget, in boolean aTruthValue)
 Find all RDF resources that point to a given node over the specified arc & truth value.
nsIRDFNode GetTarget (in nsIRDFResource aSource, in nsIRDFResource aProperty, in boolean aTruthValue)
 Find a child of that is related to the source by the given arc arc and truth value.
nsISimpleEnumerator GetTargets (in nsIRDFResource aSource, in nsIRDFResource aProperty, in boolean aTruthValue)
 Find all children of that are related to the source by the given arc arc and truth value.
void Assert (in nsIRDFResource aSource, in nsIRDFResource aProperty, in nsIRDFNode aTarget, in boolean aTruthValue)
 Add an assertion to the graph.
void Unassert (in nsIRDFResource aSource, in nsIRDFResource aProperty, in nsIRDFNode aTarget)
 Remove an assertion from the graph.
void Change (in nsIRDFResource aSource, in nsIRDFResource aProperty, in nsIRDFNode aOldTarget, in nsIRDFNode aNewTarget)
 Change an assertion from.
void Move (in nsIRDFResource aOldSource, in nsIRDFResource aNewSource, in nsIRDFResource aProperty, in nsIRDFNode aTarget)
 'Move' an assertion from
boolean HasAssertion (in nsIRDFResource aSource, in nsIRDFResource aProperty, in nsIRDFNode aTarget, in boolean aTruthValue)
 Query whether an assertion exists in this graph.
void AddObserver (in nsIRDFObserver aObserver)
 Add an observer to this data source.
void RemoveObserver (in nsIRDFObserver aObserver)
 Remove an observer from this data source.
nsISimpleEnumerator ArcLabelsIn (in nsIRDFNode aNode)
 Get a cursor to iterate over all the arcs that point into a node.
nsISimpleEnumerator ArcLabelsOut (in nsIRDFResource aSource)
 Get a cursor to iterate over all the arcs that originate in a resource.
nsISimpleEnumerator GetAllResources ()
 Retrieve all of the resources that the data source currently refers to.
boolean IsCommandEnabled (in nsISupportsArray aSources, in nsIRDFResource aCommand, in nsISupportsArray aArguments)
 Returns whether a given command is enabled for a set of sources.
void DoCommand (in nsISupportsArray aSources, in nsIRDFResource aCommand, in nsISupportsArray aArguments)
 Perform the specified command on set of sources.
nsISimpleEnumerator GetAllCmds (in nsIRDFResource aSource)
 Returns the set of all commands defined for a given source.
boolean hasArcIn (in nsIRDFNode aNode, in nsIRDFResource aArc)
 Returns true if the specified node is pointed to by the specified arc.
boolean hasArcOut (in nsIRDFResource aSource, in nsIRDFResource aArc)
 Returns true if the specified node has the specified outward arc.
void beginUpdateBatch ()
 Notify observers that the datasource is about to send several notifications at once.
void endUpdateBatch ()
 Notify observers that the datasource has completed issuing a notification group.
void onAssert (in nsIRDFDataSource aDataSource, in nsIRDFResource aSource, in nsIRDFResource aProperty, in nsIRDFNode aTarget)
 This method is called whenever a new assertion is made in the data source.
void onUnassert (in nsIRDFDataSource aDataSource, in nsIRDFResource aSource, in nsIRDFResource aProperty, in nsIRDFNode aTarget)
 This method is called whenever an assertion is removed from the data source.
void onChange (in nsIRDFDataSource aDataSource, in nsIRDFResource aSource, in nsIRDFResource aProperty, in nsIRDFNode aOldTarget, in nsIRDFNode aNewTarget)
 This method is called when the object of an assertion changes from one value to another.
void onMove (in nsIRDFDataSource aDataSource, in nsIRDFResource aOldSource, in nsIRDFResource aNewSource, in nsIRDFResource aProperty, in nsIRDFNode aTarget)
 This method is called when the subject of an assertion changes from one value to another.
void onBeginUpdateBatch (in nsIRDFDataSource aDataSource)
 This method is called when a datasource is about to send several notifications at once.
void onEndUpdateBatch (in nsIRDFDataSource aDataSource)
 This method is called when a datasource has completed issuing a notification group.

Public Attributes

attribute boolean allowNegativeAssertions
 Set this value to true if the composite datasource may contains at least one datasource that has negative assertions.
attribute boolean coalesceDuplicateArcs
 Set to true if the composite datasource should take care to coalesce duplicate arcs when returning values from queries.
readonly attribute string URI
 The "URI" of the data source.

Protected Member Functions

virtual ~CompositeDataSourceImpl ()

Protected Attributes

nsCOMArray< nsIRDFObservermObservers
nsCOMArray< nsIRDFDataSourcemDataSources
PRBool mAllowNegativeAssertions
PRBool mCoalesceDuplicateArcs
PRInt32 mUpdateBatchNest
nsFixedSizeAllocator mAllocator

Friends

class CompositeEnumeratorImpl
class CompositeArcsInOutEnumeratorImpl
class CompositeAssertionEnumeratorImpl

Detailed Description

Definition at line 100 of file nsCompositeDataSource.cpp.


Constructor & Destructor Documentation

Definition at line 622 of file nsCompositeDataSource.cpp.

       : mAllowNegativeAssertions(PR_TRUE),
         mCoalesceDuplicateArcs(PR_TRUE),
      mUpdateBatchNest(0)
{
    static const size_t kBucketSizes[] = {
        sizeof(CompositeAssertionEnumeratorImpl),
        sizeof(CompositeArcsInOutEnumeratorImpl) };

    static const PRInt32 kNumBuckets = sizeof(kBucketSizes) / sizeof(size_t);

    // Per news://news.mozilla.org/39BEC105.5090206%40netscape.com
    static const PRInt32 kInitialSize = 256;

    mAllocator.Init("nsCompositeDataSource", kBucketSizes, kNumBuckets, kInitialSize);

#ifdef PR_LOGGING
    if (nsRDFLog == nsnull) 
        nsRDFLog = PR_NewLogModule("RDF");
#endif
}
virtual CompositeDataSourceImpl::~CompositeDataSourceImpl ( ) [inline, protected, virtual]

Definition at line 134 of file nsCompositeDataSource.cpp.

{}

Member Function Documentation

Add a datasource the the composite data source.

Parameters:
aDataSourcethe datasource to add to composite

Add an observer to this data source.

If the datasource supports observers, the datasource source should hold a strong reference to the observer.

Here is the caller graph for this function:

Get a cursor to iterate over all the arcs that point into a node.

Returns:
NS_OK unless a catastrophic error occurs. If the method returns NS_OK, you may assume that labels points to a valid (but possible empty) nsISimpleEnumerator object.

Here is the caller graph for this function:

Get a cursor to iterate over all the arcs that originate in a resource.

Returns:
NS_OK unless a catastrophic error occurs. If the method returns NS_OK, you may assume that labels points to a valid (but possible empty) nsISimpleEnumerator object.

Here is the caller graph for this function:

void nsIRDFDataSource::Assert ( in nsIRDFResource  aSource,
in nsIRDFResource  aProperty,
in nsIRDFNode  aTarget,
in boolean  aTruthValue 
) [inherited]

Add an assertion to the graph.

Here is the caller graph for this function:

Notify observers that the datasource is about to send several notifications at once.

This must be followed by calling endUpdateBatch(), otherwise viewers will get out of sync.

void nsIRDFDataSource::Change ( in nsIRDFResource  aSource,
in nsIRDFResource  aProperty,
in nsIRDFNode  aOldTarget,
in nsIRDFNode  aNewTarget 
) [inherited]

Change an assertion from.

[aSource]--[aProperty]-->[aOldTarget]

to

[aSource]--[aProperty]-->[aNewTarget]

Here is the caller graph for this function:

void nsIRDFDataSource::DoCommand ( in nsISupportsArray  aSources,
in nsIRDFResource  aCommand,
in nsISupportsArray  aArguments 
) [inherited]

Perform the specified command on set of sources.

Here is the caller graph for this function:

Notify observers that the datasource has completed issuing a notification group.

Returns the set of all commands defined for a given source.

Here is the caller graph for this function:

Retrieve all of the resources that the data source currently refers to.

Here is the caller graph for this function:

Retrieve the datasources in the composite data source.

Returns:
an nsISimpleEnumerator that will enumerate each of the datasources in the composite
nsIRDFResource nsIRDFDataSource::GetSource ( in nsIRDFResource  aProperty,
in nsIRDFNode  aTarget,
in boolean  aTruthValue 
) [inherited]

Find an RDF resource that points to a given node over the specified arc & truth value.

Returns:
NS_RDF_NO_VALUE if there is no source that leads to the target with the specified property.

Here is the caller graph for this function:

nsISimpleEnumerator nsIRDFDataSource::GetSources ( in nsIRDFResource  aProperty,
in nsIRDFNode  aTarget,
in boolean  aTruthValue 
) [inherited]

Find all RDF resources that point to a given node over the specified arc & truth value.

Returns:
NS_OK unless a catastrophic error occurs. If the method returns NS_OK, you may assume that nsISimpleEnumerator points to a valid (but possibly empty) cursor.

Here is the caller graph for this function:

nsIRDFNode nsIRDFDataSource::GetTarget ( in nsIRDFResource  aSource,
in nsIRDFResource  aProperty,
in boolean  aTruthValue 
) [inherited]

Find a child of that is related to the source by the given arc arc and truth value.

Returns:
NS_RDF_NO_VALUE if there is no target accessable from the source via the specified property.

Here is the caller graph for this function:

nsISimpleEnumerator nsIRDFDataSource::GetTargets ( in nsIRDFResource  aSource,
in nsIRDFResource  aProperty,
in boolean  aTruthValue 
) [inherited]

Find all children of that are related to the source by the given arc arc and truth value.

Returns:
NS_OK unless a catastrophic error occurs. If the method returns NS_OK, you may assume that nsISimpleEnumerator points to a valid (but possibly empty) cursor.

Here is the caller graph for this function:

boolean nsIRDFDataSource::hasArcIn ( in nsIRDFNode  aNode,
in nsIRDFResource  aArc 
) [inherited]

Returns true if the specified node is pointed to by the specified arc.

Equivalent to enumerating ArcLabelsIn and comparing for the specified arc.

Returns true if the specified node has the specified outward arc.

Equivalent to enumerating ArcLabelsOut and comparing for the specified arc.

boolean nsIRDFDataSource::HasAssertion ( in nsIRDFResource  aSource,
in nsIRDFResource  aProperty,
in nsIRDFNode  aTarget,
in boolean  aTruthValue 
) [inherited]

Query whether an assertion exists in this graph.

Here is the caller graph for this function:

PRBool CompositeDataSourceImpl::HasAssertionN ( int  n,
nsIRDFResource source,
nsIRDFResource property,
nsIRDFNode target,
PRBool  tv 
)

Definition at line 848 of file nsCompositeDataSource.cpp.

{
    nsresult rv;
    for (PRInt32 m = 0; m < n; ++m) {
        PRBool result;
        rv = mDataSources[m]->HasAssertion(aSource, aProperty, aTarget,
                                           aTruthValue, &result);
        if (NS_FAILED(rv))
            return PR_FALSE;

        // found it!
        if (result)
            return PR_TRUE;
    }
    return PR_FALSE;
}
boolean nsIRDFDataSource::IsCommandEnabled ( in nsISupportsArray  aSources,
in nsIRDFResource  aCommand,
in nsISupportsArray  aArguments 
) [inherited]

Returns whether a given command is enabled for a set of sources.

Here is the caller graph for this function:

void nsIRDFDataSource::Move ( in nsIRDFResource  aOldSource,
in nsIRDFResource  aNewSource,
in nsIRDFResource  aProperty,
in nsIRDFNode  aTarget 
) [inherited]

'Move' an assertion from

[aOldSource]--[aProperty]-->[aTarget]

to

[aNewSource]--[aProperty]-->[aTarget]

Here is the caller graph for this function:

void nsIRDFObserver::onAssert ( in nsIRDFDataSource  aDataSource,
in nsIRDFResource  aSource,
in nsIRDFResource  aProperty,
in nsIRDFNode  aTarget 
) [inherited]

This method is called whenever a new assertion is made in the data source.

Parameters:
aDataSourcethe datasource that is issuing the notification.
aSourcethe subject of the assertion
aPropertythe predicate of the assertion
aTargetthe object of the assertion

This method is called when a datasource is about to send several notifications at once.

The observer can use this as a cue to optimize its behavior. The observer can expect the datasource to call endUpdateBatch() when the group of notifications has completed.

Parameters:
aDataSourcethe datasource that is going to be issuing the notifications.
void nsIRDFObserver::onChange ( in nsIRDFDataSource  aDataSource,
in nsIRDFResource  aSource,
in nsIRDFResource  aProperty,
in nsIRDFNode  aOldTarget,
in nsIRDFNode  aNewTarget 
) [inherited]

This method is called when the object of an assertion changes from one value to another.

Parameters:
aDataSourcethe datasource that is issuing the notification.
aSourcethe subject of the assertion
aPropertythe predicate of the assertion
aOldTargetthe old object of the assertion
aNewTargetthe new object of the assertion

This method is called when a datasource has completed issuing a notification group.

Parameters:
aDataSourcethe datasource that has finished issuing a group of notifications
void nsIRDFObserver::onMove ( in nsIRDFDataSource  aDataSource,
in nsIRDFResource  aOldSource,
in nsIRDFResource  aNewSource,
in nsIRDFResource  aProperty,
in nsIRDFNode  aTarget 
) [inherited]

This method is called when the subject of an assertion changes from one value to another.

Parameters:
aDataSourcethe datasource that is issuing the notification.
aOldSourcethe old subject of the assertion
aNewSourcethe new subject of the assertion
aPropertythe predicate of the assertion
aTargetthe object of the assertion
void nsIRDFObserver::onUnassert ( in nsIRDFDataSource  aDataSource,
in nsIRDFResource  aSource,
in nsIRDFResource  aProperty,
in nsIRDFNode  aTarget 
) [inherited]

This method is called whenever an assertion is removed from the data source.

Parameters:
aDataSourcethe datasource that is issuing the notification.
aSourcethe subject of the assertion
aPropertythe predicate of the assertion
aTargetthe object of the assertion

Remove a datasource from the composite data source.

Parameters:
aDataSourcethe datasource to remove from the composite

Here is the caller graph for this function:

Remove an observer from this data source.

Here is the caller graph for this function:

void nsIRDFDataSource::Unassert ( in nsIRDFResource  aSource,
in nsIRDFResource  aProperty,
in nsIRDFNode  aTarget 
) [inherited]

Remove an assertion from the graph.

Here is the caller graph for this function:


Friends And Related Function Documentation

friend class CompositeArcsInOutEnumeratorImpl [friend]

Definition at line 137 of file nsCompositeDataSource.cpp.

friend class CompositeAssertionEnumeratorImpl [friend]

Definition at line 138 of file nsCompositeDataSource.cpp.

friend class CompositeEnumeratorImpl [friend]

Definition at line 136 of file nsCompositeDataSource.cpp.


Member Data Documentation

Set this value to true if the composite datasource may contains at least one datasource that has negative assertions.

(This is the default.)

Set this value to false if none of the datasources being composed contains a negative assertion. This allows the composite datasource to perform some query optimizations.

By default, this value is true</true>.

Definition at line 61 of file nsIRDFCompositeDataSource.idl.

Set to true if the composite datasource should take care to coalesce duplicate arcs when returning values from queries.

(This is the default.)

Set to false if the composite datasource shouldn't bother to check for duplicates. This allows the composite datasource to more efficiently answer queries.

By default, this value is true.

Definition at line 74 of file nsIRDFCompositeDataSource.idl.

nsFixedSizeAllocator CompositeDataSourceImpl::mAllocator [protected]

Definition at line 132 of file nsCompositeDataSource.cpp.

Definition at line 128 of file nsCompositeDataSource.cpp.

Definition at line 129 of file nsCompositeDataSource.cpp.

Definition at line 126 of file nsCompositeDataSource.cpp.

Definition at line 125 of file nsCompositeDataSource.cpp.

Definition at line 130 of file nsCompositeDataSource.cpp.

readonly attribute string nsIRDFDataSource::URI [inherited]

The "URI" of the data source.

This used by the RDF service's |GetDataSource()| method to cache datasources.

Definition at line 56 of file nsIRDFDataSource.idl.


The documentation for this class was generated from the following file: