## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# scfImplementation< Class > Class Template Reference
[Shared Class Facility (SCF)]

Baseclass for the SCF implementation templates. More...

`#include <csutil/scf_implementation.h>`

Inheritance diagram for scfImplementation< Class >:

[legend]
List of all members.

## Public Member Functions

virtual void | AddRefOwner (iBase **ref_owner)
| For weak references: add a reference owner.
virtual void | DecRef ()
| Decrement the reference count.
virtual int | GetRefCount ()
| Get the ref count (only for debugging).
virtual void | IncRef ()
| Increment the number of references to this object.
scfImplementation & | operator= (const scfImplementation &)
| Assign to another instance.
virtual void | RemoveRefOwner (iBase **ref_owner)
| For weak references: remove a reference owner.
| scfImplementation (const scfImplementation &)
| Copy constructor.
| scfImplementation (Class *object, iBase *parent=0)
| Constructor.
virtual | ~scfImplementation ()

## Protected Member Functions

void * | QueryInterface (scfInterfaceID iInterfaceID, scfInterfaceVersion iVersion)
| Query a particular interface implemented by this object.
void | scfRemoveRefOwners ()

## Protected Attributes

Class * | scfObject
iBase * | scfParent
int | scfRefCount
csArray< iBase ** > * | scfWeakRefOwners

## Detailed Description

### template<class Class>
class scfImplementation< Class >

Baseclass for the SCF implementation templates.

Provides common methods such as reference counting and handling of weak references.

Definition at line 125 of file scf_implementation.h.

## Constructor & Destructor Documentation

template<class Class>
scfImplementation< Class >::scfImplementation | ( | Class * | object,
|  | iBase * | parent = `0`
| ) | `[inline]`

| Constructor. Initialize the SCF-implementation in class named Class. Will be called from scfImplementation(Ext)N constructor Definition at line 132 of file scf_implementation.h.

template<class Class>
scfImplementation< Class >::scfImplementation | ( | const scfImplementation< Class > & |  | ) | `[inline]`

| Copy constructor. Use of the default copy constructor is nor desired since the information is insufficient to fully initialize scfImplementation; hence, an explicit copy constructor must be created in the derived class that initializes scfImplementation like in the normal constructor, i.e. "scfImplementation (this)". Definition at line 148 of file scf_implementation.h.

## Member Function Documentation

template<class Class>
virtual void scfImplementation< Class >::AddRefOwner | ( | iBase ** | ref_owner | ) | `[inline, virtual]`

| For weak references: add a reference owner. Implements iBase. Definition at line 200 of file scf_implementation.h.

template<class Class>
virtual void scfImplementation< Class >::DecRef | ( |  | ) | `[inline, virtual]`

| Decrement the reference count. Implements iBase. Reimplemented in csPoolEvent. Definition at line 173 of file scf_implementation.h.

template<class Class>
virtual int scfImplementation< Class >::GetRefCount | ( |  | ) | `[inline, virtual]`

| Get the ref count (only for debugging). Implements iBase. Definition at line 195 of file scf_implementation.h.

template<class Class>
virtual void scfImplementation< Class >::IncRef | ( |  | ) | `[inline, virtual]`

| Increment the number of references to this object. Implements iBase. Definition at line 187 of file scf_implementation.h.

template<class Class>
scfImplementation& scfImplementation< Class >::operator= | ( | const scfImplementation< Class > & |  | ) | `[inline]`

| Assign to another instance. When assigning an SCF object to another, anything contained in this class should not be copied, since it's all instance- specific. Hence the assignment operator does nothing. Definition at line 168 of file scf_implementation.h.

template<class Class>
void* scfImplementation< Class >::QueryInterface | ( | scfInterfaceID | iInterfaceID,
|  | scfInterfaceVersion | iVersion
| ) | `[inline, protected, virtual]`

Query a particular interface implemented by this object.

You are _not_ allowed to cast this to anything but a pointer to this interface (not even iBase). Use scfQueryInterface<interface> instead of using this method directly.

