OPAL (Object Oriented Parallel Accelerator Library)  2024.1
OPAL
Globals.h
Go to the documentation of this file.
1 //
2 // Python API for PolynomialCoefficient (part of the multidimensional polynomial fitting routines)
3 //
4 // Copyright (c) 2008-2023, Chris Rogers, STFC Rutherford Appleton Laboratory, Didcot, UK
5 //
6 // This file is part of OPAL.
7 //
8 // OPAL is free software: you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation, either version 3 of the License, or
11 // (at your option) any later version.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with OPAL. If not, see <https://www.gnu.org/licenses/>.
15 //
16 
17 #ifndef PYOPAL_PYCORE_GLOBALS_H
18 #define PYOPAL_PYCORE_GLOBALS_H
19 #include "opal.h"
20 
21 // Ippl and gmsg should only be built once, in globals.cc.o
22 //
23 // We declare them as extern for all other code to be consistent with usage in
24 // C++ Opal; but we define them if we are including from Globals.cc so that the
25 // extern is satisfied.
26 //
27 // Maybe this implements one gmsg per python module - which is wrong? So maybe
28 // some more linker/cmake dark arts required here? Do they have much global
29 // state?
30 #ifndef PYOPAL_GLOBALS_C
31  extern Ippl *ippl;
32  extern Inform *gmsg;
33  extern Inform *gmsgALL;
34 #endif
35 
36 #ifdef PYOPAL_GLOBALS_C
37  Ippl *ippl = nullptr;
38  Inform *gmsg = nullptr;
39  Inform *gmsgALL = nullptr;
40 #endif
41 namespace PyOpal {
42 namespace Globals {
47 void Initialise();
48 }
49 }
50 
51 #endif
void Initialise()
Definition: Globals.cpp:50
Ippl * ippl
Definition: Main.cpp:69
Definition: Inform.h:42
Inform * gmsgALL
Definition: Main.cpp:71
Inform * gmsg
Definition: Main.cpp:70