NAP
fillpolicy.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // External includes
8 #include <nap/resource.h>
9 #include <nap/numeric.h>
10 
11 // Local Includes
12 #include "mathutils.h"
13 
14 namespace nap
15 {
26  class NAPAPI BaseFillPolicy : public Resource
27  {
28  RTTI_ENABLE(Resource)
29  public:
30  BaseFillPolicy() = default;
31  virtual ~BaseFillPolicy() = default;
32  };
33 
34 
46  template<typename T>
47  class NAPAPI FillPolicy : public BaseFillPolicy
48  {
49  RTTI_ENABLE(BaseFillPolicy)
50  public:
56  virtual void fill(uint numElements, T* data) const = 0;
57  };
58 
59 
70  template<typename T>
71  class ConstantFillPolicy : public FillPolicy<T>
72  {
73  RTTI_ENABLE(FillPolicy<T>)
74  public:
80  virtual void fill(uint numElements, T* data) const override;
81 
82  T mConstant = T();
83  };
84 
85 
87  // BaseFillPolicyNumeric type definitions
89 
97 
98 
100  // ConstantBufferFillPolicy type definitions
102 
110 
111 
113  // Template definitions
115 
116  template<typename T>
117  void ConstantFillPolicy<T>::fill(uint numElements, T* data) const
118  {
119  for (uint i = 0; i < numElements; i++)
120  {
121  *data = mConstant;
122  ++data;
123  }
124  }
125 }
nap::uint
unsigned int uint
Definition: numeric.h:23
nap::ConstantFillPolicy::mConstant
T mConstant
Property 'Constant'.
Definition: fillpolicy.h:82
nap::ConstantFillPolicy::fill
virtual void fill(uint numElements, T *data) const override
Definition: fillpolicy.h:117
nap::BaseFillPolicy
Definition: fillpolicy.h:26
nap::ConstantFillPolicy
Definition: fillpolicy.h:71
nap
Definition: templateapp.h:17
nap::Resource
Definition: resource.h:19
nap::FillPolicy
Definition: fillpolicy.h:47