Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit c5c9ba7

Browse files
committed
Merge pull request #16 from 9prady9/other_headers
Other headers
2 parents b70d060 + 75bd6e7 commit c5c9ba7

File tree

14 files changed

+1375
-134
lines changed

14 files changed

+1375
-134
lines changed

‎src/algorithm/mod.rs‎

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
extern crate libc;
22

3-
use super::ArrayasArray;
3+
use array::Array;
44
use self::libc::{c_int, c_uint};
55

66
type MutAfArray = *mut self::libc::c_longlong;
@@ -51,7 +51,7 @@ pub fn sum(input: &Array, dim: i32) -> Array {
5151
unsafe {
5252
let mut temp: i64 = 0;
5353
af_sum(&mut temp as MutAfArray, input.get() as AfArray, dim as c_int);
54-
Array{handle:temp}
54+
Array::from(temp)
5555
}
5656
}
5757

@@ -69,7 +69,7 @@ pub fn product(input: &Array, dim: i32) -> Array {
6969
unsafe {
7070
let mut temp: i64 = 0;
7171
af_product(&mut temp as MutAfArray, input.get() as AfArray, dim as c_int);
72-
Array{handle:temp}
72+
Array::from(temp)
7373
}
7474
}
7575

@@ -87,7 +87,7 @@ pub fn min(input: &Array, dim: i32) -> Array {
8787
unsafe {
8888
let mut temp: i64 = 0;
8989
af_min(&mut temp as MutAfArray, input.get() as AfArray, dim as c_int);
90-
Array{handle:temp}
90+
Array::from(temp)
9191
}
9292
}
9393

@@ -96,7 +96,7 @@ pub fn max(input: &Array, dim: i32) -> Array {
9696
unsafe {
9797
let mut temp: i64 = 0;
9898
af_max(&mut temp as MutAfArray, input.get() as AfArray, dim as c_int);
99-
Array{handle:temp}
99+
Array::from(temp)
100100
}
101101
}
102102

@@ -105,7 +105,7 @@ pub fn all_true(input: &Array, dim: i32) -> Array {
105105
unsafe {
106106
let mut temp: i64 = 0;
107107
af_all_true(&mut temp as MutAfArray, input.get() as AfArray, dim as c_int);
108-
Array{handle:temp}
108+
Array::from(temp)
109109
}
110110
}
111111

@@ -114,7 +114,7 @@ pub fn any_true(input: &Array, dim: i32) -> Array {
114114
unsafe {
115115
let mut temp: i64 = 0;
116116
af_any_true(&mut temp as MutAfArray, input.get() as AfArray, dim as c_int);
117-
Array{handle:temp}
117+
Array::from(temp)
118118
}
119119
}
120120

@@ -123,7 +123,7 @@ pub fn count(input: &Array, dim: i32) -> Array {
123123
unsafe {
124124
let mut temp: i64 = 0;
125125
af_count(&mut temp as MutAfArray, input.get() as AfArray, dim as c_int);
126-
Array{handle:temp}
126+
Array::from(temp)
127127
}
128128
}
129129

@@ -230,7 +230,7 @@ pub fn imin(input: &Array, dim: i32) -> (Array, Array) {
230230
let mut idx: i64 = 0;
231231
af_imin(&mut temp as MutAfArray, &mut idx as MutAfArray,
232232
input.get() as AfArray, dim as c_int);
233-
(Array{handle:temp}, Array{handle:idx})
233+
(Array::from(temp), Array::from(idx))
234234
}
235235
}
236236

@@ -241,7 +241,7 @@ pub fn imax(input: &Array, dim: i32) -> (Array, Array) {
241241
let mut idx: i64 = 0;
242242
af_imax(&mut temp as MutAfArray, &mut idx as MutAfArray,
243243
input.get() as AfArray, dim as c_int);
244-
(Array{handle:temp}, Array{handle:idx})
244+
(Array::from(temp), Array::from(idx))
245245
}
246246
}
247247

