Changeset 35a0c12 in git for Singular/pyobject.cc


Ignore:
Timestamp:
Dec 6, 2012, 2:46:43 PM (11 years ago)
Author:
Alexander Dreyer <adreyer@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
51f56350e07c1644b3a676e1ad934986088a0bd0
Parents:
8a8315c064275dd1bdd822cbc4e00072d5a3761e
git-author:
Alexander Dreyer <adreyer@gmx.de>2012-12-06 14:46:43+01:00
git-committer:
Alexander Dreyer <adreyer@gmx.de>2012-12-06 15:20:24+01:00
Message:
pyobject.so now autoloaded when needed
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/pyobject.cc

    r8a8315c r35a0c12  
    6464  /// Initialize unique (singleton) python interpreter instance,
    6565  /// and set Singular type identifier
    66   static void init(id_type num ) { instance().m_id = num; }
     66  static void init(id_type num) { instance().m_id = num; }
    6767
    6868  /// Get Singular type identitfier
     
    702702
    703703
    704 // forward declaration
    705 //int iiAddCproc(char *libname, char *procname, BOOLEAN pstatic,
    706 //               BOOLEAN(*func)(leftv res, leftv v));
    707 
    708 #define ADD_C_PROC(name) iiAddCproc("", (char*)#name, FALSE, name);
     704
     705blackbox* pyobject_blackbox(int& tok) {
     706  if(blackboxIsCmd("pyobject", tok) != ROOT_DECL)
     707  {
     708    tok = setBlackboxStuff((blackbox*)omAlloc0(sizeof(blackbox)),
     709                           "pyobject");
     710  }
     711  return getBlackboxStuff(tok);
     712}
     713
    709714
    710715
    711716void pyobject_init()
    712717{
    713   blackbox *b = (blackbox*)omAlloc0(sizeof(blackbox));
    714   b->blackbox_destroy = pyobject_destroy;
    715   b->blackbox_String  = pyobject_String;
    716   b->blackbox_Init    = pyobject_Init;
    717   b->blackbox_Copy    = pyobject_Copy;
    718   b->blackbox_Assign  = pyobject_Assign;
    719   b->blackbox_Op1     = pyobject_Op1;
    720   b->blackbox_Op2     = pyobject_Op2;
    721   b->blackbox_Op3     = pyobject_Op3;
    722   b->blackbox_OpM     = pyobject_OpM;
    723   b->data             = omAlloc0(newstruct_desc_size());
    724 
    725   PythonInterpreter::init(setBlackboxStuff(b,"pyobject"));
    726 
    727   ADD_C_PROC(python_import);
    728   ADD_C_PROC(python_eval);
    729   ADD_C_PROC(python_run);
    730 }
    731 
    732 extern "C" { void mod_init() { pyobject_init(); } }
    733 
     718  int tok = -1;
     719  blackbox* bbx = pyobject_blackbox(tok);
     720  if (bbx->blackbox_Init != pyobject_Init)
     721  {
     722    bbx->blackbox_destroy = pyobject_destroy;
     723    bbx->blackbox_String  = pyobject_String;
     724    bbx->blackbox_Init    = pyobject_Init;
     725    bbx->blackbox_Copy    = pyobject_Copy;
     726    bbx->blackbox_Assign  = pyobject_Assign;
     727    bbx->blackbox_Op1     = pyobject_Op1;
     728    bbx->blackbox_Op2     = pyobject_Op2;
     729    bbx->blackbox_Op3     = pyobject_Op3;
     730    bbx->blackbox_OpM     = pyobject_OpM;
     731    bbx->data             = omAlloc0(newstruct_desc_size());
     732   
     733    PythonInterpreter::init(tok);
     734  }
     735}
     736
     737#define PYOBJECT_ADD_C_PROC(name) \
     738  psModulFunctions->iiAddCproc(currPack->libname, (char*)#name, FALSE, name);
     739
     740extern "C" {
     741  void mod_init(SModulFunctions* psModulFunctions)
     742  {
     743    pyobject_init();
     744
     745    PYOBJECT_ADD_C_PROC(python_import);
     746    PYOBJECT_ADD_C_PROC(python_eval);
     747    PYOBJECT_ADD_C_PROC(python_run);   
     748  }
     749}
     750#undef PYOBJECT_ADD_C_PROC
Note: See TracChangeset for help on using the changeset viewer.