@@ -123,7 +123,7 @@ export
123
123
SimpleVector, AbstractArray, DenseArray, NamedTuple,
124
124
# special objects
125
125
Function, CodeInfo, Method, MethodTable, TypeMapEntry, TypeMapLevel,
126
- Module, Symbol, Task, Array, WeakRef, VecElement,
126
+ Module, Symbol, Task, Array, Uninitialized, uninitialized, WeakRef, VecElement,
127
127
# numeric types
128
128
Number, Real, Integer, Bool, Ref, Ptr,
129
129
AbstractFloat, Float16, Float32, Float64,
@@ -350,25 +350,45 @@ unsafe_convert(::Type{T}, x::T) where {T} = x
350
350
const NTuple{N,T} = Tuple{Vararg{T,N}}
351
351
352
352
353
- # primitive array constructors
354
- Array {T,N} (d:: NTuple{N,Int} ) where {T,N} =
355
- ccall (:jl_new_array , Array{T,N}, (Any, Any), Array{T,N}, d)
356
- Array {T,1} (d:: NTuple{1,Int} ) where {T} = Array {T,1} (getfield (d,1 ))
357
- Array {T,2} (d:: NTuple{2,Int} ) where {T} = Array {T,2} (getfield (d,1 ), getfield (d,2 ))
358
- Array {T,3} (d:: NTuple{3,Int} ) where {T} = Array {T,3} (getfield (d,1 ), getfield (d,2 ), getfield (d,3 ))
359
- Array {T,N} (d:: Vararg{Int,N} ) where {T,N} = ccall (:jl_new_array , Array{T,N}, (Any, Any), Array{T,N}, d)
360
- Array {T,1} (m:: Int ) where {T} = ccall (:jl_alloc_array_1d , Array{T,1 }, (Any, Int), Array{T,1 }, m)
361
- Array {T,2} (m:: Int , n:: Int ) where {T} =
353
+ # # primitive Array constructors
354
+ struct Uninitialized end
355
+ const uninitialized = Uninitialized ()
356
+ # type and dimensionality specified, accepting dims as series of Ints
357
+ Array {T,1} (:: Uninitialized , m:: Int ) where {T} =
358
+ ccall (:jl_alloc_array_1d , Array{T,1 }, (Any, Int), Array{T,1 }, m)
359
+ Array {T,2} (:: Uninitialized , m:: Int , n:: Int ) where {T} =
362
360
ccall (:jl_alloc_array_2d , Array{T,2 }, (Any, Int, Int), Array{T,2 }, m, n)
363
- Array {T,3} (m:: Int , n:: Int , o:: Int ) where {T} =
361
+ Array {T,3} (:: Uninitialized , m:: Int , n:: Int , o:: Int ) where {T} =
364
362
ccall (:jl_alloc_array_3d , Array{T,3 }, (Any, Int, Int, Int), Array{T,3 }, m, n, o)
363
+ Array {T,N} (:: Uninitialized , d:: Vararg{Int,N} ) where {T,N} =
364
+ ccall (:jl_new_array , Array{T,N}, (Any, Any), Array{T,N}, d)
365
+ # type and dimensionality specified, accepting dims as tuples of Ints
366
+ Array {T,1} (:: Uninitialized , d:: NTuple{1,Int} ) where {T} = Array {T,1} (uninitialized, getfield (d,1 ))
367
+ Array {T,2} (:: Uninitialized , d:: NTuple{2,Int} ) where {T} = Array {T,2} (uninitialized, getfield (d,1 ), getfield (d,2 ))
368
+ Array {T,3} (:: Uninitialized , d:: NTuple{3,Int} ) where {T} = Array {T,3} (uninitialized, getfield (d,1 ), getfield (d,2 ), getfield (d,3 ))
369
+ Array {T,N} (:: Uninitialized , d:: NTuple{N,Int} ) where {T,N} = ccall (:jl_new_array , Array{T,N}, (Any, Any), Array{T,N}, d)
370
+ # type but not dimensionality specified
371
+ Array {T} (:: Uninitialized , m:: Int ) where {T} = Array {T,1} (uninitialized, m)
372
+ Array {T} (:: Uninitialized , m:: Int , n:: Int ) where {T} = Array {T,2} (uninitialized, m, n)
373
+ Array {T} (:: Uninitialized , m:: Int , n:: Int , o:: Int ) where {T} = Array {T,3} (uninitialized, m, n, o)
374
+ Array {T} (:: Uninitialized , d:: NTuple{N,Int} ) where {T,N} = Array {T,N} (uninitialized, d)
375
+ # empty vector constructor
376
+ Array {T,1} () where {T} = Array {T,1} (uninitialized, 0 )
377
+
378
+ # # preexisting Array constructors, i.e. without uninitialized, to deprecate
379
+ # type and dimensionality specified, accepting dims as series of Ints
380
+ Array {T,1} (m:: Int ) where {T} = Array {T,1} (uninitialized, m)
381
+ Array {T,2} (m:: Int , n:: Int ) where {T} = Array {T,2} (uninitialized, m, n)
382
+ Array {T,3} (m:: Int , n:: Int , o:: Int ) where {T} = Array {T,3} (uninitialized, m, n, o)
383
+ Array {T,N} (d:: Vararg{Int,N} ) where {T,N} = Array {T,N} (uninitialized, d)
384
+ # type and dimensionality specified, accepting dims as tuples of Ints
385
+ Array {T,N} (d:: NTuple{N,Int} ) where {T,N} = Array {T,N} (uninitialized, d)
386
+ # type but not dimensionality specified
387
+ Array {T} (m:: Int ) where {T} = Array {T} (uninitialized, m)
388
+ Array {T} (m:: Int , n:: Int ) where {T} = Array {T} (uninitialized, m, n)
389
+ Array {T} (m:: Int , n:: Int , o:: Int ) where {T} = Array {T} (uninitialized, m, n, o)
390
+ Array {T} (d:: NTuple{N,Int} ) where {T,N} = Array {T} (uninitialized, d)
365
391
366
- Array {T} (d:: NTuple{N,Int} ) where {T,N} = Array {T,N} (d)
367
- Array {T} (m:: Int ) where {T} = Array {T,1} (m)
368
- Array {T} (m:: Int , n:: Int ) where {T} = Array {T,2} (m, n)
369
- Array {T} (m:: Int , n:: Int , o:: Int ) where {T} = Array {T,3} (m, n, o)
370
-
371
- Array {T,1} () where {T} = Array {T,1} (0 )
372
392
373
393
# primitive Symbol constructors
374
394
function Symbol (s:: String )
0 commit comments