@@ -274,7 +274,7 @@ pub fn accum(input: &Array, dim: i32) -> Array {
274274
unsafe {
275275
let mut temp: i64 = 0;
276276
af_accum(&mut temp as MutAfArray, input.get() as AfArray, dim as c_int);
277-
Array{handle:temp}
277+
Array::from(temp)
278278
}
279279
}
280280

@@ -283,7 +283,7 @@ pub fn locate(input: &Array) -> Array {
283283
unsafe {
284284
let mut temp: i64 = 0;
285285
af_where(&mut temp as MutAfArray, input.get() as AfArray);
286-
Array{handle:temp}
286+
Array::from(temp)
287287
}
288288
}
289289

@@ -292,7 +292,7 @@ pub fn diff1(input: &Array, dim: i32) -> Array {
292292
unsafe {
293293
let mut temp: i64 = 0;
294294
af_diff1(&mut temp as MutAfArray, input.get() as AfArray, dim as c_int);
295-
Array{handle:temp}
295+
Array::from(temp)
296296
}
297297
}
298298

@@ -301,7 +301,7 @@ pub fn diff2(input: &Array, dim: i32) -> Array {
301301
unsafe {
302302
let mut temp: i64 = 0;
303303
af_diff2(&mut temp as MutAfArray, input.get() as AfArray, dim as c_int);
304-
Array{handle:temp}
304+
Array::from(temp)
305305
}
306306
}
307307

@@ -311,7 +311,7 @@ pub fn sort(input: &Array, dim: u32, ascending: bool) -> Array {
311311
let mut temp: i64 = 0;
312312
af_sort(&mut temp as MutAfArray, input.get() as AfArray,
313313
dim as c_uint, ascending as c_int);
314-
Array{handle:temp}
314+
Array::from(temp)
315315
}
316316
}
317317

@@ -323,7 +323,7 @@ pub fn sort_index(input: &Array, dim: u32, ascending: bool) -> (Array, Array) {
323323
af_sort_index(&mut temp as MutAfArray, &mut idx as MutAfArray,
324324
input.get() as AfArray,
325325
dim as c_uint, ascending as c_int);
326-
(Array{handle:temp}, Array{handle:idx})
326+
(Array::from(temp), Array::from(idx))
327327
}
328328
}
329329

@@ -335,7 +335,7 @@ pub fn sort_by_key(keys: &Array, vals: &Array, dim: u32, ascending: bool) -> (Ar
335335
af_sort_by_key(&mut temp as MutAfArray, &mut temp2 as MutAfArray,
336336
keys.get() as AfArray, vals.get() as AfArray,
337337
dim as c_uint, ascending as c_int);
338-
(Array{handle:temp}, Array{handle:temp2})
338+
(Array::from(temp), Array::from(temp2))
339339
}
340340
}
341341

@@ -344,7 +344,7 @@ pub fn set_unique(input: &Array, is_sorted: bool) -> Array {
344344
unsafe {
345345
let mut temp: i64 = 0;
346346
af_set_unique(&mut temp as MutAfArray, input.get() as AfArray, is_sorted as c_int);
347-
Array{handle:temp}
347+
Array::from(temp)
348348
}
349349
}
350350

@@ -354,7 +354,7 @@ pub fn set_union(first: &Array, second: &Array, is_unique: bool) -> Array {
354354
let mut temp: i64 = 0;
355355
af_set_union(&mut temp as MutAfArray, first.get() as AfArray,
356356
second.get() as AfArray, is_unique as c_int);
357-
Array{handle:temp}
357+
Array::from(temp)
358358
}
359359
}
360360

@@ -364,6 +364,6 @@ pub fn set_intersect(first: &Array, second: &Array, is_unique: bool) -> Array {
364364
let mut temp: i64 = 0;
365365
af_set_intersect(&mut temp as MutAfArray, first.get() as AfArray,
366366
second.get() as AfArray, is_unique as c_int);
367-
Array{handle:temp}
367+
Array::from(temp)
368368
}
369369
}

‎src/arith/mod.rs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
extern crate libc;
22
extern crate num;
33

