My Project
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
23typedef struct af_index_t{
24 union {
27 } idx;
28
29 bool isSeq;
30 bool isBatch;
32
33
34#if __cplusplus
35namespace af
36{
37
38class dim4;
39class array;
40class seq;
41
52class AFAPI index {
53
54 af_index_t impl;
55 public:
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
114 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
139 index & operator=(const index& idx0);
140
141#if __cplusplus > 199711L
147 index(index &&idx0);
154 index& operator=(index &&idx0);
155#endif
156#endif // AF_API_VERSION
157};
158
169
170AFAPI array lookup(const array &in, const array &idx, const int dim = -1);
171
172#if AF_API_VERSION >= 31
184
185AFAPI 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
196extern "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
315 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
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
357 // \returns \ref af_err error code
362#endif
363
364#ifdef __cplusplus
365}
366#endif
A multi dimensional data container.
Definition: array.h:27
Wrapper for af_index.
Definition: index.h:52
index(const af::seq &s0)
Implicit seq converter.
index()
Default constructor.
index(const af::array &idx0)
Implicit int converter.
index(const af_seq &s0)
Implicit seq converter.
index(const index &idx0)
Copy constructor.
bool isspan() const
Returns true if the af::index represents a af::span object.
index & operator=(const index &idx0)
Assigns idx0 to this index.
index(const int idx)
Implicit int converter.
const af_index_t & get() const
Gets the underlying af_index_t object.
seq is used to create seq for indexing af::array
Definition: seq.h:46
long long dim_t
Definition: defines.h:50
af_err
Definition: defines.h:63
void * af_array
Definition: defines.h:222
#define AFAPI
Definition: defines.h:31
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.
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.
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.
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 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_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 array lookup(const array &in, const array &idx, const int dim=-1)
Lookup the values of input array based on index.
AFAPI af_err af_create_indexers(af_index_t **indexers)
Create an quadruple of af_index_t array.
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
AFAPI af_err af_release_indexers(af_index_t *indexers)
Release's the memory resource used by the quadruple af_index_t array.
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
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
struct af_index_t af_index_t
Struct used while indexing af_array.
Definition: algorithm.h:15
AFAPI int end
AFAPI seq span
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
Struct used while indexing af_array.
Definition: index.h:23
af_array arr
The af_array used for indexing.
Definition: index.h:25
bool isSeq
If true the idx value represents a seq.
Definition: index.h:29
bool isBatch
If true the seq object is a batch parameter.
Definition: index.h:30
af_seq seq
The af_seq used for indexing.
Definition: index.h:26
union af_index_t::@0 idx
C-style struct to creating sequences for indexing.
Definition: seq.h:20