VTK  9.1.0
vtkSMPThreadLocalImplAbstract.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkSMPThreadLocalImplAbstract.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
16 #ifndef vtkSMPThreadLocalImplAbstract_h
17 #define vtkSMPThreadLocalImplAbstract_h
18 
19 #include <memory>
20 
22 
23 namespace vtk
24 {
25 namespace detail
26 {
27 namespace smp
28 {
29 
30 template <typename T>
32 {
33 public:
34  virtual ~vtkSMPThreadLocalImplAbstract() = default;
35 
36  virtual T& Local() = 0;
37 
38  virtual size_t size() const = 0;
39 
40  class ItImpl
41  {
42  public:
43  ItImpl() = default;
44  virtual ~ItImpl() = default;
45  ItImpl(const ItImpl&) = default;
46  ItImpl(ItImpl&&) = default;
47  ItImpl& operator=(const ItImpl&) = default;
48  ItImpl& operator=(ItImpl&&) = default;
49 
50  virtual void Increment() = 0;
51 
52  virtual bool Compare(ItImpl* other) = 0;
53 
54  virtual T& GetContent() = 0;
55 
56  virtual T* GetContentPtr() = 0;
57 
58  std::unique_ptr<ItImpl> Clone() const { return std::unique_ptr<ItImpl>(CloneImpl()); }
59 
60  protected:
61  virtual ItImpl* CloneImpl() const = 0;
62  };
63 
64  virtual std::unique_ptr<ItImpl> begin() = 0;
65 
66  virtual std::unique_ptr<ItImpl> end() = 0;
67 };
68 
69 template <BackendType Backend, typename T>
71 {
72 };
73 
74 } // namespace smp
75 } // namespace detail
76 } // namespace vtk
77 
78 #endif
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::operator=
ItImpl & operator=(const ItImpl &)=default
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::~ItImpl
virtual ~ItImpl()=default
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::begin
virtual std::unique_ptr< ItImpl > begin()=0
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::Clone
std::unique_ptr< ItImpl > Clone() const
Definition: vtkSMPThreadLocalImplAbstract.h:58
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::Compare
virtual bool Compare(ItImpl *other)=0
detail
Definition: vtkGenericDataArrayLookupHelper.h:33
vtk::detail::smp::vtkSMPThreadLocalImplAbstract
Definition: vtkSMPThreadLocalImplAbstract.h:32
vtk::detail::smp::vtkSMPThreadLocalImpl
Definition: vtkSMPThreadLocalImplAbstract.h:71
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::CloneImpl
virtual ItImpl * CloneImpl() const =0
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::size
virtual size_t size() const =0
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl
Definition: vtkSMPThreadLocalImplAbstract.h:41
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::~vtkSMPThreadLocalImplAbstract
virtual ~vtkSMPThreadLocalImplAbstract()=default
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::GetContent
virtual T & GetContent()=0
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::Increment
virtual void Increment()=0
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::GetContentPtr
virtual T * GetContentPtr()=0
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::Local
virtual T & Local()=0
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::ItImpl
ItImpl(ItImpl &&)=default
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::end
virtual std::unique_ptr< ItImpl > end()=0
vtk
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
Definition: vtkSMPThreadLocalAPI.h:42
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::ItImpl
ItImpl(const ItImpl &)=default
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::operator=
ItImpl & operator=(ItImpl &&)=default
vtk::detail::smp::vtkSMPThreadLocalImplAbstract::ItImpl::ItImpl
ItImpl()=default
vtkSMPToolsImpl.h