@@ -588,44 +588,14 @@ macro gbmatrixtype(typename)
588588 if dims isa Dims{1 }
589589 # TODO : When new Vector types are added this will be incorrect.
590590 x = GBVector {TNew} (dims... ; fill)
591+ elseif $ typename <: AbstractGBVector
592+ x = GBMatrix {TNew} (dims... ; fill)
591593 else
592594 x = $ typename {TNew} (dims... ; fill)
593- _hasconstantorder (x) || setstorageorder! (x, storageorder (A))
594595 end
596+ _hasconstantorder (x) || setstorageorder! (x, storageorder (A))
595597 return x
596598 end
597-
598- function Base. similar (A:: $typename{T} , dims:: Tuple ; fill = getfill (A)) where T
599- return similar (A, T, dims; fill)
600- end
601-
602- function Base. similar (
603- A:: $typename , :: Type{TNew} ,
604- dims:: Integer ; fill = getfill (A)
605- ) where TNew
606- return similar (A, TNew, (dims,); fill)
607- end
608-
609- function Base. similar (
610- A:: $typename , :: Type{TNew} ,
611- dim1:: Integer , dim2:: Integer ; fill = getfill (A)
612- ) where TNew
613- return similar (A, TNew, (dim1, dim2); fill)
614- end
615-
616- function Base. similar (
617- A:: $typename ,
618- dims:: Integer ; fill = getfill (A)
619- )
620- return similar (A, (dims,); fill)
621- end
622-
623- function Base. similar (
624- A:: $typename ,
625- dim1:: Integer , dim2:: Integer ; fill = getfill (A)
626- )
627- return similar (A, (dim1, dim2); fill)
628- end
629599 strip_parameters (:: Type{<:$typename} ) = $ typename
630600 end )
631601end
@@ -779,54 +749,20 @@ macro gbvectortype(typename)
779749 A:: SparseVector{T} ;
780750 fill:: F = defaultfill (T)
781751 ) where {T, F} = $ typename {T, F} (A; fill)
782-
783- # similar
784752 function Base. similar (
785753 v:: $typename{T} , :: Type{TNew} = T,
786754 dims:: Tuple{Int64, Vararg{Int64, N}} = size (v); fill:: F = getfill (v)
787755 ) where {T, TNew, N, F}
788756 ! (F <: Union{Nothing, Missing} ) && (fill = convert (TNew, fill))
789757 if dims isa Dims{1 }
790- # TODO : Check this for correctness!!!
758+ # TODO : When new Vector types are added this will be incorrect.
791759 x = $ typename {TNew} (dims... ; fill)
792760 else
793- x = $ GBMatrix {TNew} (dims... ; fill)
794- _hasconstantorder (x) || setstorageorder! (x, storageorder (v))
761+ x = GBMatrix {TNew} (dims... ; fill)
795762 end
763+ _hasconstantorder (x) || setstorageorder! (x, storageorder (v))
796764 return x
797765 end
798-
799- function Base. similar (v:: $typename{T} , dims:: Tuple ; fill = getfill (v)) where T
800- return similar (v, T, dims; fill)
801- end
802-
803- function Base. similar (
804- v:: $typename , :: Type{TNew} ,
805- dims:: Integer ; fill = getfill (v)
806- ) where TNew
807- return similar (v, TNew, (dims,); fill)
808- end
809-
810- function Base. similar (
811- v:: $typename , :: Type{TNew} ,
812- dim1:: Integer , dim2:: Integer ; fill = getfill (v)
813- ) where TNew
814- return similar (v, TNew, (dim1, dim2); fill)
815- end
816-
817- function Base. similar (
818- v:: $typename ,
819- dims:: Integer ; fill = getfill (v)
820- )
821- return similar (v, (dims,); fill)
822- end
823-
824- function Base. similar (
825- v:: $typename ,
826- dim1:: Integer , dim2:: Integer ; fill = getfill (v)
827- )
828- return similar (v, (dim1, dim2); fill)
829- end
830766 # misc utilities:
831767 strip_parameters (:: Type{<:$typename} ) = $ typename
832768 end )
@@ -1050,4 +986,4 @@ defaultfill(::Type{Missing}) = missing
1050986# I don't think it is onerous for graph algorithm writers to say `GBMatrix{Int64, Nothing}`,
1051987# and provides better defaults for other users.
1052988defaultfill (:: Type{Union{T, Nothing}} ) where T = T
1053- defaultfill (:: Type{Union{T, Missing}} ) where T = T
989+ defaultfill (:: Type{Union{T, Missing}} ) where T = T
0 commit comments