Skip to content

Commit 6c0351e

Browse files
royalstream9prady9
authored andcommitted
refactoring
1 parent 0f7e9fa commit 6c0351e

File tree

6 files changed

+122
-53
lines changed

6 files changed

+122
-53
lines changed

Wrapper/Algorithm.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
Copyright (c) 2015, ArrayFire
3+
Copyright (c) 2015, Steven Burns (royalstream@hotmail.com)
4+
All rights reserved.
5+
6+
Redistribution and use in source and binary forms, with or without
7+
modification, are permitted provided that the following conditions are met:
8+
9+
* Redistributions of source code must retain the above copyright notice, this
10+
list of conditions and the following disclaimer.
11+
12+
* Redistributions in binary form must reproduce the above copyright notice,
13+
this list of conditions and the following disclaimer in the documentation
14+
and/or other materials provided with the distribution.
15+
16+
* Neither the name of arrayfire_dotnet nor the names of its
17+
contributors may be used to endorse or promote products derived from
18+
this software without specific prior written permission.
19+
20+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30+
*/
31+
32+
using System;
33+
using System.Numerics;
34+
using System.Runtime.CompilerServices;
35+
36+
using ArrayFire.Interop;
37+
38+
namespace ArrayFire
39+
{
40+
public static class Algorithm
41+
{
42+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
43+
public static Complex SumAll(Array arr)
44+
{
45+
double r, i;
46+
Internal.VERIFY(AFAlgorithm.af_sum_all(out r, out i, arr._ptr));
47+
return new Complex(r, i);
48+
}
49+
50+
// TODO: Add the other algorithms
51+
}
52+
}

Wrapper/ArrayFire.csproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
<Reference Include="System.Numerics" />
3636
</ItemGroup>
3737
<ItemGroup>
38+
<Compile Include="exceptions.cs" />
39+
<Compile Include="Algorithm.cs" />
3840
<Compile Include="Arith.cs" />
3941
<Compile Include="Array.cs" />
4042
<Compile Include="Device.cs" />
@@ -50,7 +52,7 @@
5052
<Compile Include="Interop\AFStatistics.cs" />
5153
<Compile Include="Interop\AFUtil.cs" />
5254
<Compile Include="Interop\Enums.cs" />
53-
<Compile Include="Tiny.cs" />
55+
<Compile Include="enums.cs" />
5456
<Compile Include="Matrix.cs" />
5557
<Compile Include="Properties\AssemblyInfo.cs" />
5658
<Compile Include="Internal.cs" />

Wrapper/Internal.cs

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3838

3939
namespace ArrayFire
4040
{
41-
internal static class Internal // shared functionality
41+
internal static class Internal // shared functionality
4242
{
4343
private static Dictionary<af_dtype, Type> dtype2clr;
4444
private static Dictionary<Type, af_dtype> clr2dtype;
@@ -165,29 +165,5 @@ internal static void VERIFY(af_err err)
165165
{
166166
if (err != af_err.AF_SUCCESS) throw new ArrayFireException(err);
167167
}
168-
169-
internal static string getError(af_err err)
170-
{
171-
switch (err)
172-
{
173-
case af_err.AF_SUCCESS: return "Success";
174-
case af_err.AF_ERR_INTERNAL: return "Internal error";
175-
case af_err.AF_ERR_NO_MEM: return "Device out of memory";
176-
case af_err.AF_ERR_DRIVER: return "Driver not available or incompatible";
177-
case af_err.AF_ERR_RUNTIME: return "Runtime error ";
178-
case af_err.AF_ERR_INVALID_ARRAY: return "Invalid array";
179-
case af_err.AF_ERR_ARG: return "Invalid input argument";
180-
case af_err.AF_ERR_SIZE: return "Invalid input size";
181-
case af_err.AF_ERR_DIFF_TYPE: return "Input types are not the same";
182-
case af_err.AF_ERR_NOT_SUPPORTED: return "Function not supported";
183-
case af_err.AF_ERR_NOT_CONFIGURED: return "Function not configured to build";
184-
case af_err.AF_ERR_TYPE: return "Function does not support this data type";
185-
case af_err.AF_ERR_NO_DBL: return "Double precision not supported for this device";
186-
case af_err.AF_ERR_LOAD_LIB: return "Failed to load dynamic library";
187-
case af_err.AF_ERR_LOAD_SYM: return "Failed to load symbol";
188-
case af_err.AF_ERR_UNKNOWN: return "Unknown error";
189-
default: return err.ToString();
190-
}
191-
}
192168
}
193169
}

