IVCPlugIn Class Reference

Inheritance diagram for IVCPlugIn:

IBase


Public Methods

virtual bool init (const char *dmSystemName, const char *libName, IDMAccess *dmAccess, IAttrIter *attrs)=0
virtual bool setAttributes (IAttrIter *attrs)=0
virtual void getAttributes (IAttrIter *&attrs)=0
virtual void newVersionObject (IVersion *&version, const char *displayName=NULL)=0

Detailed Description

This is an abstract class that specifies the interface for a version control plug-in that is designed to be aggregated by a separate DM plug-in. A DM plug-in that directly implements version control would *not* implement this interface - the init function on ILib serves to initialize these types of plug-ins. A DM plug-in that doesn't implement version control, but needs to be able to aggregate a VC plug-in would call the init function of the aggregated VC plug-in in its ILib::init() call.

Note: Both IVCPlugIn and IVersionControl would be implemented by the same object in a standalone version control system. An instance of this component would be created for each instance of a DM plug-in component. This implies that there is one instance of this component per library that is controlled by this system. The library name for this instance is passed in through the init call. This information can be gathered by the VC system in order to be able to respond to the "getControlledLibs" function on the IVCSystem interface.


Member Function Documentation

void IVCPlugIn::getAttributes IAttrIter *&    attrs [pure virtual]
 

This function is called to get the collection of the attributes and their values that are in effect for this instance of the VC system. It is typically called by the aggregating DM plug-in in its ILib::getAttributes() call, and the results are merged with its own set of attributes. Note that even attributes that are set to their default values should be reported.

Parameters:
attrs This parameter is set with a pointer to an iterator interface for a collection of attributes. Note that (as with all interface output parameters) the reference count on "attrs" will be incremented by this function prior to returning.

bool IVCPlugIn::init const char *    dmSystemName,
const char *    libName,
IDMAccess *    dmAccess,
IAttrIter *    attrs
[pure virtual]
 

Parameters:
dmSystemName This is passed in from the DM plug-in that's initializing this component. Its the name of the DM system that is aggregating this instance of the VC plug-in.
libName This is the name of the library that the DM system/VC system pair are working on.
dmAccess This is the IDMAccess interface that is implemented by OA. Its passed to the DM system in the ILib::init call, and passed in turn to the VC plug-in via the dmAccess parameter. It represents the communication path back to the main OA layer.
attrs This is in interface pointer to an iterator of the attributes that were set when this library was created. The DM system gets a set of attributes in the ILib::init call, and my choose to pass the same iterator to the VC plug-in. Because of this, the VC plug-in should ignore any attributes that it doesn't understand, since they may be targeted at the DM plug-in.

virtual void IVCPlugIn::newVersionObject IVersion *&    version,
const char *    displayName = NULL
[pure virtual]
 

bool IVCPlugIn::setAttributes IAttrIter *    attrs [pure virtual]
 

This function is used to change *mutable* attributes of the VC system. It will be called by the DM system that's aggregating this instance, when the ILib::setAttributes() function is called. The DM plug-in may pass along the same iterator without filtering the DM specific attributes, so the VC plug-in should ignore any attributes that it doesn't recognize. If an attempt is made to change any *non-mutable* attributes, this function should throw an exception (which must derive from IException).

Parameters:
attrs This is a pointer to the iterator interface that is used to access the set of attributes being passed in.


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

Return to top of page