Implements iBase.

Reimplemented in scfImplementation0< Class >, scfImplementation1< Class, I1 >, scfImplementation2< Class, I1, I2 >, scfImplementation3< Class, I1, I2, I3 >, scfImplementation4< Class, I1, I2, I3, I4 >, scfImplementation5< Class, I1, I2, I3, I4, I5 >, scfImplementation6< Class, I1, I2, I3, I4, I5, I6 >, scfImplementation1< csObject, iObject >, scfImplementation1< csRenderBuffer, iRenderBuffer >, scfImplementation1< csThreadJobQueue, iJobQueue >, scfImplementation1< scfStringArray, iStringArray >, scfImplementation1< csShaderExpressionAccessor, iShaderVariableAccessor >, scfImplementation1< csMemFile, iFile >, scfImplementation1< csImageBase, iImage >, scfImplementation1< csTiledCoverageBuffer, iDebugHelper >, scfImplementation1< csClipper, iClipper2D >, scfImplementation1< csDataBuffer, iDataBuffer >, scfImplementation1< csNullCacheManager, iCacheManager >, scfImplementation1< csDocumentNodeCommon, iDocumentNode >, scfImplementation1< csConfigFile, iConfigFile >, scfImplementation1< csTextProgressMeter, iProgressMeter >, scfImplementation1< csEventAttributeIterator, iEventAttributeIterator >, scfImplementation1< csTinyDocumentSystem, iDocumentSystem >, scfImplementation1< csNormalizationCubeAccessor, iShaderVariableAccessor >, scfImplementation1< csObjectModel, iObjectModel >, scfImplementation1< csEmptyDocumentNodeIterator, iDocumentNodeIterator >, scfImplementation1< scfString, iString >, scfImplementation1< csVerbosityManager, iVerbosityManager >, scfImplementation1< csPolygonMeshBox, iPolygonMesh >, scfImplementation1< csPhysicalFile, iFile >, scfImplementation1< csKeyComposer, iKeyComposer >, scfImplementation1< csCommonImageFileLoader, iImageFileLoader >, scfImplementation1< csTextureManager, iTextureManager >, scfImplementation1< csSoundDataRaw, iSoundData >, scfImplementation1< FontDeleteNotify, iFontDeleteNotify >, scfImplementation1< csVfsCacheManager, iCacheManager >, scfImplementation1< csWin32RegistryIterator, iConfigIterator >, scfImplementation1< csEmptyDocumentAttributeIterator, iDocumentAttributeIterator >, scfImplementation1< csView, iView >, scfImplementation1< csEventNameRegistry, iEventNameRegistry >, scfImplementation1< csConfigDocument, iConfigFile >, scfImplementation1< csCommandLineParser, iCommandLineParser >, scfImplementation1< csEventCord, iEventCord >, scfImplementation1< csSoundListener, iSoundListener >, scfImplementation1< csPluginManager, iPluginManager >, scfImplementation1< csEventQueue, iEventQueue >, scfImplementation1< csEventOutlet, iEventOutlet >, scfImplementation1< csTextureHandle, iTextureHandle >, scfImplementation1< LoaderJob, iJob >, scfImplementation1< csObjectRegistry, iObjectRegistry >, scfImplementation1< csSoundHandle, iSoundHandle >, scfImplementation1< csMeshFactory, iMeshObjectFactory >, scfImplementation1< csPolygonMesh, iPolygonMesh >, scfImplementation1< EventHandlerImpl, iEventHandler >, scfImplementation1< csShaderVariableContext, iShaderVariableContext >, scfImplementation1< FilterDocumentNodeIterator< T >, iDocumentNodeIterator >, scfImplementation1< EventHandler, iEventHandler >, scfImplementation1< csKDTree, iDebugHelper >, scfImplementation1< csEventHandlerRegistry, iEventHandlerRegistry >, scfImplementation1< csGeomDebugHelper, iDebugHelper >, scfImplementation1< csScfStringSet, iStringSet >, scfImplementation1< csParasiticDataBufferBase, iDataBuffer >, scfImplementation1< csDocumentAttributeCommon, iDocumentAttribute >, scfImplementation1< csPath, iPath >, scfImplementation1< csEventTimer, iEventTimer >, scfImplementation1< csWin32RegistryConfig, iConfigFile >, scfImplementation1< csEvent, iEvent >, scfImplementation1< csVirtualClock, iVirtualClock >, scfImplementation1< csBaseTextureFactory, iTextureFactory >, scfImplementation2< csKeyboardDriver, iKeyboardDriver, iEventHandler >, scfImplementation2< csJoystickDriver, iJoystickDriver, iEventHandler >, scfImplementation2< csMeshType, iMeshObjectType, iComponent >, scfImplementation2< csMouseDriver, iMouseDriver, iEventHandler >, scfImplementation2< csBaseRenderStepType, iRenderStepType, iComponent >, scfImplementation2< csInputBinder, iInputBinder, iEventHandler >, scfImplementation2< csShaderProgram, iShaderProgram, iShaderDestinationResolver >, scfImplementation2< csConfigManager, iConfigManager, scfFakeInterface< iConfigFile > >, scfImplementation2< PostProcessFrameEventDispatcher, csEventQueue::iTypedFrameEventDispatcher, scfFakeInterface< iEventHandler > >, scfImplementation2< PreProcessFrameEventDispatcher, csEventQueue::iTypedFrameEventDispatcher, scfFakeInterface< iEventHandler > >, scfImplementation2< ProcessFrameEventDispatcher, csEventQueue::iTypedFrameEventDispatcher, scfFakeInterface< iEventHandler > >, scfImplementation2< csBaseRenderStepLoader, iLoaderPlugin, iComponent >, scfImplementation2< FinalProcessFrameEventDispatcher, csEventQueue::iTypedFrameEventDispatcher, scfFakeInterface< iEventHandler > >, scfImplementation6< csGraphics2D, iGraphics2D, iComponent, iNativeWindow, iNativeWindowManager, iPluginConfig, iDebugHelper >, scfImplementationExt0< csDocumentNodeReadOnly, csDocumentNodeCommon >, scfImplementationExt0< csImageMemory, csImageBase >, scfImplementationExt0< csScreenShot, csImageBase >, scfImplementationExt0< csImageCubeMapMaker, csImageBase >, scfImplementationExt0< csNewtonianParticleSystem, csParticleSystem >, scfImplementationExt0< csParasiticDataBuffer, csParasiticDataBufferBase >, scfImplementationExt0< csImageVolumeMaker, csImageBase >, scfImplementationExt0< csCommonImageFile, csImageMemory >, scfImplementationExt1< csMapNode, csObject, iMapNode >, scfImplementationExt1< csColliderWrapper, csObject, scfFakeInterface< csColliderWrapper > >, scfImplementationExt1< csSoundWrapper, csObject, iSoundWrapper >, scfImplementationExt1< csMeshObject, csObjectModel, iMeshObject >, scfImplementationExt1< csKeyValuePair, csObject, iKeyValuePair >, scfImplementationExt1< csNewParticleSystem, csMeshObject, iParticleState >, scfImplementationExt2< csParticleSystem, csObjectModel, iMeshObject, iParticleState >, scfImplementationExt2< csGraphics2DGLCommon, csGraphics2D, iEventPlug, iOpenGLDriverDatabase >, and scfImplementationExt2< csProcTexture, csObject, iTextureWrapper, iProcTexture >.

Definition at line 240 of file scf_implementation.h.

template<class Class>
virtual void scfImplementation< Class >::RemoveRefOwner | ( | iBase ** | ref_owner | ) | `[inline, virtual]`

| For weak references: remove a reference owner. Implements iBase. Definition at line 207 of file scf_implementation.h.

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

- csutil/scf_implementation.h