Changeset b9502a in git


Ignore:
Timestamp:
Feb 28, 2017, 12:28:39 PM (7 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
ddf313aa15678b49ae4cbd1aa2881b4a49296061
Parents:
5c773a32c223f8f216df09eef7badedc4d0754a6
Message:
dyn_mod: python: setring
Location:
Singular
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • Singular/dyn_modules/python/ring_wrap.cc

    r5c773a rb9502a  
    22#include <boost/python.hpp>
    33#include <kernel/mod2.h>
     4#include <Singular/ipshell.h>
    45#include "ring_wrap.h"
    56#include "poly_wrap.h"
     
    1213  return boost::python::str(out,strlen(out));
    1314}
    14 void ring_set(Ring & r)
     15void ring_set(Ring & R)
    1516{
    16       //FIXME: only a hack, no solution
     17    ring r=R.pimpl.get();
     18    idhdl h=rFindHdl(r,NULL);
     19    if (h==NULL)
     20    {
    1721      char name_buffer[100];
    1822      static int ending=0;
    1923      ending++;
    2024      sprintf(name_buffer, "PYTHON_RING_VAR%d",ending);
    21       idhdl shadow_hdl=enterid(name_buffer,0,RING_CMD,&IDROOT);
    22       r.pimpl.get()->ref++;
    23       shadow_hdl->data.uring=r.pimpl.get();
    24       rChangeCurrRing(r.pimpl.get());
    25       currRingHdl=shadow_hdl;
    26 
     25      h=enterid(omStrDup(name_buffer),0,RING_CMD,&IDROOT);
     26      IDRING(h)=r;
     27      r->ref++;
     28    }
     29    rSetHdl(h);
     30    for(int i=myynest;i>=0;i--) iiLocalRing[i]=r;
    2731}
    2832void export_ring()
  • Singular/iparith.cc

    r5c773a rb9502a  
    35533553  (*bim)*=(-1);
    35543554  res->data = (char *)bim;
     3555  return FALSE;
     3556}
     3557// dummy for python_module.so and similiar
     3558static BOOLEAN jjSetRing(leftv res, leftv u)
     3559{
     3560  if (u->rtyp==IDHDL) rSetHdl((idhdl)u->data);
     3561  else
     3562  {
     3563    ring r=(ring)u->Data();
     3564    idhdl h=rFindHdl(r,NULL);
     3565    if (h==NULL)
     3566    {
     3567      char name_buffer[100];
     3568      static int ending=1000000;
     3569      ending++;
     3570      sprintf(name_buffer, "PYTHON_RING_VAR%d",ending);
     3571      h=enterid(omStrDup(name_buffer),0,RING_CMD,&IDROOT);
     3572      IDRING(h)=r;
     3573      r->ref++;
     3574    }
     3575    rSetHdl(h);
     3576  }
    35553577  return FALSE;
    35563578}
  • Singular/iplib.cc

    r5c773a rb9502a  
    434434        if (nh!=NULL)          n=nh->id;
    435435        else                   n="none";
    436         Werror("ring change during procedure call: %s -> %s (level %d)",o,n,myynest);
     436        Werror("ring change during procedure call %s: %s -> %s (level %d)",pi->procname,o,n,myynest);
    437437        iiRETURNEXPR.CleanUp();
    438438        err=TRUE;
  • Singular/table.h

    r5c773a rb9502a  
    241241,{D(jjSBA),        SBA_CMD,         IDEAL_CMD,      IDEAL_CMD     , ALLOW_PLURAL |ALLOW_RING}
    242242,{D(jjSBA),        SBA_CMD,         MODUL_CMD,      MODUL_CMD     , ALLOW_PLURAL |ALLOW_RING}
     243,{D(jjSetRing),    SETRING_CMD,     NONE,           RING_CMD      , ALLOW_PLURAL |ALLOW_RING}
    243244,{D(jjSLIM_GB),    SLIM_GB_CMD,     IDEAL_CMD,      IDEAL_CMD     , ALLOW_PLURAL }
    244245,{D(jjSLIM_GB),    SLIM_GB_CMD,     MODUL_CMD,      MODUL_CMD     , ALLOW_PLURAL }
Note: See TracChangeset for help on using the changeset viewer.