OPAL (Object Oriented Parallel Accelerator Library) 2024.2
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
41namespace PyOpal {
42namespace Globals {
47void Initialise();
48}
49}
50
51#endif
Inform * gmsgALL
Definition Main.cpp:71
Inform * gmsg
Definition Main.cpp:70
Ippl * ippl
Definition Main.cpp:69
IpplInfo Ippl
Definition IpplInfo.h:353
void Initialise()
Definition Globals.cpp:50