Blob Blame History Raw
--- singular-4.1.1/m4/polymake-check.m4.orig	2020-02-09 08:58:52.755902651 -0700
+++ singular-4.1.1/m4/polymake-check.m4	2020-02-09 08:59:13.360835883 -0700
@@ -29,7 +29,7 @@ if test "x$ENABLE_POLYMAKE" != xno; then
    AC_CHECK_PROG([PMCONFIG],[polymake-config],[1],[0])
    if test $PMCONFIG = "1"; then
 ##    AC_MSG_CHECKING([whether polymake is up-to-date])
-    SUPPORTEDPOLYMAKEVERSION="21"
+    SUPPORTEDPOLYMAKEVERSION="3"
     CURRENTPOLYMAKEVERSION=`polymake-config --version | cut -c -3 -| sed s'/\.//'`
     if test $CURRENTPOLYMAKEVERSION -ge $SUPPORTEDPOLYMAKEVERSION; then
       AC_MSG_RESULT([yes])
--- singular-4.1.1/Singular/dyn_modules/polymake/polymake_conversion.cc.orig	2018-07-31 07:05:52.000000000 -0600
+++ singular-4.1.1/Singular/dyn_modules/polymake/polymake_conversion.cc	2020-02-20 20:51:28.970588775 -0700
@@ -93,8 +93,8 @@ gfan::Rational PmRational2GfRational (co
 
 gfan::ZMatrix PmMatrixInteger2GfZMatrix (const polymake::Matrix<polymake::Integer>* mi)
 {
-  int rows=mi->rows();
-  int cols=mi->cols();
+  int rows=static_cast<int>(mi->rows());
+  int cols=static_cast<int>(mi->cols());
   gfan::ZMatrix zm(rows,cols);
   for(int r=1; r<=rows; r++)
     for(int c=1; c<=cols; c++)
@@ -104,8 +104,8 @@ gfan::ZMatrix PmMatrixInteger2GfZMatrix
 
 gfan::QMatrix PmMatrixRational2GfQMatrix (const polymake::Matrix<polymake::Rational>* mr)
 {
-  int rows=mr->rows();
-  int cols=mr->cols();
+  int rows=static_cast<int>(mr->rows());
+  int cols=static_cast<int>(mr->cols());
   gfan::QMatrix qm(rows,cols);
   for(int r=1; r<=rows; r++)
     for(int c=1; c<=cols; c++)
@@ -149,8 +149,8 @@ number PmInteger2Number (const polymake:
 
 intvec* PmVectorInteger2Intvec (const polymake::Vector<polymake::Integer>* vi, bool &ok)
 {
-  intvec* iv = new intvec(vi->size());
-  for(int i=1; i<=vi->size(); i++)
+  intvec* iv = new intvec(static_cast<int>(vi->size()));
+  for(int i=1; i<=static_cast<int>(vi->size()); i++)
   {
     (*iv)[i-1] = PmInteger2Int((*vi)[i-1],ok);
   }
@@ -159,8 +159,8 @@ intvec* PmVectorInteger2Intvec (const po
 
 intvec* PmMatrixInteger2Intvec (polymake::Matrix<polymake::Integer>* mi, bool &ok)
 {
-  int rows = mi->rows();
-  int cols = mi->cols();
+  int rows = static_cast<int>(mi->rows());
+  int cols = static_cast<int>(mi->cols());
   intvec* iv = new intvec(rows,cols,0);
 #if POLYMAKE_VERSION >= 301 /*3.1*/
   pm::array_traits<pm::Integer>::iterator pi = concat_rows(*mi).begin();
@@ -178,8 +178,8 @@ intvec* PmMatrixInteger2Intvec (polymake
 
 bigintmat* PmMatrixInteger2Bigintmat (polymake::Matrix<polymake::Integer>* mi)
 {
-  int rows = mi->rows();
-  int cols = mi->cols();
+  int rows = static_cast<int>(mi->rows());
+  int cols = static_cast<int>(mi->cols());
   bigintmat* bim= new bigintmat(rows,cols,coeffs_BIGINT);
 #if POLYMAKE_VERSION >= 301 /*3.1*/
   pm::array_traits<pm::Integer>::iterator pi = concat_rows(*mi).begin();
@@ -199,8 +199,8 @@ bigintmat* PmMatrixInteger2Bigintmat (po
 
 lists PmIncidenceMatrix2ListOfIntvecs (polymake::IncidenceMatrix<polymake::NonSymmetric>* icmat)
 {
-  int rows = icmat->rows();
-  int cols = icmat->cols();
+  int rows = static_cast<int>(icmat->rows());
+  int cols = static_cast<int>(icmat->cols());
   lists L = (lists)omAllocBin(slists_bin);
   L->Init(rows);
 
@@ -222,8 +222,8 @@ lists PmIncidenceMatrix2ListOfIntvecs (p
 
 lists PmAdjacencyMatrix2ListOfEdges (polymake::IncidenceMatrix<polymake::NonSymmetric>* icmat)
 {
-  int rows = icmat->rows();
-  int cols = icmat->cols();
+  int rows = static_cast<int>(icmat->rows());
+  int cols = static_cast<int>(icmat->cols());
 
   // counting number of edges
   int i=0; int r, c;
@@ -280,7 +280,7 @@ polymake::Matrix<polymake::Integer> Intv
 /* Functions for converting cones and fans in between gfan and polymake,
    Singular shares the same cones and fans with gfan */
 
-gfan::ZCone* PmCone2ZCone (polymake::perl::Object* pc)
+gfan::ZCone* PmCone2ZCone (pm::perl::BigObject* pc)
 {
   if (pc->isa("Cone"))
   {
@@ -335,7 +335,7 @@ gfan::ZCone* PmCone2ZCone (polymake::per
   return NULL;
 }
 
-gfan::ZCone* PmPolytope2ZPolytope (polymake::perl::Object* pp)
+gfan::ZCone* PmPolytope2ZPolytope (pm::perl::BigObject* pp)
 {
   if (pp->isa("Polytope<Rational>"))
   {
@@ -393,7 +393,7 @@ gfan::ZCone* PmPolytope2ZPolytope (polym
   return NULL;
 }
 
-gfan::ZFan* PmFan2ZFan (polymake::perl::Object* pf)
+gfan::ZFan* PmFan2ZFan (pm::perl::BigObject* pf)
 {
   if (pf->isa("PolyhedralFan"))
   {
@@ -403,7 +403,7 @@ gfan::ZFan* PmFan2ZFan (polymake::perl::
     int n = pf->give("N_MAXIMAL_CONES");
     for (int i=0; i<n; i++)
     {
-      polymake::perl::Object pmcone=pf->CallPolymakeMethod("cone",i);
+      pm::perl::BigObject pmcone=pf->call_method("cone",i);
       gfan::ZCone* zc=PmCone2ZCone(&pmcone);
       zf->insert(*zc);
     }
@@ -413,9 +413,9 @@ gfan::ZFan* PmFan2ZFan (polymake::perl::
   return NULL;
 }
 
-polymake::perl::Object* ZCone2PmCone (gfan::ZCone* zc)
+pm::perl::BigObject* ZCone2PmCone (gfan::ZCone* zc)
 {
-  polymake::perl::Object* gc = new polymake::perl::Object("Cone<Rational>");
+  pm::perl::BigObject* gc = new pm::perl::BigObject("Cone<Rational>");
 
   gfan::ZMatrix inequalities = zc->getInequalities();
   gc->take("FACETS") << GfZMatrix2PmMatrixInteger(&inequalities);
@@ -438,9 +438,9 @@ polymake::perl::Object* ZCone2PmCone (gf
   return gc;
 }
 
-polymake::perl::Object* ZPolytope2PmPolytope (gfan::ZCone* zc)
+pm::perl::BigObject* ZPolytope2PmPolytope (gfan::ZCone* zc)
 {
-  polymake::perl::Object* pp = new polymake::perl::Object("Polytope<Rational>");
+  pm::perl::BigObject* pp = new pm::perl::BigObject("Polytope<Rational>");
 
   gfan::ZMatrix inequalities = zc->getInequalities();
   pp->take("FACETS") << GfZMatrix2PmMatrixInteger(&inequalities);
@@ -495,12 +495,12 @@ int numberOfMaximalConesOf(gfan::ZFan* z
   return n;
 }
 
-polymake::Array<polymake::Set<int> > conesOf(gfan::ZFan* zf)
+polymake::Array<polymake::Set<polymake::Int> > conesOf(gfan::ZFan* zf)
 {
   int r = numberOfMaximalConesOf(zf);
 
   polymake::Matrix<polymake::Integer> pm=raysOf(zf);
-  polymake::Array<polymake::Set<int> > L(r);
+  polymake::Array<polymake::Set<polymake::Int> > L(r);
 
   int ii = 0;
   for (int d=1; d<=zf->getAmbientDimension(); d++)
@@ -508,10 +508,10 @@ polymake::Array<polymake::Set<int> > con
       for (int i=0; i<zf->numberOfConesOfDimension(d,0,1); i++)
         {
           gfan::IntVector v = zf->getConeIndices(d,i,0,1);
-          polymake::Set<int> s;
+          polymake::Set<polymake::Int> s;
           for (int j=0; j<(int)v.size(); j++)
             {
-              s = s+v[j];
+              s = s+static_cast<polymake::Int>(v[j]);
             }
           L[ii] = s;
           ii = ii + 1;
@@ -520,14 +520,14 @@ polymake::Array<polymake::Set<int> > con
   return L;
 }
 
-polymake::perl::Object* ZFan2PmFan (gfan::ZFan* zf)
+pm::perl::BigObject* ZFan2PmFan (gfan::ZFan* zf)
 {
-  polymake::perl::Object* pf = new polymake::perl::Object("PolyhedralFan");
+  pm::perl::BigObject* pf = new pm::perl::BigObject("PolyhedralFan");
 
   polymake::Matrix<polymake::Integer> zm = raysOf(zf);
   pf->take("RAYS") << zm;  // using rays here instead of INPUT_RAYS prevents redundant computations
 
-  polymake::Array<polymake::Set<int> > ar = conesOf(zf);
+  polymake::Array<polymake::Set<polymake::Int> > ar = conesOf(zf);
   pf->take("MAXIMAL_CONES") << ar;
 
   return pf;
--- singular-4.1.1/Singular/dyn_modules/polymake/polymake_conversion.h.orig	2018-07-31 07:05:52.000000000 -0600
+++ singular-4.1.1/Singular/dyn_modules/polymake/polymake_conversion.h	2020-02-20 20:51:14.598617834 -0700
@@ -60,12 +60,12 @@ polymake::Matrix<polymake::Integer> Intv
 /* Functions for converting cones and fans in between gfan and polymake,
    Singular shares the same cones and fans with gfan */
 
-gfan::ZCone* PmCone2ZCone (polymake::perl::Object* pc);
-gfan::ZCone* PmPolytope2ZPolytope (polymake::perl::Object* pp);
-gfan::ZFan* PmFan2ZFan (polymake::perl::Object* pf);
-polymake::perl::Object* ZCone2PmCone (gfan::ZCone* zc);
-polymake::perl::Object* ZPolytope2PmPolytope (gfan::ZCone* zc);
-polymake::perl::Object* ZFan2PmFan (gfan::ZFan* zf);
+gfan::ZCone* PmCone2ZCone (pm::perl::BigObject* pc);
+gfan::ZCone* PmPolytope2ZPolytope (pm::perl::BigObject* pp);
+gfan::ZFan* PmFan2ZFan (pm::perl::BigObject* pf);
+pm::perl::BigObject* ZCone2PmCone (gfan::ZCone* zc);
+pm::perl::BigObject* ZPolytope2PmPolytope (gfan::ZCone* zc);
+pm::perl::BigObject* ZFan2PmFan (gfan::ZFan* zf);
 
 #endif
 #endif
--- singular-4.1.1/Singular/dyn_modules/polymake/polymake_wrapper.cc.orig	2018-07-31 07:05:52.000000000 -0600
+++ singular-4.1.1/Singular/dyn_modules/polymake/polymake_wrapper.cc	2020-02-20 20:51:24.687597434 -0700
@@ -31,10 +31,10 @@ static BOOLEAN bbpolytope_Op2(int op, le
         gfan::ZCone* ms;
         try
         {
-          polymake::perl::Object* pp = ZPolytope2PmPolytope(zp);
-          polymake::perl::Object* pq = ZPolytope2PmPolytope(zq);
-          polymake::perl::Object pms;
-          CallPolymakeFunction("minkowski_sum", *pp, *pq) >> pms;
+          pm::perl::BigObject* pp = ZPolytope2PmPolytope(zp);
+          pm::perl::BigObject* pq = ZPolytope2PmPolytope(zq);
+          pm::perl::BigObject pms;
+          polymake::call_function("minkowski_sum", *pp, *pq) >> pms;
           ms = PmPolytope2ZPolytope(&pms);
           delete pp;
           delete pq;
@@ -220,7 +220,7 @@ BOOLEAN PMisLatticePolytope(leftv res, l
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("Lattice");
       delete p;
     }
@@ -250,7 +250,7 @@ BOOLEAN PMisBounded(leftv res, leftv arg
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("BOUNDED");
       delete p;
     }
@@ -280,7 +280,7 @@ BOOLEAN PMisReflexive(leftv res, leftv a
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("REFLEXIVE");
       delete p;
     }
@@ -310,7 +310,7 @@ BOOLEAN PMisGorenstein(leftv res, leftv
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("GORENSTEIN");
       delete p;
     }
@@ -341,7 +341,7 @@ BOOLEAN PMgorensteinIndex(leftv res, lef
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       bool b = p->give("GORENSTEIN");
       if (b)
       {
@@ -389,7 +389,7 @@ BOOLEAN PMgorensteinVector(leftv res, le
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       bool b = p->give("GORENSTEIN");
       if (b)
       {
@@ -436,7 +436,7 @@ BOOLEAN PMisCanonical(leftv res, leftv a
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("CANONICAL");
       delete p;
     }
@@ -466,7 +466,7 @@ BOOLEAN PMisTerminal(leftv res, leftv ar
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("TERMINAL");
       delete p;
     }
@@ -496,7 +496,7 @@ BOOLEAN PMisLatticeEmpty(leftv res, left
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("LATTICE_EMPTY");
       delete p;
     }
@@ -527,7 +527,7 @@ BOOLEAN PMlatticeVolume(leftv res, leftv
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Integer plv = p->give("LATTICE_VOLUME");
       delete p;
       lv = PmInteger2Int(plv,ok);
@@ -564,7 +564,7 @@ BOOLEAN PMlatticeDegree(leftv res, leftv
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Integer pld = p->give("LATTICE_DEGREE");
       delete p;
       ld = PmInteger2Int(pld,ok);
@@ -601,7 +601,7 @@ BOOLEAN PMlatticeCodegree(leftv res, lef
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Integer plc = p->give("LATTICE_CODEGREE");
       delete p;
       lc = PmInteger2Int(plc,ok);
@@ -638,7 +638,7 @@ BOOLEAN PMehrhartPolynomialCoeff(leftv r
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Vector<polymake::Integer> pec = p->give("EHRHART_POLYNOMIAL_COEFF");
       delete p;
       ec = PmVectorInteger2Intvec(&pec,ok);
@@ -675,7 +675,7 @@ BOOLEAN PMfVector(leftv res, leftv args)
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Vector<polymake::Integer> phv = p->give("F_VECTOR");
       delete p;
       hv = PmVectorInteger2Intvec(&phv,ok);
@@ -712,7 +712,7 @@ BOOLEAN PMhVector(leftv res, leftv args)
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Vector<polymake::Integer> phv = p->give("H_VECTOR");
       delete p;
       hv = PmVectorInteger2Intvec(&phv,ok);
@@ -749,7 +749,7 @@ BOOLEAN PMhStarVector(leftv res, leftv a
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Vector<polymake::Integer> phv = p->give("H_STAR_VECTOR");
       delete p;
       hv = PmVectorInteger2Intvec(&phv,ok);
@@ -785,7 +785,7 @@ BOOLEAN PMisNormal(leftv res, leftv args
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("NORMAL");
       delete p;
     }
@@ -816,7 +816,7 @@ BOOLEAN PMfacetWidths(leftv res, leftv a
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Vector<polymake::Integer> pfw = p->give("FACET_WIDTHS");
       delete p;
       fw = PmVectorInteger2Intvec(&pfw,ok);
@@ -853,7 +853,7 @@ BOOLEAN PMfacetWidth(leftv res, leftv ar
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Integer pfw = p->give("FACET_WIDTH");
       delete p;
       fw = PmInteger2Int(pfw,ok);
@@ -890,7 +890,7 @@ BOOLEAN PMfacetVertexLatticeDistances(le
     bool ok=true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Matrix<polymake::Integer> pld = p->give("FACET_VERTEX_LATTICE_DISTANCES");
       delete p;
       ld = PmMatrixInteger2Intvec(&pld,ok);
@@ -926,7 +926,7 @@ BOOLEAN PMisCompressed(leftv res, leftv
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("COMPRESSED");
       delete p;
     }
@@ -956,7 +956,7 @@ BOOLEAN PMisSmooth(leftv res, leftv args
     bool b;
     try
     {
-      polymake::perl::Object* p = ZCone2PmCone(zc);
+      pm::perl::BigObject* p = ZCone2PmCone(zc);
       b = p->give("SMOOTH_CONE");
       delete p;
     }
@@ -978,7 +978,7 @@ BOOLEAN PMisSmooth(leftv res, leftv args
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("SMOOTH");
       delete p;
     }
@@ -1000,7 +1000,7 @@ BOOLEAN PMisSmooth(leftv res, leftv args
     bool b;
     try
     {
-      polymake::perl::Object* p = ZFan2PmFan(zf);
+      pm::perl::BigObject* p = ZFan2PmFan(zf);
       b = p->give("SMOOTH_FAN");
       delete p;
     }
@@ -1030,7 +1030,7 @@ BOOLEAN PMisVeryAmple(leftv res, leftv a
     bool b;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       b = p->give("VERY_AMPLE");
       delete p;
     }
@@ -1061,10 +1061,10 @@ BOOLEAN PMlatticePoints(leftv res, leftv
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
-      #if (POLYMAKEVERSION >=214)
-      polymake::Matrix<polymake::Integer> lp = p->CallPolymakeMethod("LATTICE_POINTS");
-      #elif (POLYMAKEVERSION >=212)
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
+      #if (POLYMAKEVERSION >=4)
+      polymake::Matrix<polymake::Integer> lp = p->call_method("LATTICE_POINTS");
+      #elif (POLYMAKEVERSION >=3)
       polymake::Matrix<polymake::Integer> lp = p->give("LATTICE_POINTS");
       #else
         #error polymake version too old
@@ -1104,7 +1104,7 @@ BOOLEAN PMnLatticePoints(leftv res, left
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Integer nlp = p->give("N_LATTICE_POINTS");
       delete p;
       n = PmInteger2Int(nlp,ok);
@@ -1141,7 +1141,7 @@ BOOLEAN PMinteriorLatticePoints(leftv re
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Matrix<polymake::Integer> lp = p->give("INTERIOR_LATTICE_POINTS");
       delete p;
       iv = PmMatrixInteger2Intvec(&lp,ok);
@@ -1178,7 +1178,7 @@ BOOLEAN PMnInteriorLatticePoints(leftv r
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Integer nlp = p->give("N_INTERIOR_LATTICE_POINTS");
       delete p;
       n = PmInteger2Int(nlp,ok);
@@ -1215,7 +1215,7 @@ BOOLEAN PMboundaryLatticePoints(leftv re
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Matrix<polymake::Integer> lp = p->give("BOUNDARY_LATTICE_POINTS");
       delete p;
       iv = PmMatrixInteger2Intvec(&lp,ok);
@@ -1252,7 +1252,7 @@ BOOLEAN PMnBoundaryLatticePoints(leftv r
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Integer nlp = p->give("N_BOUNDARY_LATTICE_POINTS");
       delete p;
       n = PmInteger2Int(nlp,ok);
@@ -1289,10 +1289,10 @@ BOOLEAN PMhilbertBasis(leftv res, leftv
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
-      #if (POLYMAKEVERSION >=214)
-      polymake::Matrix<polymake::Integer> lp = p->CallPolymakeMethod("HILBERT_BASIS");
-      #elif (POLYMAKEVERSION >=212)
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
+      #if (POLYMAKEVERSION >=4)
+      polymake::Matrix<polymake::Integer> lp = p->call_method("HILBERT_BASIS");
+      #elif (POLYMAKEVERSION >=3)
       polymake::Matrix<polymake::Integer> lp = p->give("HILBERT_BASIS");
       #else
         #error polymake version too old
@@ -1332,7 +1332,7 @@ BOOLEAN PMnHilbertBasis(leftv res, leftv
     bool ok = true;
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Integer nlp = p->give("N_HILBERT_BASIS");
       delete p;
       n = PmInteger2Int(nlp,ok);
@@ -1372,10 +1372,10 @@ BOOLEAN PMminkowskiSum(leftv res, leftv
       gfan::ZCone* ms;
       try
       {
-        polymake::perl::Object* pp = ZPolytope2PmPolytope(zp);
-        polymake::perl::Object* pq = ZPolytope2PmPolytope(zq);
-        polymake::perl::Object pms;
-        CallPolymakeFunction("minkowski_sum", *pp, *pq) >> pms;
+        pm::perl::BigObject* pp = ZPolytope2PmPolytope(zp);
+        pm::perl::BigObject* pq = ZPolytope2PmPolytope(zq);
+        pm::perl::BigObject pms;
+        polymake::call_function("minkowski_sum", *pp, *pq) >> pms;
         delete pp;
         delete pq;
         ms = PmPolytope2ZPolytope(&pms);
@@ -1400,10 +1400,10 @@ BOOLEAN PMminkowskiSum(leftv res, leftv
       gfan::ZCone* ms;
       try
       {
-        polymake::perl::Object* pp = ZPolytope2PmPolytope(zp);
-        polymake::perl::Object* pq = ZPolytope2PmPolytope(zq);
-        polymake::perl::Object pms;
-        CallPolymakeFunction("minkowski_sum", *pp, *pq) >> pms;
+        pm::perl::BigObject* pp = ZPolytope2PmPolytope(zp);
+        pm::perl::BigObject* pq = ZPolytope2PmPolytope(zq);
+        pm::perl::BigObject pms;
+        polymake::call_function("minkowski_sum", *pp, *pq) >> pms;
         delete pp;
         delete pq;
         ms = PmPolytope2ZPolytope(&pms);
@@ -1434,10 +1434,10 @@ BOOLEAN PMminkowskiSum(leftv res, leftv
       gfan::ZCone* ms;
       try
       {
-        polymake::perl::Object* pp = ZPolytope2PmPolytope(zp);
-        polymake::perl::Object* pq = ZPolytope2PmPolytope(zq);
-        polymake::perl::Object pms;
-        CallPolymakeFunction("minkowski_sum", *pp, *pq) >> pms;
+        pm::perl::BigObject* pp = ZPolytope2PmPolytope(zp);
+        pm::perl::BigObject* pq = ZPolytope2PmPolytope(zq);
+        pm::perl::BigObject pms;
+        polymake::call_function("minkowski_sum", *pp, *pq) >> pms;
         delete pp;
         delete pq;
         ms = PmPolytope2ZPolytope(&pms);
@@ -1463,10 +1463,10 @@ BOOLEAN PMminkowskiSum(leftv res, leftv
       gfan::ZCone* ms;
       try
       {
-        polymake::perl::Object* pp = ZPolytope2PmPolytope(zp);
-        polymake::perl::Object* pq = ZPolytope2PmPolytope(zq);
-        polymake::perl::Object pms;
-        CallPolymakeFunction("minkowski_sum", *pp, *pq) >> pms;
+        pm::perl::BigObject* pp = ZPolytope2PmPolytope(zp);
+        pm::perl::BigObject* pq = ZPolytope2PmPolytope(zq);
+        pm::perl::BigObject pms;
+        polymake::call_function("minkowski_sum", *pp, *pq) >> pms;
         delete pp;
         delete pq;
         ms = PmPolytope2ZPolytope(&pms);
@@ -1488,13 +1488,13 @@ BOOLEAN PMminkowskiSum(leftv res, leftv
 }
 
 
-polymake::Matrix<polymake::Integer> verticesOf(const polymake::perl::Object* p,
+polymake::Matrix<polymake::Integer> verticesOf(const pm::perl::BigObject* p,
                                                const polymake::Set<polymake::Integer>* s)
 {
   polymake::Matrix<polymake::Integer> allrays = p->give("VERTICES");
   polymake::Matrix<polymake::Integer> wantedrays;
   bool ok = true;
-  for(polymake::Entire<polymake::Set<polymake::Integer> >::const_iterator i=polymake::entire(*s); !i.at_end(); i++)
+  for(auto i=polymake::entire(*s); !i.at_end(); i++)
   {
     wantedrays = wantedrays / allrays.row(PmInteger2Int(*i,ok));
   }
@@ -1521,8 +1521,8 @@ BOOLEAN PMmaximalFace(leftv res, leftv a
       bool ok = true;
       try
       {
-        polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
-        polymake::perl::Object o("LinearProgram<Rational>");
+        pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
+        pm::perl::BigObject o("LinearProgram<Rational>");
         o.take("LINEAR_OBJECTIVE") << Intvec2PmVectorInteger(iv);
         p->take("LP") << o;
         polymake::Set<polymake::Integer> mf = p->give("LP.MAXIMAL_FACE");
@@ -1567,8 +1567,8 @@ BOOLEAN PMminimalFace(leftv res, leftv a
       bool ok = true;
       try
       {
-        polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
-        polymake::perl::Object o("LinearProgram<Rational>");
+        pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
+        pm::perl::BigObject o("LinearProgram<Rational>");
         o.take("LINEAR_OBJECTIVE") << Intvec2PmVectorInteger(iv);
         p->take("LP") << o;
         polymake::Set<polymake::Integer> mf = p->give("LP.MINIMAL_FACE");
@@ -1615,9 +1615,9 @@ BOOLEAN PMmaximalValue(leftv res, leftv
         bool ok = true;
         try
         {
-          polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+          pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
           polymake::Vector<polymake::Integer> lo = Intvec2PmVectorInteger(iv);
-          polymake::perl::Object o("LinearProgram<Rational>");
+          pm::perl::BigObject o("LinearProgram<Rational>");
           o.take("LINEAR_OBJECTIVE") << lo;
           p->take("LP") << o;
           polymake::Integer mv = p->give("LP.MAXIMAL_VALUE");
@@ -1665,9 +1665,9 @@ BOOLEAN PMminimalValue(leftv res, leftv
         bool ok = true;
         try
         {
-          polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+          pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
           polymake::Vector<polymake::Integer> lo = Intvec2PmVectorInteger(iv);
-          polymake::perl::Object o("LinearProgram<Rational>");
+          pm::perl::BigObject o("LinearProgram<Rational>");
           o.take("LINEAR_OBJECTIVE") << lo;
           p->take("LP") << o;
           polymake::Integer mv = p->give("LP.MINIMAL_VALUE");
@@ -1708,8 +1708,8 @@ BOOLEAN visual(leftv res, leftv args)
     gfan::ZCone* zp = (gfan::ZCone*)u->Data();
     try
     {
-      polymake::perl::Object* pp = ZPolytope2PmPolytope(zp);
-      VoidCallPolymakeFunction("jreality",pp->CallPolymakeMethod("VISUAL"));
+      pm::perl::BigObject* pp = ZPolytope2PmPolytope(zp);
+      polymake::call_function("jreality",pp->call_method("VISUAL"));
       delete pp;
     }
     catch (const std::exception& ex)
@@ -1729,8 +1729,8 @@ BOOLEAN visual(leftv res, leftv args)
     gfan::ZFan* zf = (gfan::ZFan*)u->Data();
     try
     {
-      polymake::perl::Object* pf=ZFan2PmFan(zf);
-      VoidCallPolymakeFunction("jreality",pf->CallPolymakeMethod("VISUAL"));
+      pm::perl::BigObject* pf=ZFan2PmFan(zf);
+      polymake::call_function("jreality",pf->call_method("VISUAL"));
     }
     catch (const std::exception& ex)
     {
@@ -1757,9 +1757,9 @@ BOOLEAN normalFan(leftv res, leftv args)
     gfan::ZFan* zf = new gfan::ZFan(0);
     try
     {
-      polymake::perl::Object* p=ZPolytope2PmPolytope(zp);
-      polymake::perl::Object pf;
-      CallPolymakeFunction("normal_fan", *p) >> pf;
+      pm::perl::BigObject* p=ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject pf;
+      polymake::call_function("normal_fan", *p) >> pf;
       delete p;
       zf = PmFan2ZFan(&pf);
     }
@@ -1784,7 +1784,7 @@ BOOLEAN PMconeViaRays(leftv res, leftv a
   if ((u != NULL) && (u->Typ() == INTMAT_CMD))
   {
     gfan::initializeCddlibIfRequired();
-    polymake::perl::Object pc("Cone<Rational>");
+    pm::perl::BigObject pc("Cone<Rational>");
     intvec* hlines = (intvec*) u->Data(); // these will are half lines in the cone
     polymake::Matrix<polymake::Integer> pmhlines = Intvec2PmMatrixInteger(hlines);
     pc.take("INPUT_RAYS") << pmhlines;
@@ -1820,7 +1820,7 @@ BOOLEAN PMpolytopeViaVertices(leftv res,
   if ((u != NULL) && (u->Typ() == INTMAT_CMD))
   {
     gfan::initializeCddlibIfRequired();
-    polymake::perl::Object pp("Polytope<Rational>");
+    pm::perl::BigObject pp("Polytope<Rational>");
     intvec* points = (intvec*) u->Data(); // these will be vertices of or points in the polytope
     polymake::Matrix<polymake::Integer> pmpoints = Intvec2PmMatrixInteger(points);
 
@@ -1859,7 +1859,7 @@ BOOLEAN PMvertexAdjacencyGraph(leftv res
     lists output=(lists)omAllocBin(slists_bin); output->Init(2);
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Matrix<polymake::Integer> vert0 = p->give("VERTICES");
       bigintmat* vert1 = PmMatrixInteger2Bigintmat(&vert0);
       output->m[0].rtyp = BIGINTMAT_CMD;
@@ -1898,7 +1898,7 @@ BOOLEAN PMvertexEdgeGraph(leftv res, lef
     lists output=(lists)omAllocBin(slists_bin); output->Init(2);
     try
     {
-      polymake::perl::Object* p = ZPolytope2PmPolytope(zp);
+      pm::perl::BigObject* p = ZPolytope2PmPolytope(zp);
       polymake::Matrix<polymake::Integer> vert0 = p->give("VERTICES");
       bigintmat* vert1 = PmMatrixInteger2Bigintmat(&vert0);
       output->m[0].rtyp = BIGINTMAT_CMD;