PrecisionAdaptor< Type, InputType, Container > Class Template Reference

A non-const Field/List wrapper with possible data conversion. More...

Inheritance diagram for PrecisionAdaptor< Type, InputType, Container >:
[legend]
Collaboration diagram for PrecisionAdaptor< Type, InputType, Container >:
[legend]

Public Types

typedef Container< Type > FieldType
 The adapted field type. Same as element_type. More...
 
- Public Types inherited from refPtr< T >
typedef T element_type
 Type of object being managed or referenced. More...
 
typedef Tpointer
 Pointer to type of object being managed or referenced. More...
 
typedef Foam::refCount::zero refCount
 Null reference counter class. More...
 

Public Member Functions

 PrecisionAdaptor ()=default
 Default construct, setting content later. More...
 
 PrecisionAdaptor (Container< InputType > &input, const bool doCopy=true)
 
 ~PrecisionAdaptor ()
 Destructor, copies back content changes (as required) More...
 
bool active () const noexcept
 Is precision adaption being used (non-passive adaptor)? More...
 
void commit ()
 Commit adapted content changes back to original input (as required) More...
 
void set (Container< InputType > &input, const bool doCopy=true)
 Set adaptor for different input, copying input as required. More...
 
- Public Member Functions inherited from refPtr< T >
constexpr refPtr () noexcept
 Construct with no managed pointer. More...
 
constexpr refPtr (std::nullptr_t) noexcept
 Construct with no managed pointer (literal nullptr). More...
 
constexpr refPtr (T *p) noexcept
 Construct, taking ownership of the pointer. More...
 
 refPtr (autoPtr< T > &&ptr) noexcept
 Move construct from autoPtr, transferring ownership. More...
 
 refPtr (std::unique_ptr< T > &&ptr) noexcept
 Move construct from unique_ptr, transferring ownership. More...
 
constexpr refPtr (const T &obj) noexcept
 Construct for a const reference to an object. More...
 
 refPtr (refPtr< T > &&rhs) noexcept
 Move construct, transferring ownership. More...
 
 refPtr (const refPtr< T > &rhs)
 Copy construct (shallow copy) More...
 
 refPtr (const refPtr< T > &rhs, bool reuse)
 Copy/move construct. Optionally reusing pointer. More...
 
 ~refPtr ()
 Destructor: deletes managed pointer. More...
 
bool good () const noexcept
 True if pointer/reference is non-null. More...
 
bool is_const () const noexcept
 If the stored/referenced content is const. More...
 
bool is_pointer () const noexcept
 True if this is a managed pointer (not a reference) More...
 
bool movable () const noexcept
 True if this is a non-null managed pointer. More...
 
Tget () noexcept
 Return pointer without nullptr checking. More...
 
const Tget () const noexcept
 Return const pointer without nullptr checking. More...
 
const Tcref () const
 
Tref () const
 
TconstCast () const
 
refPtr< TshallowClone () const noexcept
 
Trelease () noexcept
 
Tptr () const
 Return managed pointer for reuse, or clone() the object reference. More...
 
void clear () const noexcept
 
void reset (refPtr< T > &&other) noexcept
 Clear existing and transfer ownership. More...
 
void reset (T *p=nullptr) noexcept
 Delete managed pointer and set to new given pointer. More...
 
void reset (autoPtr< T > &&other) noexcept
 Clear existing and transfer ownership from autoPtr. More...
 
void reset (std::unique_ptr< T > &&other)
 Clear existing and transfer ownership from unique_ptr. More...
 
void cref (const refPtr< T > &other) noexcept
 Clear existing and set (const) reference from other. More...
 
void cref (const T &obj) noexcept
 Clear existing and set (const) reference. More...
 
void cref (const T *p) noexcept
 Clear existing and set (const) reference to pointer content. More...
 
void ref (T &obj) noexcept
 Clear existing and set (non-const) reference. More...
 
void ref (T *p) noexcept
 Clear existing and set (non-const) reference to pointer content. More...
 
void swap (refPtr< T > &other) noexcept
 Swaps the managed object with other. More...
 
const Toperator* () const
 Return const reference to the object. More...
 
Toperator* ()
 Return reference to the managed object. More...
 
