Skip to content

Commit b536d0b

Browse files
Oceania20189prady9
authored andcommitted
Upgrade Interop to arrayfire v3.6
1 parent b48571c commit b536d0b

22 files changed

+457
-65
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ Examples/Unified/FSharp/obj/
1515
/src/Wrapper/obj
1616
/test/ArrayFire.UnitTest/obj
1717
/test/ArrayFire.UnitTest/bin/Debug/netcoreapp2.2
18+
/AutoGenTool/packages/FSharp.Core.4.6.2

ArrayFire.sln

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Unified (FSharp)", "Example
1919
EndProject
2020
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ArrayFire", "src\Wrapper\ArrayFire.csproj", "{4F082D5B-2AED-461E-8288-66BCAE3E20D9}"
2121
EndProject
22-
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "AutoGenTool", "AutoGenTool\AutoGenTool.fsproj", "{C2338C5E-AEC9-4AA0-BEE1-A75EB26A172D}"
23-
EndProject
24-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArrayFire.UnitTest", "test\ArrayFire.UnitTest\ArrayFire.UnitTest.csproj", "{E47D6CCA-1397-4FD4-997A-A8520F74C367}"
22+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ArrayFire.UnitTest", "test\ArrayFire.UnitTest\ArrayFire.UnitTest.csproj", "{E47D6CCA-1397-4FD4-997A-A8520F74C367}"
2523
EndProject
2624
Global
2725
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -71,12 +69,6 @@ Global
7169
{4F082D5B-2AED-461E-8288-66BCAE3E20D9}.Release|Any CPU.Build.0 = Release|Any CPU
7270
{4F082D5B-2AED-461E-8288-66BCAE3E20D9}.Release|x64.ActiveCfg = Release|Any CPU
7371
{4F082D5B-2AED-461E-8288-66BCAE3E20D9}.Release|x64.Build.0 = Release|Any CPU
74-
{C2338C5E-AEC9-4AA0-BEE1-A75EB26A172D}.Debug|Any CPU.ActiveCfg = Debug|x64
75-
{C2338C5E-AEC9-4AA0-BEE1-A75EB26A172D}.Debug|x64.ActiveCfg = Debug|x64
76-
{C2338C5E-AEC9-4AA0-BEE1-A75EB26A172D}.Debug|x64.Build.0 = Debug|x64
77-
{C2338C5E-AEC9-4AA0-BEE1-A75EB26A172D}.Release|Any CPU.ActiveCfg = Release|x64
78-
{C2338C5E-AEC9-4AA0-BEE1-A75EB26A172D}.Release|x64.ActiveCfg = Release|x64
79-
{C2338C5E-AEC9-4AA0-BEE1-A75EB26A172D}.Release|x64.Build.0 = Release|x64
8072
{E47D6CCA-1397-4FD4-997A-A8520F74C367}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
8173
{E47D6CCA-1397-4FD4-997A-A8520F74C367}.Debug|Any CPU.Build.0 = Debug|Any CPU
8274
{E47D6CCA-1397-4FD4-997A-A8520F74C367}.Debug|x64.ActiveCfg = Debug|Any CPU

AutoGenTool/App.config

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<startup>
4+
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
5+
</startup>
6+
</configuration>

