Viskores  1.0
VisitIndex.h
Go to the documentation of this file.
1 //============================================================================
2 // The contents of this file are covered by the Viskores license. See
3 // LICENSE.txt for details.
4 //
5 // By contributing to this file, all contributors agree to the Developer
6 // Certificate of Origin Version 1.1 (DCO 1.1) as stated in DCO.txt.
7 //============================================================================
8 
9 //============================================================================
10 // Copyright (c) Kitware, Inc.
11 // All rights reserved.
12 // See LICENSE.txt for details.
13 //
14 // This software is distributed WITHOUT ANY WARRANTY; without even
15 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 // PURPOSE. See the above copyright notice for more information.
17 //============================================================================
18 #ifndef viskores_exec_arg_VisitIndex_h
19 #define viskores_exec_arg_VisitIndex_h
20 
23 
24 namespace viskores
25 {
26 namespace exec
27 {
28 namespace arg
29 {
30 
38 {
39 };
40 
55 {
56  // The index does not really matter because the fetch is going to ignore it.
57  // However, it still has to point to a valid parameter in the
58  // ControlSignature because the templating is going to grab a fetch tag
59  // whether we use it or not. 1 should be guaranteed to be valid since you
60  // need at least one argument for the input domain.
61  static constexpr viskores::IdComponent INDEX = 1;
63 };
64 
65 template <typename FetchTag, typename ExecObjectType>
66 struct Fetch<FetchTag, viskores::exec::arg::AspectTagVisitIndex, ExecObjectType>
67 {
69 
70  template <typename ThreadIndicesType>
71  VISKORES_EXEC viskores::IdComponent Load(const ThreadIndicesType& indices,
72  const ExecObjectType&) const
73  {
74  return indices.GetVisitIndex();
75  }
76 
77  template <typename ThreadIndicesType>
78  VISKORES_EXEC void Store(const ThreadIndicesType&, const ExecObjectType&, const ValueType&) const
79  {
80  // Store is a no-op.
81  }
82 };
83 }
84 }
85 } // namespace viskores::exec::arg
86 
87 #endif //viskores_exec_arg_VisitIndex_h
viskores::exec::arg::Fetch< FetchTag, viskores::exec::arg::AspectTagVisitIndex, ExecObjectType >::Load
viskores::IdComponent Load(const ThreadIndicesType &indices, const ExecObjectType &) const
Definition: VisitIndex.h:71
viskores::exec::arg::AspectTagVisitIndex
Aspect tag to use for getting the work index.
Definition: VisitIndex.h:37
viskores::IdComponent
viskores::Int32 IdComponent
Base type to use to index small lists.
Definition: Types.h:202
ExecutionSignatureTagBase.h
viskores::exec::arg::VisitIndex
The ExecutionSignature tag to use to get the visit index.
Definition: VisitIndex.h:54
viskores::exec::arg::Fetch
Class for loading and storing values in thread instance.
Definition: Fetch.h:57
viskores
Groups connected points that have the same field value.
Definition: Atomic.h:27
Fetch.h
viskores::exec::arg::ExecutionSignatureTagBase
The base class for all tags used in an ExecutionSignature.
Definition: ExecutionSignatureTagBase.h:45
viskores::exec::arg::Fetch< FetchTag, viskores::exec::arg::AspectTagVisitIndex, ExecObjectType >::ValueType
viskores::IdComponent ValueType
Definition: VisitIndex.h:68
viskores::exec::arg::Fetch< FetchTag, viskores::exec::arg::AspectTagVisitIndex, ExecObjectType >::Store
void Store(const ThreadIndicesType &, const ExecObjectType &, const ValueType &) const
Definition: VisitIndex.h:78
viskores::exec::arg::VisitIndex::INDEX
static constexpr viskores::IdComponent INDEX
Definition: VisitIndex.h:61
VISKORES_EXEC
#define VISKORES_EXEC
Definition: ExportMacros.h:59