const Toperator-> () const
 Dereferences (const) pointer to the managed object. More...
 
Toperator-> ()
 Dereferences (non-const) pointer to the managed object. More...
 
const Toperator() () const
 Return const reference to the object - same as cref() method. More...
 
 operator bool () const noexcept
 True if pointer/reference is non-null. Same as good() More...
 
 operator const T & () const
 Cast to underlying data type, using the cref() method. More...
 
void operator= (const refPtr< T > &other)
 Transfer ownership of the managed pointer. More...
 
void operator= (refPtr< T > &&other) noexcept
 Clear existing and transfer ownership. More...
 
void operator= (T *p)
 Take ownership of the pointer. More...
 
void operator= (std::nullptr_t) noexcept
 Reset via assignment from literal nullptr. More...
 
 operator tmp< T > ()
 Conversion to tmp, releases pointer or shallow-copies reference. More...
 
bool valid () const noexcept
 Identical to good(), or bool operator. More...
 
bool empty () const noexcept
 Deprecated(2020-07) True if a null managed pointer. More...
 
template<class... Args>
Foam::refPtr< TNew (Args &&... args)
 
template<class U , class... Args>
Foam::refPtr< TNewFrom (Args &&... args)
 

Additional Inherited Members

- Static Public Member Functions inherited from refPtr< T >
template<class... Args>
static refPtr< TNew (Args &&... args)
 Construct refPtr of T with forwarding arguments. More...
 
template<class U , class... Args>
static refPtr< TNewFrom (Args &&... args)
 Construct refPtr from derived type with forwarding arguments. More...
 
static word typeName ()
 The type-name, constructed from type-name of T. More...
 

Detailed Description

template<class Type, class InputType, template< class > class Container = Field>
class Foam::PrecisionAdaptor< Type, InputType, Container >

A non-const Field/List wrapper with possible data conversion.

Conversion adaptor for Field/List that either wrap the input as a reference, or creates a temporary pointer and copies the values on construction/destruction.

This provides, for example, automatic conversion between types for linear solvers able to run mixed precision.

Definition at line 186 of file PrecisionAdaptor.H.

Member Typedef Documentation

◆ FieldType

typedef Container<Type> FieldType

The adapted field type. Same as element_type.

Definition at line 221 of file PrecisionAdaptor.H.

Constructor & Destructor Documentation

◆ PrecisionAdaptor() [1/2]

PrecisionAdaptor ( )
default

Default construct, setting content later.

◆ PrecisionAdaptor() [2/2]

PrecisionAdaptor ( Container< InputType > &  input,
const bool  doCopy = true 
)
inlineexplicit

Construct from Container<InputType>, copying input if required (and requested)

Definition at line 231 of file PrecisionAdaptor.H.

References Foam::input().

Here is the call graph for this function:

◆ ~PrecisionAdaptor()

~PrecisionAdaptor ( )
inline

Destructor, copies back content changes (as required)

Definition at line 242 of file PrecisionAdaptor.H.

References refPtr< T >::clear(), and PrecisionAdaptor< Type, InputType, Container >::commit().

Here is the call graph for this function:

Member Function Documentation

◆ active()

bool active ( ) const
inlinenoexcept

Is precision adaption being used (non-passive adaptor)?

Definition at line 252 of file PrecisionAdaptor.H.

References refPtr< T >::good(), and refPtr< T >::is_pointer().

Referenced by PrecisionAdaptor< Type, InputType, Container >::commit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ commit()

void commit ( )
inline

Commit adapted content changes back to original input (as required)

Definition at line 259 of file PrecisionAdaptor.H.

References PrecisionAdaptor< Type, InputType, Container >::active(), refPtr< T >::cref(), refPtr< T >::good(), Foam::input(), and refPtr< T >::ref().

Referenced by PrecisionAdaptor< Type, InputType, Container >::set(), and PrecisionAdaptor< Type, InputType, Container >::~PrecisionAdaptor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set()

void set ( Container< InputType > &  input,
const bool  doCopy = true 
)
inline

Set adaptor for different input, copying input as required.

Definition at line 271 of file PrecisionAdaptor.H.

References PrecisionAdaptor< Type, InputType, Container >::commit(), refPtr< T >::get(), and Foam::input().

Here is the call graph for this function:

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