Audacity 3.2.0
Classes | Namespaces | Enumerations | Functions
ClientDataHelpers.h File Reference

Some implementation details for ClientData. More...

#include <memory>
#include <mutex>
#include <type_traits>
Include dependency graph for ClientDataHelpers.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ClientData::Lockable< Object, LockingPolicy >
 Decorator template injects type Lock and method lock() into interface of Object. More...
 
struct  ClientData::Lockable< Object, NoLocking >
 Specialization for trivial, non-locking policy. More...
 
struct  ClientData::Lockable< Object, NoLocking >::Lock
 Empty class. More...
 
struct  ClientData::Lockable< Object, NonrecursiveLocking >
 Specialization for real locking with std::mutex. More...
 
struct  ClientData::Lockable< Object, RecursiveLocking >
 Specialization for real locking with std::recursive_mutex. More...
 
struct  ClientData::Locked< Lockable >
 Decorated reference to a ClientData::Lockable, with a current lock on it. More...
 
struct  ClientData::Copyable< Container, CopyingPolicy >
 Decorator template injects copy and move operators for container of pointers. More...
 
struct  ClientData::Copyable< Container, SkipCopying >
 Specialization that ignores contents of the source when copying (not when moving). More...
 
struct  ClientData::Copyable< Container, ShallowCopying >
 Specialization that copies pointers, not sub-objects; strong guarantee for assignment. More...
 
struct  ClientData::Copyable< Container, DeepCopying >
 Specialization that clones sub-objects when copying; strong guarantee for assignment. More...
 

Namespaces

namespace  ClientData
 Utility ClientData::Site to register hooks into a host class that attach client data.
 

Enumerations

enum  ClientData::LockingPolicy { ClientData::NoLocking , ClientData::NonrecursiveLocking , ClientData::RecursiveLocking }
 Statically specify whether there is mutual exclusion (separately for the table of factories, and for the per-host container of client objects). More...
 
enum  ClientData::CopyingPolicy { ClientData::SkipCopying , ClientData::ShallowCopying , ClientData::DeepCopying }
 Statically specify how the ClientData::Site implements its copy constructor and assignment. More...
 

Functions

template<typename Ptr >
static const Ptr & ClientData::Dereferenceable (Ptr &p)
 Conversion allowing operator * on any Pointer parameter of ClientData::Site. More...
 
template<typename Obj >
static std::shared_ptr< Obj > ClientData::Dereferenceable (std::weak_ptr< Obj > &p)
 Overload of ClientData::Dereferenceable returns an rvalue. More...
 

Detailed Description

Some implementation details for ClientData.


Audacity: A Digital Audio Editor

Paul Licameli

Definition in file ClientDataHelpers.h.