FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
arrayfire/src/api/cpp/index.cpp at master · arrayfire/arrayfire · GitHub
arrayfire
arrayfire
Repository navigation
Code
Issues
292
(292)
Pull requests
39
(39)
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
arrayfire
/
src
/
api
/
cpp
/
index.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
111 lines (89 loc) · 3.05 KB
Breadcrumbs
arrayfire
/
src
/
api
/
cpp
/
index.cpp
Copy path
File metadata and controls
111 lines (89 loc) · 3.05 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
******************************************************
* Copyright (c) 2014, ArrayFire
* All rights reserved.
*
* This file is distributed under 3-clause BSD license.
* The complete license agreement can be obtained at:
* http://arrayfire.com/licenses/BSD-3-Clause
*******************************************************
*/
#
include
<
af/algorithm.h
>
#
include
<
af/array.h
>
#
include
<
af/index.h
>
#
include
"
common.hpp
"
#
include
"
error.hpp
"
namespace
af
{
array
lookup
(
const
array &in,
const
array &idx,
const
int
dim) {
af_array out =
0
;
AF_THROW
(
af_lookup
(&out, in.
get
(), idx.
get
(),
getFNSD
(dim, in.
dims
())));
return
array
(out);
}
void
copy
(array &dst,
const
array &src,
const
index &idx0,
const
index &idx1,
const
index &idx2,
const
index &idx3) {
unsigned
nd = dst.
numdims
();
af_index_t
indices[] = {idx0.
get
(), idx1.
get
(), idx2.
get
(), idx3.
get
()};
af_array lhs = dst.
get
();
const
af_array rhs = src.
get
();
AF_THROW
(
af_assign_gen
(&lhs, lhs, nd, indices, rhs));
}
index::index
() : impl{} {
impl.
idx
.
seq
= af_span;
impl.
isSeq
=
true
;
impl.
isBatch
=
false
;
}
index::index
(
const
int
idx) : impl{} {
impl.
idx
.
seq
=
af_make_seq
(idx, idx,
1
);
impl.
isSeq
=
true
;
impl.
isBatch
=
false
;
}
index::index
(
const
af::seq &s0) : impl{} {
impl.
idx
.
seq
= s0.
s
;
impl.
isSeq
=
true
;
impl.
isBatch
= s0.
m_gfor
;
}
index::index
(
const
af_seq &s0) : impl{} {
impl.
idx
.
seq
= s0;
impl.
isSeq
=
true
;
impl.
isBatch
=
false
;
}
index::index
(
const
af::array &idx0) : impl{} {
array idx = idx0.
isbool
() ?
where
(idx0) : idx0;
af_array arr =
0
;
AF_THROW
(
af_retain_array
(&arr, idx.
get
()));
impl.
idx
.
arr
= arr;
impl.
isSeq
=
false
;
impl.
isBatch
=
false
;
}
index::index
(
const
af::index &idx0) : impl{idx0.
impl
} {
if
(!impl.
isSeq
&& impl.
idx
.
arr
) {
//
increment reference count to avoid double free
//
when/if idx0 is destroyed
AF_THROW
(
af_retain_array
(&impl.
idx
.
arr
, impl.
idx
.
arr
));
}
}
//
NOLINTNEXTLINE(hicpp-noexcept-move, performance-noexcept-move-constructor)
index::index
(index &&idx0) : impl{idx0.
impl
} { idx0.
impl
.
idx
.
arr
=
nullptr
; }
index::~index
() {
if
(!impl.
isSeq
&& impl.
idx
.
arr
) {
af_release_array
(impl.
idx
.
arr
); }
}
index &index::
operator
=(
const
index &idx0) {
if
(
this
== &idx0) {
return
*
this
; }
impl = idx0.
get
();
if
(!impl.
isSeq
&& impl.
idx
.
arr
) {
//
increment reference count to avoid double free
//
when/if idx0 is destroyed
AF_THROW
(
af_retain_array
(&impl.
idx
.
arr
, impl.
idx
.
arr
));
}
return
*
this
;
}
//
NOLINTNEXTLINE(hicpp-noexcept-move, performance-noexcept-move-constructor)
index &index::
operator
=(index &&idx0) {
impl = idx0.
impl
;
idx0.
impl
.
idx
.
arr
=
nullptr
;
return
*
this
;
}
static
bool
operator
==(
const
af_seq &lhs,
const
af_seq &rhs) {
return
lhs.
begin
== rhs.
begin
&& lhs.
end
== rhs.
end
&& lhs.
step
== rhs.
step
;
}
bool
index::isspan
()
const
{
return
impl.
isSeq
&& impl.
idx
.
seq
== af_span; }
const
af_index_t
&
index::get
()
const
{
return
impl; }
}
//
namespace af
Back
|
FazBrowse Home
|
New Git URL