AutoGenTool/AutoGenTool.fsproj

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,12 @@
77
<OutputType>Exe</OutputType>
88
<RootNamespace>AutoGenTool</RootNamespace>
99
<AssemblyName>AutoGenTool</AssemblyName>
10-
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
10+
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
1111
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
12-
<TargetFSharpCoreVersion>4.4.0.0</TargetFSharpCoreVersion>
12+
<TargetFSharpCoreVersion>4.4.3.0</TargetFSharpCoreVersion>
1313
<Name>AutoGenTool</Name>
14+
<TargetFrameworkProfile />
1415
</PropertyGroup>
15-
<ItemGroup>
16-
<Reference Include="mscorlib" />
17-
<Reference Include="FSharp.Core, Version=$(TargetFSharpCoreVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
18-
<Private>True</Private>
19-
</Reference>
20-
<Reference Include="System" />
21-
<Reference Include="System.Core" />
22-
<Reference Include="System.Numerics" />
23-
</ItemGroup>
24-
<ItemGroup>
25-
<Compile Include="Config.fs" />
26-
<Compile Include="Utils.fs" />
27-
<Compile Include="CodeWriter.fs" />
28-
<Compile Include="Interop.fs" />
29-
<Compile Include="ForInDo.fs" />
30-
<Compile Include="Program.fs" />
31-
</ItemGroup>
3216
<PropertyGroup>
3317
<MinimumVisualStudioVersion Condition="'$(MinimumVisualStudioVersion)' == ''">11</MinimumVisualStudioVersion>
3418
</PropertyGroup>
@@ -70,6 +54,30 @@
7054
</Otherwise>
7155
</Choose>
7256
<Import Project="$(FSharpTargetsPath)" />
57+
<ItemGroup>
58+
<Compile Include="Config.fs" />
59+
<Compile Include="Utils.fs" />
60+
<Compile Include="CodeWriter.fs" />
61+
<Compile Include="Interop.fs" />
62+
<Compile Include="ForInDo.fs" />
63+
<Compile Include="Program.fs" />
64+
<Content Include="App.config">
65+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
66+
</Content>
67+
<Content Include="packages.config" />
68+
</ItemGroup>
69+
<ItemGroup>
70+
<Reference Include="FSharp.Core">
71+
<HintPath>packages\FSharp.Core.4.6.2\lib\net45\FSharp.Core.dll</HintPath>
72+
</Reference>
73+
<Reference Include="mscorlib" />
74+
<Reference Include="FSharp.Core, Version=$(TargetFSharpCoreVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
75+
<Private>True</Private>
76+
</Reference>
77+
<Reference Include="System" />
78+
<Reference Include="System.Core" />
79+
<Reference Include="System.Numerics" />
80+
</ItemGroup>
7381
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
7482
Other similar extension points exist, see Microsoft.Common.targets.
7583
<Target Name="BeforeBuild">

AutoGenTool/Config.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,4 @@ module Config =
4343
let SKIP_INCLUDES = ["compatible"; "cuda"; "features"; "graphics"; "image"; "opencl"; "vision" ]
4444

4545
// path to the ArrayFire library source code (relative to this project's bin/Debug or bin/Release folders)
46-
let OUTPUT_DIR = "../../../Wrapper"
46+
let OUTPUT_DIR = "../../../src/Wrapper"

AutoGenTool/packages.config

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<packages>
3+
<package id="FSharp.Core" version="4.6.2" targetFramework="net472" />
4+
</packages>

src/Wrapper/Data.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -346,22 +346,22 @@ public static class Data
346346
public static Array RandUniform<T>(params int[] dims)
347347
{
348348
IntPtr ptr;
349-
Internal.VERIFY(AFData.af_randu(out ptr, (uint)dims.Length, Internal.toLongArray(dims), Internal.toDType<T>()));
349+
Internal.VERIFY(AFRandom.af_randu(out ptr, (uint)dims.Length, Internal.toLongArray(dims), Internal.toDType<T>()));
350350
return new Array(ptr);
351351
}
352352

353353
[MethodImpl(MethodImplOptions.AggressiveInlining)]
354354
public static Array RandNormal<T>(params int[] dims)
355355
{
356356
IntPtr ptr;
357-
Internal.VERIFY(AFData.af_randn(out ptr, (uint)dims.Length, Internal.toLongArray(dims), Internal.toDType<T>()));
357+
Internal.VERIFY(AFRandom.af_randn(out ptr, (uint)dims.Length, Internal.toLongArray(dims), Internal.toDType<T>()));
358358
return new Array(ptr);
359359
}
360360

