NEURON
hoccontext.h
Go to the documentation of this file.
1
#pragma once
2
3
extern
Object
*
hoc_thisobject
;
4
extern
Objectdata
*
hoc_top_level_data
;
5
extern
Symlist
*
hoc_top_level_symlist
;
6
extern
Symlist
*
hoc_symlist
;
7
8
struct
HocContext
{
9
Object
*
obj
;
10
Objectdata
*
obd
;
11
Symlist
*
sl
;
12
};
13
14
static
HocContext
*
hc_save_and_set_to_top_
(
HocContext
* hc) {
15
hc->
obj
=
hoc_thisobject
;
16
hc->
obd
=
hoc_objectdata
;
17
hc->
sl
=
hoc_symlist
;
18
hoc_thisobject
= 0;
19
hoc_objectdata
=
hoc_top_level_data
;
20
hoc_symlist
=
hoc_top_level_symlist
;
21
return
hc;
22
}
23
static
void
hc_restore_
(
HocContext
* hc) {
24
hoc_thisobject
= hc->
obj
;
25
hoc_objectdata
= hc->
obd
;
26
hoc_symlist
= hc->
sl
;
27
}
28
29
// RAII guard for the top HOC context
30
class
HocTopContextManager
{
31
private
:
32
HocContext
hcref
;
33
HocContext
*
hc_
=
nullptr
;
34
35
public
:
36
HocTopContextManager
() {
37
// ``hoc_thisobject`` is global
38
if
(
hoc_thisobject
) {
39
hc_
=
hc_save_and_set_to_top_
(&
hcref
);
40
}
41
}
42
~HocTopContextManager
() {
43
if
(
hc_
) {
44
hc_restore_
(
hc_
);
45
}
46
}
47
};
HocTopContextManager
Definition:
hoccontext.h:30
HocTopContextManager::hcref
HocContext hcref
Definition:
hoccontext.h:32
HocTopContextManager::hc_
HocContext * hc_
Definition:
hoccontext.h:33
HocTopContextManager::~HocTopContextManager
~HocTopContextManager()
Definition:
hoccontext.h:42
HocTopContextManager::HocTopContextManager
HocTopContextManager()
Definition:
hoccontext.h:36
hoc_objectdata
Objectdata * hoc_objectdata
Definition:
hoc_oop.cpp:122
hoc_top_level_symlist
Symlist * hoc_top_level_symlist
Definition:
symdir.cpp:16
hc_save_and_set_to_top_
static HocContext * hc_save_and_set_to_top_(HocContext *hc)
Definition:
hoccontext.h:14
hoc_symlist
Symlist * hoc_symlist
Definition:
symbol.cpp:34
hoc_top_level_data
Objectdata * hoc_top_level_data
Definition:
hoc_oop.cpp:123
hc_restore_
static void hc_restore_(HocContext *hc)
Definition:
hoccontext.h:23
hoc_thisobject
Object * hoc_thisobject
Definition:
hoc_oop.cpp:121
HocContext
Definition:
hoccontext.h:8
HocContext::obd
Objectdata * obd
Definition:
hoccontext.h:10
HocContext::sl
Symlist * sl
Definition:
hoccontext.h:11
HocContext::obj
Object * obj
Definition:
hoccontext.h:9
Object
Definition:
hocdec.h:173
Symlist
Definition:
hocdec.h:75
Objectdata
Definition:
hocdec.h:163
src
nrnpython
hoccontext.h