diff --git a/deps/src/polymake_arrays.cpp b/deps/src/polymake_arrays.cpp index 8085b420..07b1366c 100644 --- a/deps/src/polymake_arrays.cpp +++ b/deps/src/polymake_arrays.cpp @@ -19,6 +19,7 @@ tparametric1 polymake_module_add_array(jlcxx::Module& polymake) pm::Array, pm::Array>, pm::Array>, pm::Array>, + pm::Array>, pm::Array>>([](auto wrapped) { typedef typename decltype(wrapped)::type WrappedT; typedef typename decltype(wrapped)::type::value_type elemType; @@ -92,6 +93,10 @@ tparametric1 polymake_module_add_array(jlcxx::Module& polymake) "to_array_array_integer", [](const pm::perl::PropertyValue& pv) { return to_SmallObject>>(pv); }); + polymake.method( + "to_array_array_rational", [](const pm::perl::PropertyValue& pv) { + return to_SmallObject>>(pv); + }); polymake.method( "to_array_set_int", [](const pm::perl::PropertyValue& pv) { return to_SmallObject>>(pv); diff --git a/deps/type_setup.jl b/deps/type_setup.jl index e301dea1..3c25bb2a 100644 --- a/deps/type_setup.jl +++ b/deps/type_setup.jl @@ -20,6 +20,7 @@ type_tuples = let NT = NamedTuple{(:type_string, :ctype, :jltype, :convert_f)} ( "Array_Set_Int", "pm::Array>", "Array{Set{CxxWrap.CxxLong}}", "to_array_set_int" ), ( "Array_Array_Int", "pm::Array>", "Array{Array{CxxWrap.CxxLong}}", "to_array_array_int" ), ( "Array_Array_Integer", "pm::Array>", "Array{Array{Integer}}", "to_array_array_integer" ), +( "Array_Array_Rational", "pm::Array>", "Array{Array{Rational}}", "to_array_array_rational" ), ( "Array_Matrix_Integer", "pm::Array>", "Array{Matrix{Integer}}", "to_array_matrix_integer" ), ( "Array_BigObject", "pm::Array", "Array{BigObject}", "to_array_bigobject" ), ( "Array_Polynomial_Integer_Int", "pm::Array>", "Array{Polynomial{Integer,CxxWrap.CxxLong}}", "to_array_polynomial_integer_int"), diff --git a/src/arrays.jl b/src/arrays.jl index 3396f6dd..bc7893fd 100644 --- a/src/arrays.jl +++ b/src/arrays.jl @@ -3,7 +3,7 @@ const Array_suppT = Union{Int64, CxxWrap.CxxLong, String, CxxWrap.StdString, Set{Int64}, Set{CxxWrap.CxxLong}, Array{Int64}, Array{CxxWrap.CxxLong}, - Array{Integer}, Matrix{Integer}} + Array{Integer}, Array{Rational}, Matrix{Integer}} function Array{T}(::UndefInitializer, n::Base.Integer) where T <: Array_suppT diff --git a/test/arrays.jl b/test/arrays.jl index 809ba044..9195cbea 100644 --- a/test/arrays.jl +++ b/test/arrays.jl @@ -8,6 +8,7 @@ (Polymake.Matrix{Polymake.Integer}, Polymake.Matrix{Polymake.Integer}([1 0; 2 1])), (Polymake.Array{Polymake.to_cxx_type(Int)}, Polymake.Array{Int64}(Int64[1, 2, 3])), (Polymake.Array{Polymake.Integer}, Polymake.Array{Polymake.Integer}(Polymake.Integer[1, 2, 3])), + (Polymake.Array{Polymake.Rational}, Polymake.Array{Polymake.Rational}(Polymake.Rational[1, 2, 3])), ] @test Polymake.Array{T} <: AbstractVector @test Polymake.Array{T}(undef, 3) isa AbstractVector