361361
public static ulong RandSeed
362362
{
363-
get { ulong value; Internal.VERIFY(AFData.af_get_seed(out value)); return value; }
364-
set { Internal.VERIFY(AFData.af_set_seed(value)); }
363+
get { ulong value; Internal.VERIFY(AFRandom.af_get_seed(out value)); return value; }
364+
set { Internal.VERIFY(AFRandom.af_set_seed(value)); }
365365
}
366366
#endregion
367367

src/Wrapper/Interop/AFAlgorithm.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ public static class AFAlgorithm
8181
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
8282
public static extern af_err af_accum(out IntPtr array_out, IntPtr array_in, int dim);
8383

84+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
85+
public static extern af_err af_scan(out IntPtr array_out, IntPtr array_in, int dim, af_binary_op op, bool inclusive_scan);
86+
87+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
88+
public static extern af_err af_scan_by_key(out IntPtr array_out, IntPtr array_key, IntPtr array_in, int dim, af_binary_op op, bool inclusive_scan);
89+
8490
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
8591
public static extern af_err af_where(out IntPtr array_idx, IntPtr array_in);
8692

src/Wrapper/Interop/AFArith.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ public static class AFArith
7575
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
7676
public static extern af_err af_maxof(out IntPtr array_out, IntPtr array_lhs, IntPtr array_rhs, bool batch);
7777

78+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
79+
public static extern af_err af_clamp(out IntPtr array_out, IntPtr array_in, IntPtr array_lo, IntPtr array_hi, bool batch);
80+
7881
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
7982
public static extern af_err af_rem(out IntPtr array_out, IntPtr array_lhs, IntPtr array_rhs, bool batch);
8083

src/Wrapper/Interop/AFArray.cs

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,15 @@ public static class AFArray
426426
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
427427
public static extern af_err af_eval(IntPtr array_in);
428428

429+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
430+
public static extern af_err af_eval_multiple(int num, out IntPtr array_arrays);
431+
432+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
433+
public static extern af_err af_set_manual_eval_flag(bool flag);
434+
435+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
436+
public static extern af_err af_get_manual_eval_flag(out bool flag);
437+
429438
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
430439
public static extern af_err af_get_elements(out long dim_elems, IntPtr array_arr);
431440

@@ -476,5 +485,140 @@ public static class AFArray
476485