4-
use super::ArrayasArray;
4+
use array::Array;
55
use self::libc::{c_int};
66
use data::constant;
77
use self::num::Complex;
@@ -99,7 +99,7 @@ impl<'f> Not for &'f Array {
9999
unsafe {
100100
let mut temp: i64 = 0;
101101
af_not(&mut temp as MutAfArray, self.get() as AfArray);
102-
Array{handle:temp}
102+
Array::from(temp)
103103
}
104104
}
105105
}
@@ -111,7 +111,7 @@ macro_rules! unary_func {
111111
unsafe {
112112
let mut temp: i64 = 0;
113113
$ffi_fn(&mut temp as MutAfArray, input.get() as AfArray);
114-
Array{handle:temp}
114+
Array::from(temp)
115115
}
116116
}
117117
)
@@ -165,7 +165,7 @@ macro_rules! binary_func {
165165
unsafe {
166166
let mut temp: i64 = 0;
167167
$ffi_fn(&mut temp as MutAfArray, lhs.get() as AfArray, rhs.get() as AfArray, 0);
168-
Array{handle:temp}
168+
Array::from(temp)
169169
}
170170
}
171171
)
@@ -200,7 +200,7 @@ macro_rules! arith_scalar_func {
200200
$ffi_fn(&mut temp as MutAfArray,
201201
self.get() as AfArray, cnst_arr.get() as AfArray,
202202
0);
203-
Array{handle:temp}
203+
Array::from(temp)
204204
}
205205
}
206206
}
@@ -237,7 +237,7 @@ macro_rules! arith_func {
237237
$ffi_fn(&mut temp as MutAfArray,
238238
self.get() as AfArray, rhs.get() as AfArray,
239239
0);
240-
Array{handle:temp}
240+
Array::from(temp)
241241
}
242242
}
243243
}

‎src/array.rs‎

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
extern crate libc;
22

3-
use super::Array as Array;
4-
use super::Dim4 as Dim4;
5-
use super::Aftype as Aftype;
6-
use util::get_ffi_type;
7-
use util::get_af_type;
8-
use self::libc::{c_void, c_int, c_uint, c_longlong};
3+
use dim4::Dim4;
4+
use defines::Aftype;
5+
use self::libc::{uint8_t, c_void, c_int, c_uint, c_longlong};
96

107
type MutAfArray = *mut self::libc::c_longlong;
118
type MutDouble = *mut self::libc::c_double;
@@ -16,11 +13,11 @@ type DimT = self::libc::c_longlong;
1613
#[allow(dead_code)]
1714
extern {
1815
fn af_create_array(out: MutAfArray, data: *const c_void,
19-
ndims: c_uint, dims: *const DimT, aftype: c_int) -> c_int;
16+
ndims: c_uint, dims: *const DimT, aftype: uint8_t) -> c_int;
2017

2118
fn af_get_elements(out: MutAfArray, arr: AfArray) -> c_int;
2219

23-
fn af_get_type(out: *mut c_int, arr: AfArray) -> c_int;
20+
fn af_get_type(out: *mut uint8_t, arr: AfArray) -> c_int;
2421

2522
fn af_get_dims(dim0: *mut c_longlong, dim1: *mut c_longlong, dim2: *mut c_longlong,
2623
dim3: *mut c_longlong, arr: AfArray) -> c_int;
@@ -64,6 +61,10 @@ extern {
6461
fn af_print_array(arr: AfArray) -> c_int;
6562
}
6663

