source: git/Singular/pyobject_setup.cc

spielwiese
Last change on this file was a4b31c, checked in by Hans Schoenemann <hannes@…>, 7 years ago
use include ".." for singular related .h, p4
  • Property mode set to 100644
File size: 1.5 KB
Line 
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
20static BOOLEAN pyobject_load()
21{
22  return jjLOAD("pyobject.so", TRUE);
23}
24
25/// blackbox support - initialization via autoloading
26void* 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
33void 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
39void pyobject_setup()
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
48BOOLEAN pyobject_ensure()
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}
Note: See TracBrowser for help on using the repository browser.