index.h
Go to the documentation of this file.
1 /*******************************************************
2  * Copyright (c) 2014, ArrayFire
3  * All rights reserved.
4  *
5  * This file is distributed under 3-clause BSD license.
6  * The complete license agreement can be obtained at:
7  * http://arrayfire.com/licenses/BSD-3-Clause
8  ********************************************************/
9 
10 #pragma once
11 #include <af/defines.h>
12 #include <af/seq.h>
13 
23 typedef struct af_index_t{
24  union {
27  } idx;
28 
29  bool isSeq;
30  bool isBatch;
31 } af_index_t;
32 
33 
34 #if __cplusplus
35 namespace af
36 {
37 
38 class dim4;
39 class array;
40 class seq;
41 
52 class AFAPI index {
53 
54  af_index_t impl;
55  public:
59  index();
60  ~index();
61 
71  index(const int idx);
72 
82  index(const af::seq& s0);
83 
93  index(const af_seq& s0);
94 
104  index(const af::array& idx0);
105 
106 #if AF_API_VERSION >= 31
107  index(const index& idx0);
115 #endif
116 
122  bool isspan() const;
123 
129  const af_index_t& get() const;
130 
131 #if AF_API_VERSION >= 31
132  index & operator=(const index& idx0);
140 
141 #if __cplusplus > 199711L
142  index(index &&idx0);
154  index& operator=(index &&idx0);
155 #endif
156 #endif // AF_API_VERSION
157 };
158 
169 
170 AFAPI array lookup(const array &in, const array &idx, const int dim = -1);
171 
172 #if AF_API_VERSION >= 31
173 
185 AFAPI void copy(array &dst, const array &src,
186  const index &idx0,
187  const index &idx1 = span,
188  const index &idx2 = span,
189  const index &idx3 = span);
190 #endif
191 
192 }
193 #endif
194 
195 #ifdef __cplusplus
196 extern "C" {
197 #endif
198 
209 
211  const af_array in,
212  const unsigned ndims, const af_seq* const index);
213 
214 
226 
228  const af_array in, const af_array indices,
229  const unsigned dim);
230 
246 
248  const af_array lhs,
249  const unsigned ndims, const af_seq* const indices,
250  const af_array rhs);
251 
268  const af_array in,
269  const dim_t ndims, const af_index_t* indices);
270 
288  const af_array lhs,
289  const dim_t ndims, const af_index_t* indices,
290  const af_array rhs);
291 
292 #if AF_API_VERSION >= 32
302 #endif
303 
304 #if AF_API_VERSION >= 32
305  AFAPI af_err af_set_array_indexer(af_index_t* indexer, const af_array idx, const dim_t dim);
316 #endif
317 
318 #if AF_API_VERSION >= 32
319  AFAPI af_err af_set_seq_indexer(af_index_t* indexer, const af_seq* idx,
330  const dim_t dim, const bool is_batch);
331 #endif
332 
333 #if AF_API_VERSION >= 32
348  const double begin, const double end, const double step,
349  const dim_t dim, const bool is_batch);
350 #endif
351 
352 #if AF_API_VERSION >= 32
353  // \returns \ref af_err error code
362 #endif
363 
364 #ifdef __cplusplus
365 }
366 #endif
Definition: algorithm.h:14
af_seq seq
The af_seq used for indexing.
Definition: index.h:26
AFAPI af_err af_set_seq_param_indexer(af_index_t *indexer, const double begin, const double end, const double step, const dim_t dim, const bool is_batch)
set dim to given indexer af_array idx
A multi dimensional data container.
Definition: array.h:27
static af::array array(af::dim4 idims, cl_mem buf, af::dtype type, bool retain=false)
Create an af::array object from an OpenCL cl_mem buffer.
Definition: opencl.h:329
AFAPI af_err af_assign_seq(af_array *out, const af_array lhs, const unsigned ndims, const af_seq *const indices, const af_array rhs)
Copy and write values in the locations specified by the sequences.
union af_index_t::@0 idx
Struct used while indexing af_array.
Definition: index.h:23
AFAPI af_err af_index_gen(af_array *out, const af_array in, const dim_t ndims, const af_index_t *indices)
Indexing an array using af_seq, or af_array.
af_err
Definition: defines.h:63
AFAPI seq span
seq is used to create seq for indexing af::array
Definition: seq.h:45
AFAPI af_err af_set_array_indexer(af_index_t *indexer, const af_array idx, const dim_t dim)
set dim to given indexer af_array idx
bool isSeq
If true the idx value represents a seq.
Definition: index.h:29
AFAPI array lookup(const array &in, const array &idx, const int dim=-1)
Lookup the values of input array based on index.
long long dim_t
Definition: defines.h:50
bool isBatch
If true the seq object is a batch parameter.
Definition: index.h:30
Wrapper for af_index.
Definition: index.h:52
#define AFAPI
Definition: defines.h:31
AFAPI af_err af_assign_gen(af_array *out, const af_array lhs, const dim_t ndims, const af_index_t *indices, const af_array rhs)
Assignment of an array using af_seq, or af_array.
C-style struct to creating sequences for indexing.
Definition: seq.h:20
AFAPI void copy(array &dst, const array &src, const index &idx0, const index &idx1=span, const index &idx2=span, const index &idx3=span)
Copy the values of an input array based on index.
AFAPI af_err af_create_indexers(af_index_t **indexers)
Create an quadruple of af_index_t array.
af_array arr
The af_array used for indexing.
Definition: index.h:25
struct af_index_t af_index_t
Struct used while indexing af_array.
AFAPI af_err af_lookup(af_array *out, const af_array in, const af_array indices, const unsigned dim)
Lookup the values of input array based on index.
AFAPI int end
void * af_array
Definition: defines.h:222
AFAPI af_err af_release_indexers(af_index_t *indexers)
Release&#39;s the memory resource used by the quadruple af_index_t array.
AFAPI af_err af_index(af_array *out, const af_array in, const unsigned ndims, const af_seq *const index)
Lookup the values of input array based on sequences.
AFAPI af_err af_set_seq_indexer(af_index_t *indexer, const af_seq *idx, const dim_t dim, const bool is_batch)
set dim to given indexer af_array idx