4
4
5
5
namespace JULIAdotNET {
6
6
public static partial class JPrimitive {
7
- public static Any BaseM , CoreM , MainM ;
8
- public static JType ModuleT , TypeT , FunctionT , MethodT , UnionT ;
9
- public static Any sprintF , showerrorF , catch_backtraceF , stringF , getpropertyF , setpropertyNotF , namesF , makearrayF , writeSharpArrayF , maketupleF , ievalF , getindexF , setindexNotF , lengthF , iterateF , EqualityF , InequalityF , GreaterThanF , LessThanF , GreaterThanOrEqualF , LessThanOrEqualF , NotF , OnesComplementF , ExclusiveOrF , BitwiseAndF , BitwiseOrF , ModulusF , MultiplyF , AdditionF , SubtractionF , DivisionF , RightShiftF , LeftShiftF , typeofF , hashF , ismutableF , isabstracttypeF , isimmutableF , isprimitivetypeF , sizeofF , parentmoduleF , nameofF , fieldcountF , fieldnameF , fieldoffsetF , fieldtypeF ;
7
+ public static JModule BaseM , CoreM , MainM ;
8
+ public static JType ModuleT , TypeT , FunctionT , MethodT , UnionT , IntegerT , AbstractFloatT , StringT , PtrT ;
9
+ public static JType BoolT , CharT , Float64T , Float32T , Float16T , Int64T , Int32T , Int16T , Int8T , UInt64T , UInt32T , UInt16T , UInt8T , ArrayT ;
10
+ public static Any sprintF , showerrorF , catch_backtraceF , stringF , getpropertyF , setpropertyNotF , namesF , makentupleF , writeSharpArrayF , maketupleF , ievalF , getindexF , setindexNotF , lengthF , iterateF , EqualityF , InequalityF , GreaterThanF , LessThanF , GreaterThanOrEqualF , LessThanOrEqualF , NotF , OnesComplementF , ExclusiveOrF , BitwiseAndF , BitwiseOrF , ModulusF , MultiplyF , AdditionF , SubtractionF , DivisionF , RightShiftF , LeftShiftF , typeofF , hashF , ismutableF , isabstracttypeF , isimmutableF , isprimitivetypeF , sizeofF , parentmoduleF , nameofF , fieldcountF , fieldnameF , fieldoffsetF , fieldtypeF ;
10
11
11
12
internal static unsafe void primitive_init ( ) {
12
13
13
14
Julia . Eval ( @"module SharpModule begin
14
- export makearray, maketuple, writeSharpArray, maketuple, ieval
15
+ export makearray, maketuple, writeSharpArray, maketuple, ieval, union_types, makentuple
15
16
function method_argnames(m::Method)
16
17
argnames = ccall(:jl_uncompress_argnames, Vector{Symbol}, (Any,), m.slot_syms)
17
18
isempty(argnames) && return argnames
@@ -20,13 +21,15 @@ function method_argnames(m::Method)
20
21
ieval(mod::Module, ex) = begin
21
22
Core.eval(mod, Meta.parse(ex))
22
23
end
23
- makearray(T::Type, dims::Ptr{Cvoid}, len::Int32) = begin
24
- ptr = convert(Ptr{Int32}, dims)
25
- Array{T}(undef, [unsafe_load(ptr, i) for i = 1:len]...)
26
- end
27
24
maketuple(vals...) = begin
28
25
tuple(vals...)
29
26
end
27
+ (makentuple(::Type{T}, n, p::Ptr{Cvoid}) where T) = begin
28
+ p2 = convert(Ptr{T}, p)
29
+ return ntuple((i->begin
30
+ unsafe_load(p2, i)
31
+ end), n)
32
+ end
30
33
linedEvaluation(s::String, file::String, m::Module) = begin
31
34
Core.eval(m, Meta.parseall(s, filename = file))
32
35
end
@@ -37,12 +40,11 @@ function writeSharpArray(p, arr)
37
40
end
38
41
end
39
42
end end; using .SharpModule" ) ;
40
-
43
+
41
44
var writeSharpArray = Julia . Eval ( "writeSharpArray" ) ;
42
- fixed ( Any * values = new Any [ 54 ] ) {
43
- var syms = Julia . Eval ( "[Base,Core,Main,sprint,showerror,catch_backtrace,string,getproperty,setproperty!,names,makearray ,writeSharpArray,maketuple,ieval,getindex,setindex!,length,iterate,Module,Type,Function,Method,Union,==,!=,>,<,>=,<=,!,~,^,&,|,rem,*,+,-,/,>>,<<,typeof,hash,ismutable,isabstracttype,isimmutable,isprimitivetype,sizeof,parentmodule,nameof,fieldcount,fieldname,fieldoffset,fieldtype]" ) ;
45
+ fixed ( Any * values = new Any [ 72 ] ) {
46
+ var syms = Julia . Eval ( "[Base,Core,Main,sprint,showerror,catch_backtrace,string,getproperty,setproperty!,names,makentuple ,writeSharpArray,maketuple,ieval,getindex,setindex!,length,iterate,Module,Type,Function,Method,Union,Integer,AbstractFloat,String,Ptr, ==,!=,>,<,>=,<=,!,~,^,&,|,rem,*,+,-,/,>>,<<,typeof,hash,ismutable,isabstracttype,isimmutable,isprimitivetype,sizeof,parentmodule,nameof,fieldcount,fieldname,fieldoffset,fieldtype,Bool,Char,Float64,Float32,Float16,Int64,Int32,Int16,Int8,UInt64,UInt32,UInt16,UInt8,Array ]" ) ;
44
47
writeSharpArray . Invoke ( new Any ( values ) , syms ) ;
45
-
46
48
BaseM = values [ 0 ] ;
47
49
CoreM = values [ 1 ] ;
48
50
MainM = values [ 2 ] ;
@@ -51,52 +53,85 @@ function writeSharpArray(p, arr)
51
53
FunctionT = values [ 20 ] ;
52
54
MethodT = values [ 21 ] ;
53
55
UnionT = values [ 22 ] ;
56
+ IntegerT = values [ 23 ] ;
57
+ AbstractFloatT = values [ 24 ] ;
58
+ StringT = values [ 25 ] ;
59
+ PtrT = values [ 26 ] ;
54
60
sprintF = values [ 3 ] ;
55
61
showerrorF = values [ 4 ] ;
56
62
catch_backtraceF = values [ 5 ] ;
57
63
stringF = values [ 6 ] ;
58
64
getpropertyF = values [ 7 ] ;
59
65
setpropertyNotF = values [ 8 ] ;
60
66
namesF = values [ 9 ] ;
61
- makearrayF = values [ 10 ] ;
67
+ makentupleF = values [ 10 ] ;
62
68
writeSharpArrayF = values [ 11 ] ;
63
69
maketupleF = values [ 12 ] ;
64
70
ievalF = values [ 13 ] ;
65
71
getindexF = values [ 14 ] ;
66
72
setindexNotF = values [ 15 ] ;
67
73
lengthF = values [ 16 ] ;
68
74
iterateF = values [ 17 ] ;
69
- EqualityF = values [ 23 ] ;
70
- InequalityF = values [ 24 ] ;
71
- GreaterThanF = values [ 25 ] ;
72
- LessThanF = values [ 26 ] ;
73
- GreaterThanOrEqualF = values [ 27 ] ;
74
- LessThanOrEqualF = values [ 28 ] ;
75
- NotF = values [ 29 ] ;
76
- OnesComplementF = values [ 30 ] ;
77
- ExclusiveOrF = values [ 31 ] ;
78
- BitwiseAndF = values [ 32 ] ;
79
- BitwiseOrF = values [ 33 ] ;
80
- ModulusF = values [ 34 ] ;
81
- MultiplyF = values [ 35 ] ;
82
- AdditionF = values [ 36 ] ;
83
- SubtractionF = values [ 37 ] ;
84
- DivisionF = values [ 38 ] ;
85
- RightShiftF = values [ 39 ] ;
86
- LeftShiftF = values [ 40 ] ;
87
- typeofF = values [ 41 ] ;
88
- hashF = values [ 42 ] ;
89
- ismutableF = values [ 43 ] ;
90
- isabstracttypeF = values [ 44 ] ;
91
- isimmutableF = values [ 45 ] ;
92
- isprimitivetypeF = values [ 46 ] ;
93
- sizeofF = values [ 47 ] ;
94
- parentmoduleF = values [ 48 ] ;
95
- nameofF = values [ 49 ] ;
96
- fieldcountF = values [ 50 ] ;
97
- fieldnameF = values [ 51 ] ;
98
- fieldoffsetF = values [ 52 ] ;
99
- fieldtypeF = values [ 53 ] ;
75
+ EqualityF = values [ 27 ] ;
76
+ InequalityF = values [ 28 ] ;
77
+ GreaterThanF = values [ 29 ] ;
78
+ LessThanF = values [ 30 ] ;
79
+ GreaterThanOrEqualF = values [ 31 ] ;
80
+ LessThanOrEqualF = values [ 32 ] ;
81
+ NotF = values [ 33 ] ;
82
+ OnesComplementF = values [ 34 ] ;
83
+ ExclusiveOrF = values [ 35 ] ;
84
+ BitwiseAndF = values [ 36 ] ;
85
+ BitwiseOrF = values [ 37 ] ;
86
+ ModulusF = values [ 38 ] ;
87
+ MultiplyF = values [ 39 ] ;
88
+ AdditionF = values [ 40 ] ;
89
+ SubtractionF = values [ 41 ] ;
90
+ DivisionF = values [ 42 ] ;
91
+ RightShiftF = values [ 43 ] ;
92
+ LeftShiftF = values [ 44 ] ;
93
+ typeofF = values [ 45 ] ;
94
+ hashF = values [ 46 ] ;
95
+ ismutableF = values [ 47 ] ;
96
+ isabstracttypeF = values [ 48 ] ;
97
+ isimmutableF = values [ 49 ] ;
98
+ isprimitivetypeF = values [ 50 ] ;
99
+ sizeofF = values [ 51 ] ;
100
+ parentmoduleF = values [ 52 ] ;
101
+ nameofF = values [ 53 ] ;
102
+ fieldcountF = values [ 54 ] ;
103
+ fieldnameF = values [ 55 ] ;
104
+ fieldoffsetF = values [ 56 ] ;
105
+ fieldtypeF = values [ 57 ] ;
106
+ BoolT = values [ 58 ] ;
107
+ CharT = values [ 59 ] ;
108
+ Float64T = values [ 60 ] ;
109
+ Float32T = values [ 61 ] ;
110
+ Float16T = values [ 62 ] ;
111
+ Int64T = values [ 63 ] ;
112
+ Int32T = values [ 64 ] ;
113
+ Int16T = values [ 65 ] ;
114
+ Int8T = values [ 66 ] ;
115
+ UInt64T = values [ 67 ] ;
116
+ UInt32T = values [ 68 ] ;
117
+ UInt16T = values [ 69 ] ;
118
+ UInt8T = values [ 70 ] ;
119
+ ArrayT = values [ 71 ] ;
120
+
121
+ RegisterPrimitive ( typeof ( bool ) , BoolT ) ;
122
+ RegisterPrimitive ( typeof ( char ) , CharT ) ;
123
+ RegisterPrimitive ( typeof ( double ) , Float64T ) ;
124
+ RegisterPrimitive ( typeof ( float ) , Float32T ) ;
125
+ RegisterPrimitive ( typeof ( Half ) , Float16T ) ;
126
+ RegisterPrimitive ( typeof ( long ) , Int64T ) ;
127
+ RegisterPrimitive ( typeof ( int ) , Int32T ) ;
128
+ RegisterPrimitive ( typeof ( short ) , Int16T ) ;
129
+ RegisterPrimitive ( typeof ( sbyte ) , Int8T ) ;
130
+ RegisterPrimitive ( typeof ( ulong ) , UInt64T ) ;
131
+ RegisterPrimitive ( typeof ( uint ) , UInt32T ) ;
132
+ RegisterPrimitive ( typeof ( ushort ) , UInt16T ) ;
133
+ RegisterPrimitive ( typeof ( byte ) , UInt8T ) ;
134
+ RegisterPrimitive ( typeof ( Array ) , ArrayT ) ;
100
135
}
101
136
}
102
137
}
0 commit comments