pyobject_setup.cc
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
3 /** @file pyobject_setup.cc
4  *
5  * @author Alexander Dreyer
6  * @date 2010-12-15
7  *
8  * This header file defines the @c blackbox setup operations for the pyobject
9  *
10  * @par Copyright:
11  * (c) 2010 by The Singular Team, see LICENSE file
12 **/
13 //*****************************************************************************
14 
15 #include "kernel/mod2.h"
16 
17 #include "Singular/blackbox.h"
18 #include "Singular/ipshell.h"
19 
21 {
22  return jjLOAD("pyobject.so", TRUE);
23 }
24 
25 /// blackbox support - initialization via autoloading
26 void* pyobject_autoload(blackbox* bbx)
27 {
28  assume(bbx != NULL);
29  return (pyobject_load() || (bbx->blackbox_Init == pyobject_autoload)?
30  NULL: bbx->blackbox_Init(bbx));
31 }
32 
33 void pyobject_default_destroy(blackbox */*b*/, void */*d*/)
34 {
35  WerrorS("Python-based functionality not available!");
36 }
37 
38 // Setting up an empty blackbox type, which can be filled with pyobject
40 {
41  blackbox *bbx = (blackbox*)omAlloc0(sizeof(blackbox));
42  bbx->blackbox_Init = pyobject_autoload;
43  bbx->blackbox_destroy = pyobject_default_destroy;
44  setBlackboxStuff(bbx, "pyobject");
45 }
46 
47 /// Explicitely load, if not loaded already
49 {
50 
51  int tok = -1;
52  blackbox* bbx = (blackboxIsCmd("pyobject", tok) == ROOT_DECL?
53  getBlackboxStuff(tok): (blackbox*)NULL);
54  if (bbx == NULL) return TRUE;
55  return (bbx->blackbox_Init == pyobject_autoload? pyobject_load(): FALSE);
56 }
void pyobject_default_destroy(blackbox *, void *)
void pyobject_setup()
initialize blackbox support for pyobject; functionilty os autoloaded on demand
#define FALSE
Definition: auxiliary.h:94
#define TRUE
Definition: auxiliary.h:98
void WerrorS(const char *s)
Definition: feFopen.cc:24
BOOLEAN jjLOAD(const char *s, BOOLEAN autoexport)
load lib/module given in v
Definition: iparith.cc:5096
#define assume(x)
Definition: mod2.h:390
static BOOLEAN pyobject_load()
#define NULL
Definition: omList.c:10
int blackboxIsCmd(const char *n, int &tok)
used by scanner: returns ROOT_DECL for known types (and the type number in tok)
Definition: blackbox.cc:192
void * pyobject_autoload(blackbox *bbx)
blackbox support - initialization via autoloading
BOOLEAN pyobject_ensure()
Explicitely load, if not loaded already.
int setBlackboxStuff(blackbox *bb, const char *n)
define a new type
Definition: blackbox.cc:126
int BOOLEAN
Definition: auxiliary.h:85
#define omAlloc0(size)
Definition: omAllocDecl.h:211
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
Definition: blackbox.cc:16