libcamera: base: extensible: Pass private pointer as unique_ptr<>
The Extensible constructor takes a pointer to a Private instance, whose lifetime it then manages. Make this explicit in the API by passing the pointer as a std::unique_ptr<Private>. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
@@ -147,9 +147,12 @@ namespace libcamera {
|
||||
/**
|
||||
* \brief Construct an instance of an Extensible class
|
||||
* \param[in] d Pointer to the private data instance
|
||||
*
|
||||
* The private data lifetime is managed by the Extensible class, which destroys
|
||||
* it when the Extensible instance is destroyed.
|
||||
*/
|
||||
Extensible::Extensible(Extensible::Private *d)
|
||||
: d_(d)
|
||||
Extensible::Extensible(std::unique_ptr<Extensible::Private> d)
|
||||
: d_(std::move(d))
|
||||
{
|
||||
*const_cast<Extensible **>(&d_->o_) = this;
|
||||
}
|
||||
@@ -163,6 +166,10 @@ Extensible::Extensible(Extensible::Private *d)
|
||||
* overriden _d() functions that return the correct pointer type to the
|
||||
* corresponding derived Private class.
|
||||
*
|
||||
* The lifetime of the private data is tied to the Extensible class. The caller
|
||||
* shall not retain any reference to the returned pointer for longer than it
|
||||
* holds a reference to the Extensible instance.
|
||||
*
|
||||
* \return A pointer to the private data instance
|
||||
*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user