ASL 0.1.7
Advanced Simulation Library
Loading...
Searching...
No Matches
aclVectorOfElementsDef.h
Go to the documentation of this file.
1/*
2 * Advanced Simulation Library <http://asl.org.il>
3 *
4 * Copyright 2015 Avtech Scientific <http://avtechscientific.com>
5 *
6 *
7 * This file is part of Advanced Simulation Library (ASL).
8 *
9 * ASL is free software: you can redistribute it and/or modify it
10 * under the terms of the GNU Affero General Public License as
11 * published by the Free Software Foundation, version 3 of the License.
12 *
13 * ASL is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public License
19 * along with ASL. If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22
23
24#ifndef ACLVECTORELEMENTSDEF_H
25#define ACLVECTORELEMENTSDEF_H
26
27#include <memory>
28#include <vector>
29#include "../aclTypes.h"
30
31using namespace std;
32
33namespace cl
34{
35 class CommandQueue;
36}
37
38namespace acl
39{
40
41 class ElementBase;
42 class MemBlock;
43
44 typedef std::shared_ptr<ElementBase> Element;
45 typedef std::shared_ptr<MemBlock> ElementData;
46
47 class VectorOfElements;
48 typedef std::shared_ptr<cl::CommandQueue> CommandQueue;
49
51
56 class VectorOfElementsData: public std::vector<ElementData>
57 {
60 bool checkCompatibility() const;
61 public:
63 bool checkSizesCompatibility(unsigned int n) const;
65 explicit VectorOfElementsData(unsigned int n);
72 template <typename T> VectorOfElementsData(unsigned int n,
73 unsigned int s,
74 T);
75 template <typename T> VectorOfElementsData(unsigned int n,
76 unsigned int s,
77 T,
78 CommandQueue queue);
79
82 void resizeElements(unsigned int n);
83 };
84
86
91 class VectorOfElements: public std::vector<Element>
92 {
95 bool checkCompatibility() const;
96 public:
98 bool checkSizesCompatibility(unsigned int n) const;
100 explicit VectorOfElements(unsigned int n);
103 };
104
105 typedef shared_ptr<VectorOfElementsData> SPVectorOfElementsData;
106 typedef shared_ptr<VectorOfElements> SPVectorOfElements;
107
108 inline bool compatibleSizes (unsigned int s, const VectorOfElements & a);
109
111 acl::TypeID getElementType(const VectorOfElements & a, unsigned int i = 0);
112
114 unsigned int getElementsSize(const VectorOfElements & a);
115
116//------------------------- Implementation -----------------
117
118 inline bool compatibleSizes(unsigned int s, const VectorOfElements & a)
119 {
120 return a.checkSizesCompatibility(s);
121 }
122
123
124} // namespace acl
125
126#endif // ACLVECTORELEMENTSDEF_H
The class represents several ElementData.
VectorOfElementsData(unsigned int n)
void resizeElements(unsigned int n)
VectorOfElementsData(unsigned int n, unsigned int s, T, CommandQueue queue)
bool checkSizesCompatibility(unsigned int n) const
checks whether all Elements have sizes compatible with n
VectorOfElementsData(unsigned int n, unsigned int s, T)
VectorOfElements operator=(const VectorOfElementsData &a) const
VectorOfElements operator=(const VectorOfElements &a) const
The class represents several Element.
VectorOfElements(unsigned int n)
acl::TypeID getElementType(const VectorOfElements &a, unsigned int i=0)
VectorOfElements operator=(const VectorOfElements &a) const
VectorOfElements(const VectorOfElementsData &a)
bool checkSizesCompatibility(unsigned int n) const
checks whether all Elements have sizes compatible with n
unsigned int getElementsSize(const VectorOfElements &a)
Advanced Computational Language.
Definition: acl.h:41
shared_ptr< VectorOfElementsData > SPVectorOfElementsData
std::shared_ptr< cl::CommandQueue > CommandQueue
Definition: acl.h:51
TypeID
Definition: aclTypes.h:39
bool compatibleSizes(unsigned int s, const VectorOfElements &a)
std::shared_ptr< MemBlock > ElementData
Definition: acl.h:48
shared_ptr< VectorOfElements > SPVectorOfElements
std::shared_ptr< ElementBase > Element
Definition: acl.h:49
The OpenCL C++ bindings are defined within this namespace.
Definition: acl.h:34
STL namespace.