[#BloombergLP-bdlcc-SharedObjectPool_Rep]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlcc.adoc[bdlcc]::SharedObjectPool&lowbar;Rep
:relfileprefix: ../../
:mrdocs:

Shared pointer representation object used by `SharedObjectPool`&period;

== Synopsis

Declared in `&lt;bdlcc&lowbar;sharedobjectpool&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class TYPE,
    class RESETTER&gt;
class SharedObjectPool&lowbar;Rep
    : public xref:BloombergLP/bslma/SharedPtrRep.adoc[bslma::SharedPtrRep]
----

== Base Classes

[cols="1,4"]
|===
| Name| Description
| `xref:BloombergLP/bslma/SharedPtrRep.adoc[bslma::SharedPtrRep]`
| Partially implemented shared pointer representation protocol&period;
|===

== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlcc/SharedObjectPool_Rep/2constructor.adoc[`SharedObjectPool&lowbar;Rep`]         [.small]#[constructor]#
| Construct a new representation that embeds a `TYPE` object&period;
| xref:BloombergLP/bdlcc/SharedObjectPool_Rep/2destructor.adoc[`&#126;SharedObjectPool&lowbar;Rep`] [.small]#[destructor]# [.small]#[virtual]#
| Destroy this representation object and the embedded instance of `TYPE`&period;
| xref:BloombergLP/bslma/SharedPtrRep/acquireRef.adoc[`acquireRef`] 
| Atomically acquire a shared reference to the shared object referred to by this representation&period; The behavior is undefined unless `0 &lt; numReferences()`&period;
| xref:BloombergLP/bslma/SharedPtrRep/acquireWeakRef.adoc[`acquireWeakRef`] 
| Atomically acquire a weak reference to the shared object&period;
| xref:BloombergLP/bdlcc/SharedObjectPool_Rep/disposeObject.adoc[`disposeObject`]  [.small]#[virtual]#
| Release the object managed by this representation&period;
| xref:BloombergLP/bdlcc/SharedObjectPool_Rep/disposeRep.adoc[`disposeRep`]  [.small]#[virtual]#
| Release this representation object back to its pool&period;
| xref:BloombergLP/bdlcc/SharedObjectPool_Rep/getDeleter.adoc[`getDeleter`]  [.small]#[virtual]#
| Return NULL&period; Shared object pools strictly control the delete policy for their objects, and do not expose it to end users&period;
| xref:BloombergLP/bslma/SharedPtrRep/hasUniqueOwner.adoc[`hasUniqueOwner`] 
| Return `true` if there is only one shared reference and no weak references to the object referred to by this representation, and `false` otherwise&period;
| xref:BloombergLP/bslma/SharedPtrRep/incrementRefs.adoc[`incrementRefs`] 
| Atomically increment the number of shared references&period;
| xref:BloombergLP/bslma/SharedPtrRep/numReferences.adoc[`numReferences`] 
| Return a &quot;snapshot&quot; of the current number of shared references to the shared object referred to by this representation object&period;
| xref:BloombergLP/bslma/SharedPtrRep/numWeakReferences.adoc[`numWeakReferences`] 
| Return a &quot;snapshot&quot; of the current number of weak references to the shared object referred to by this representation object&period;
| xref:BloombergLP/bdlcc/SharedObjectPool_Rep/originalPtr.adoc[`originalPtr`]  [.small]#[virtual]#
| Return (untyped) address of the object managed by this representation&period; This virtual override effectively returns &quot;(void&ast;)ptr()&quot;&period;
| xref:BloombergLP/bdlcc/SharedObjectPool_Rep/ptr.adoc[`ptr`] 
| Return a pointer to the in&hyphen;place object&period;
| xref:BloombergLP/bslma/SharedPtrRep/releaseRef.adoc[`releaseRef`] 
| Atomically release a shared reference to the shared object&period;
| xref:BloombergLP/bslma/SharedPtrRep/releaseWeakRef.adoc[`releaseWeakRef`] 
| Atomically release a weak reference to the shared object&period;
| xref:BloombergLP/bdlcc/SharedObjectPool_Rep/reset.adoc[`reset`] 
| Invoke the object resetter specified at construction on the associated object&period;
| xref:BloombergLP/bslma/SharedPtrRep/resetCountsRaw.adoc[`resetCountsRaw`] 
| Reset the shared and weak reference counts to the specified values&period;
| xref:BloombergLP/bslma/SharedPtrRep/tryAcquireRef.adoc[`tryAcquireRef`] 
| Try to atomically acquire a shared reference to the shared object&period;
|===


== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslma/SharedPtrRep/managedPtrDeleter.adoc[`managedPtrDeleter`] 
| Release the shared reference held by the specified representation&period;
| xref:BloombergLP/bslma/SharedPtrRep/managedPtrEmptyDeleter.adoc[`managedPtrEmptyDeleter`] 
| Deleter that has no effect when converting a null shared pointer&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