477486
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
478487
public static extern af_err af_is_bool(out bool result, IntPtr array_arr);
488+
489+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
490+
public static extern af_err af_is_sparse(out bool result, IntPtr array_arr);
491+
492+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
493+
public static extern af_err af_get_scalar([Out] bool[] output_value, IntPtr array_arr);
494+
495+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
496+
public static extern af_err af_get_scalar([Out] Complex[] output_value, IntPtr array_arr);
497+
498+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
499+
public static extern af_err af_get_scalar([Out] float[] output_value, IntPtr array_arr);
500+
501+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
502+
public static extern af_err af_get_scalar([Out] double[] output_value, IntPtr array_arr);
503+
504+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
505+
public static extern af_err af_get_scalar([Out] int[] output_value, IntPtr array_arr);
506+
507+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
508+
public static extern af_err af_get_scalar([Out] long[] output_value, IntPtr array_arr);
509+
510+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
511+
public static extern af_err af_get_scalar([Out] uint[] output_value, IntPtr array_arr);
512+
513+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
514+
public static extern af_err af_get_scalar([Out] ulong[] output_value, IntPtr array_arr);
515+
516+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
517+
public static extern af_err af_get_scalar([Out] byte[] output_value, IntPtr array_arr);
518+
519+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
520+
public static extern af_err af_get_scalar([Out] short[] output_value, IntPtr array_arr);
521+
522+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
523+
public static extern af_err af_get_scalar([Out] ushort[] output_value, IntPtr array_arr);
524+
525+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
526+
public static extern af_err af_get_scalar([Out] bool[,] output_value, IntPtr array_arr);
527+
528+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
529+
public static extern af_err af_get_scalar([Out] Complex[,] output_value, IntPtr array_arr);
530+
531+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
532+
public static extern af_err af_get_scalar([Out] float[,] output_value, IntPtr array_arr);
533+
534+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
535+
public static extern af_err af_get_scalar([Out] double[,] output_value, IntPtr array_arr);
536+
537+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
538+
public static extern af_err af_get_scalar([Out] int[,] output_value, IntPtr array_arr);
539+
540+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
541+
public static extern af_err af_get_scalar([Out] long[,] output_value, IntPtr array_arr);
542+
543+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
544+
public static extern af_err af_get_scalar([Out] uint[,] output_value, IntPtr array_arr);
545+
546+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
547+
public static extern af_err af_get_scalar([Out] ulong[,] output_value, IntPtr array_arr);
548+
549+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
550+
public static extern af_err af_get_scalar([Out] byte[,] output_value, IntPtr array_arr);
551+
552+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
553+
public static extern af_err af_get_scalar([Out] short[,] output_value, IntPtr array_arr);
554+
555+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
556+
public static extern af_err af_get_scalar([Out] ushort[,] output_value, IntPtr array_arr);
557+
558+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
559+
public static extern af_err af_get_scalar([Out] bool[,,] output_value, IntPtr array_arr);
560+
561+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
562+
public static extern af_err af_get_scalar([Out] Complex[,,] output_value, IntPtr array_arr);
563+
564+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
565+
public static extern af_err af_get_scalar([Out] float[,,] output_value, IntPtr array_arr);
566+
567+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
568+
public static extern af_err af_get_scalar([Out] double[,,] output_value, IntPtr array_arr);
569+
570+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
571+
public static extern af_err af_get_scalar([Out] int[,,] output_value, IntPtr array_arr);
572+
573+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
574+
public static extern af_err af_get_scalar([Out] long[,,] output_value, IntPtr array_arr);
575+
576+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
577+
public static extern af_err af_get_scalar([Out] uint[,,] output_value, IntPtr array_arr);
578+
579+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
580+
public static extern af_err af_get_scalar([Out] ulong[,,] output_value, IntPtr array_arr);
581+
582+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
583+
public static extern af_err af_get_scalar([Out] byte[,,] output_value, IntPtr array_arr);
584+
585+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
586+
public static extern af_err af_get_scalar([Out] short[,,] output_value, IntPtr array_arr);
587+
588+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
589+
public static extern af_err af_get_scalar([Out] ushort[,,] output_value, IntPtr array_arr);
590+
591+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
592+
public static extern af_err af_get_scalar([Out] bool[,,,] output_value, IntPtr array_arr);
593+
594+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
595+
public static extern af_err af_get_scalar([Out] Complex[,,,] output_value, IntPtr array_arr);
596+
597+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
598+
public static extern af_err af_get_scalar([Out] float[,,,] output_value, IntPtr array_arr);
599+
600+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
601+
public static extern af_err af_get_scalar([Out] double[,,,] output_value, IntPtr array_arr);
602+
603+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
604+
public static extern af_err af_get_scalar([Out] int[,,,] output_value, IntPtr array_arr);
605+
606+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
607+
public static extern af_err af_get_scalar([Out] long[,,,] output_value, IntPtr array_arr);
608+
609+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
610+
public static extern af_err af_get_scalar([Out] uint[,,,] output_value, IntPtr array_arr);
611+
612+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
613+
public static extern af_err af_get_scalar([Out] ulong[,,,] output_value, IntPtr array_arr);
614+
615+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
616+
public static extern af_err af_get_scalar([Out] byte[,,,] output_value, IntPtr array_arr);
617+
618+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
619+
public static extern af_err af_get_scalar([Out] short[,,,] output_value, IntPtr array_arr);
620+
621+
[DllImport(af_config.dll, ExactSpelling = true, SetLastError = false, CallingConvention = CallingConvention.Cdecl)]
622+
public static extern af_err af_get_scalar([Out] ushort[,,,] output_value, IntPtr array_arr);
479623
}
480624
}

0 commit comments

Comments
 (0)