Pylon Logo Basler Logo
Public Member Functions | List of all members
Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT > Class Template Reference

Implementation Detail: Header only implementation class for creating device specific grab result ptrs. More...

#include <pylon/private/DeviceSpecificGrabResultPtr.h>

Public Member Functions

 CDeviceSpecificGrabResultPtr ()
 Creates a smart pointer. More...
 
 CDeviceSpecificGrabResultPtr (const CGrabResultPtr &rhs)
 Creates a copy of a smart pointer. More...
 
CDeviceSpecificGrabResultPtr< GrabResultDataT > & operator= (const CGrabResultPtr &rhs)
 Assignment of a smart pointer. More...
 
 CDeviceSpecificGrabResultPtr (const CDeviceSpecificGrabResultPtr< GrabResultDataT > &rhs)
 Creates a copy of a smart pointer. More...
 
CDeviceSpecificGrabResultPtr< GrabResultDataT > & operator= (const CDeviceSpecificGrabResultPtr< GrabResultDataT > &rhs)
 Assignment of a smart pointer. More...
 
virtual ~CDeviceSpecificGrabResultPtr ()
 Destroys the smart pointer. More...
 
GrabResultDataT * operator-> () const
 Allows accessing the referenced data. More...
 
bool IsValid () const
 Check whether data is referenced. More...
 
 operator bool () const
 Check whether data is referenced. More...
 
 operator IImage & () const
 Provides an IImage interface to the grab result. More...
 
bool IsUnique () const
 Indicates that the held grab result data and buffer are only referenced by this grab result. More...
 
void Release ()
 The currently referenced data is released. More...
 

Detailed Description

template<typename GrabResultDataT>
class Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >

Implementation Detail: Header only implementation class for creating device specific grab result ptrs.

This class is used for distributing the grab result data of a camera. It controls the reuse and lifetime of the referenced buffer. When all smart pointers referencing a buffer go out of scope the referenced buffer is reused or destroyed. The data and the held buffer are still valid after the camera object it originated from has been destroyed.

Attention
The grabbing will stop with an input queue underrun, when the grab results are never released, e.g. when put into a container.

The CGrabResultPtr class provides a cast operator that allows passing the grab result directly to functions or methods that take an const IImage& as parameter, e.g. image saving functions or image format converter methods.

Attention
The returned reference to IImage is only valid as long the CGrabResultPtr object it came from is not destroyed.
Thread Safety: Instances of CGrabResultPtr referencing the same grab result can be used from any thread context.

Constructor & Destructor Documentation

template<typename GrabResultDataT >
Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::CDeviceSpecificGrabResultPtr ( )

Creates a smart pointer.

Postcondition
No grab result is referenced.
template<typename GrabResultDataT >
Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::CDeviceSpecificGrabResultPtr ( const CGrabResultPtr rhs)

Creates a copy of a smart pointer.

Parameters
[in]rhsAnother smart pointer, source of the result data to reference. The data itself is not copied.
Postcondition
  • Another reference to the grab result of the source is held if it references a grab result.
  • No grab result is referenced if the source does not reference a grab result or if the result data is not convertible.
Error Safety:
Still valid after error.
template<typename GrabResultDataT>
Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::CDeviceSpecificGrabResultPtr ( const CDeviceSpecificGrabResultPtr< GrabResultDataT > &  rhs)

Creates a copy of a smart pointer.

Parameters
[in]rhsAnother smart pointer, source of the result data to reference.

The data itself is not copied.

Postcondition
  • Another reference to the grab result of the source is held if it references a grab result.
  • No grab result is referenced if the source does not reference a grab result.
Error Safety:
Still valid after error.
template<typename GrabResultDataT >
Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::~CDeviceSpecificGrabResultPtr ( )
virtual

Destroys the smart pointer.

Postcondition
The currently referenced data is released.
Error Safety:
Does not throw C++ exceptions.

Member Function Documentation

template<typename GrabResultDataT >
bool Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::IsUnique ( ) const

Indicates that the held grab result data and buffer are only referenced by this grab result.

Returns
Returns true if the held grab result data and buffer are only referenced by this grab result. Returns false if the grab result is invalid.
Error Safety:
Does not throw C++ exceptions.
template<typename GrabResultDataT >
bool Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::IsValid ( ) const

Check whether data is referenced.

Returns
True if data is referenced.
Error Safety:
Does not throw C++ exceptions.
template<typename GrabResultDataT >
Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::operator bool ( ) const

Check whether data is referenced.

Returns
IsValid().

The overloaded bool operator can be used to check whether data is referenced. Example:

if ( grabResult)
{
grabResult->GetStatus();
}
Error Safety:
Does not throw C++ exceptions.
template<typename GrabResultDataT >
Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::operator IImage & ( ) const

Provides an IImage interface to the grab result.

This cast operator allows passing the grab result to saving functions or image format converter. The returned image is invalid if the grab was not successful. See CGrabResultData::GrabSucceeded().

Attention
The returned reference is only valid as long the grab result ptr is not destroyed.
Error Safety:
Still valid after error.
template<typename GrabResultDataT >
GrabResultDataT * Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::operator-> ( ) const

Allows accessing the referenced data.

Returns
The pointer to the grab result data.
Precondition
The pointer must reference a grab result. IsValid() or the overloaded bool operator can be used to check whether data is referenced.
Error Safety:
Still valid after error. Throws an exception when no data is referenced.
template<typename GrabResultDataT >
CDeviceSpecificGrabResultPtr< GrabResultDataT > & Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::operator= ( const CGrabResultPtr rhs)

Assignment of a smart pointer.

Parameters
[in]rhsAnother smart pointer, source of the result data to reference.

The data itself is not copied.

Postcondition
  • The currently referenced data is released.
  • Another reference to the grab result of the source is held if it references a grab result.
  • No grab result is referenced if the source does not reference a grab result or if the result data is not convertible.
Error Safety:
Still valid after error.
template<typename GrabResultDataT>
CDeviceSpecificGrabResultPtr< GrabResultDataT > & Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::operator= ( const CDeviceSpecificGrabResultPtr< GrabResultDataT > &  rhs)

Assignment of a smart pointer.

Parameters
[in]rhsAnother smart pointer, source of the result data to reference.

The data itself is not copied.

Postcondition
  • The currently referenced data is released.
  • Another reference to the grab result of the source is held if it references a grab result.
  • No grab result is referenced if the source does not reference a grab result.
Error Safety:
Still valid after error.
template<typename GrabResultDataT >
void Pylon::CDeviceSpecificGrabResultPtr< GrabResultDataT >::Release ( )

The currently referenced data is released.

Postcondition
The currently referenced data is released.
Error Safety:
Still valid after error.

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

pylon 6.1.0
Copyright (c) 2006-2020 Basler AG (Mon Mar 16 2020 10:56:59)