Wrapper/Vector.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,6 @@ namespace ArrayFire
3939
{
4040
public static class Vector
4141
{
42-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
43-
public static Complex SumAll(Array arr)
44-
{
45-
double r, i;
46-
Internal.VERIFY(AFAlgorithm.af_sum_all(out r, out i, arr._ptr));
47-
return new Complex(r, i);
48-
}
49-
50-
// TODO: Add the other algorithms
51-
5242
[MethodImpl(MethodImplOptions.AggressiveInlining)]
5343
public static Array Dot(Array lhs, Array rhs, bool lconj = false, bool rconj = false)
5444
{

Wrapper/Tiny.cs renamed to Wrapper/enums.cs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,4 @@ public enum Backend
5151
DEFAULT = af_backend.AF_BACKEND_DEFAULT,
5252
OPENCL = af_backend.AF_BACKEND_OPENCL
5353
}
54-
55-
public struct Dim4
56-
{
57-
public readonly int D0, D1, D2, D3;
58-
public Dim4(int d0, int d1, int d2, int d3)
59-
{
60-
D0 = d0;
61-
D1 = d1;
62-
D2 = d2;
63-
D3 = d3;
64-
}
65-
}
66-
67-
public class ArrayFireException : Exception
68-
{
69-
public ArrayFireException(af_err message) : base(Internal.getError(message)) { }
70-
}
7154
}

Wrapper/exceptions.cs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/*
2+
Copyright (c) 2015, ArrayFire
3+
Copyright (c) 2015, Steven Burns (royalstream@hotmail.com)
4+
All rights reserved.
5+
6+
Redistribution and use in source and binary forms, with or without
7+
modification, are permitted provided that the following conditions are met:
8+
9+
* Redistributions of source code must retain the above copyright notice, this
10+
list of conditions and the following disclaimer.
11+
12+
* Redistributions in binary form must reproduce the above copyright notice,
13+
this list of conditions and the following disclaimer in the documentation
14+
and/or other materials provided with the distribution.
15+
16+
* Neither the name of arrayfire_dotnet nor the names of its
17+
contributors may be used to endorse or promote products derived from
18+
this software without specific prior written permission.
19+
20+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30+
*/
31+
32+
using System;
33+
34+
using ArrayFire.Interop;
35+
36+
namespace ArrayFire
37+
{
38+
public class ArrayFireException : Exception
39+
{
40+
public ArrayFireException(af_err message) : base(getError(message)) { }
41+
42+
private static string getError(af_err err)
43+
{
44+
switch (err)
45+
{
46+
case af_err.AF_SUCCESS: return "Success";
47+
case af_err.AF_ERR_INTERNAL: return "Internal error";
48+
case af_err.AF_ERR_NO_MEM: return "Device out of memory";
49+
case af_err.AF_ERR_DRIVER: return "Driver not available or incompatible";
50+
case af_err.AF_ERR_RUNTIME: return "Runtime error ";
51+
case af_err.AF_ERR_INVALID_ARRAY: return "Invalid array";
52+
case af_err.AF_ERR_ARG: return "Invalid input argument";
53+
case af_err.AF_ERR_SIZE: return "Invalid input size";
54+
case af_err.AF_ERR_DIFF_TYPE: return "Input types are not the same";
55+
case af_err.AF_ERR_NOT_SUPPORTED: return "Function not supported";
56+
case af_err.AF_ERR_NOT_CONFIGURED: return "Function not configured to build";
57+
case af_err.AF_ERR_TYPE: return "Function does not support this data type";
58+
case af_err.AF_ERR_NO_DBL: return "Double precision not supported for this device";
59+
case af_err.AF_ERR_LOAD_LIB: return "Failed to load dynamic library";
60+
case af_err.AF_ERR_LOAD_SYM: return "Failed to load symbol";
61+
case af_err.AF_ERR_UNKNOWN: return "Unknown error";
62+
default: return err.ToString();
63+
}
64+
}
65+
}
66+
}

0 commit comments

Comments
 (0)