64+
pub struct Array {
65+
handle: i64,
66+
}
67+
6768
macro_rules! is_func {
6869
($fn_name: ident, $ffi_fn: ident) => (
6970
pub fn $fn_name(&self) -> bool {
@@ -83,7 +84,7 @@ impl Array {
8384
let mut temp: i64 = 0;
8485
af_create_array(&mut temp as MutAfArray, slice.as_ptr() as *const c_void,
8586
dims.ndims() as c_uint, dims.get().as_ptr() as * const c_longlong,
86-
get_ffi_type(aftype) as c_int);
87+
aftype as uint8_t);
8788
Array {handle: temp}
8889
}
8990
}
@@ -98,9 +99,9 @@ impl Array {
9899

99100
pub fn get_type(&self) -> Aftype {
100101
unsafe {
101-
let mut ret_val: i32 = 0;
102-
af_get_type(&mut ret_val as *mut c_int, self.handle as AfArray);
103-
get_af_type(ret_val)
102+
let mut ret_val: u8 = 0;
103+
af_get_type(&mut ret_val as *mut uint8_t, self.handle as AfArray);
104+
Aftype::from(ret_val)
104105
}
105106
}
106107

@@ -113,7 +114,7 @@ impl Array {
113114
af_get_dims(&mut ret0 as *mut c_longlong, &mut ret1 as *mut c_longlong,
114115
&mut ret2 as *mut c_longlong, &mut ret3 as *mut c_longlong,
115116
self.handle as AfArray);
116-
Dim4{dims:[ret0 as u64, ret1 as u64, ret2 as u64, ret3 as u64]}
117+
Dim4::new(&[ret0 as u64, ret1 as u64, ret2 as u64, ret3 as u64])
117118
}
118119
}
119120

@@ -155,6 +156,12 @@ impl Array {
155156
is_func!(is_bool, af_is_bool);
156157
}
157158

159+
impl From<i64> for Array {
160+
fn from(t: i64) -> Array {
161+
Array {handle: t}
162+
}
163+
}
164+
158165
impl Clone for Array {
159166
fn clone(&self) -> Array {
160167
unsafe {
@@ -175,6 +182,6 @@ impl Drop for Array {
175182

176183
pub fn print(input: &Array) {
177184
unsafe {
178-
af_print_array(input.get() as c_longlong);
185+
af_print_array(input.get() as AfArray);
179186
}
180187
}

‎src/blas/mod.rs‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
extern crate libc;
2+
3+
use array::Array;
4+
use defines::MatProp;
5+
use self::libc::{c_uint, c_int};
6+
use util::to_u32;
7+
8+
type MutAfArray = *mut self::libc::c_longlong;
9+
type AfArray = self::libc::c_longlong;
10+
11+
#[allow(dead_code)]
12+
extern {
13+
fn af_matmul(out: MutAfArray, lhs: AfArray, rhs: AfArray,
14+
optlhs: c_uint, optrhs: c_uint) -> c_int;
15+
16+
fn af_dot(out: MutAfArray, lhs: AfArray, rhs: AfArray,
17+
optlhs: c_uint, optrhs: c_uint) -> c_int;
18+
19+
fn af_transpose(out: MutAfArray, arr: AfArray, conjugate: c_int) -> c_int;
20+
fn af_transpose_inplace(arr: AfArray, conjugate: c_int) -> c_int;
21+
}
22+
23+
#[allow(unused_mut)]
24+
pub fn matmul(lhs: &Array, rhs: &Array, optlhs: MatProp, optrhs: MatProp) -> Array {
25+
unsafe {
26+
let mut temp: i64 = 0;
27+
af_matmul(&mut temp as MutAfArray, lhs.get() as AfArray, rhs.get() as AfArray,
28+
to_u32(optlhs) as c_uint, to_u32(optrhs) as c_uint);
29+
Array::from(temp)
30+
}
31+
}
32+
33+
#[allow(unused_mut)]
34+
pub fn dot(lhs: &Array, rhs: &Array, optlhs: MatProp, optrhs: MatProp) -> Array {
35+
unsafe {
36+
let mut temp: i64 = 0;
37+
af_dot(&mut temp as MutAfArray, lhs.get() as AfArray, rhs.get() as AfArray,
38+
to_u32(optlhs) as c_uint, to_u32(optrhs) as c_uint);
39+
Array::from(temp)
40+
}
41+
}
42+
43+
#[allow(unused_mut)]
44+
pub fn transpose(arr: &Array, conjugate: bool) -> Array {
45+
unsafe {
46+
let mut temp: i64 = 0;
47+
af_transpose(&mut temp as MutAfArray, arr.get() as AfArray, conjugate as c_int);
48+
Array::from(temp)
49+
}
50+
}
51+
52+
#[allow(unused_mut)]
53+
pub fn transpose_inplace(arr: &Array, conjugate: bool) {
54+
unsafe {
55+
af_transpose_inplace(arr.get() as AfArray, conjugate as c_int);
56+
}
57+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /