Mercurial > octave
annotate libinterp/corefcn/interpreter-private.cc @ 23511:232c8d69d934
manage interpreter instance in interpreter object
Currently it is only possible to have one application or interpreter
object. Enforce that restriction.
* octave.h, octave.cc (application::the_interpreter): Delete.
(application::application): Ensure only one application is created at
once.
* interpreter.cc, interpreter.h (interpreter::instance):
New static variable.
(interpreter::interpreter): Ensure only one is created at once.
(interpreter::~interpreter): Set instance to nullptr.
(interpreter::the_interpreter): New function.
* interpreter-private.cc, interpreter-private.cc
(__get_interpreter__): Delete. Replace all uses with
octave::interpreter::the_interpreter.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 18 May 2017 10:53:24 -0400 |
parents | d24d01273bd0 |
children | 1bc8f1f50b54 |
rev | line source |
---|---|
23438 | 1 /* |
2 | |
3 Copyright (C) 2017 John W. Eaton | |
4 | |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by | |
9 the Free Software Foundation; either version 3 of the License, or | |
10 (at your option) any later version. | |
11 | |
12 Octave is distributed in the hope that it will be useful, but | |
13 WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 GNU General Public License for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
18 along with Octave; see the file COPYING. If not, see | |
19 <http://www.gnu.org/licenses/>. | |
20 | |
21 */ | |
22 | |
23 #if defined (HAVE_CONFIG_H) | |
24 # include "config.h" | |
25 #endif | |
26 | |
27 #include <string> | |
28 | |
29 #include "error.h" | |
23511
232c8d69d934
manage interpreter instance in interpreter object
John W. Eaton <jwe@octave.org>
parents:
23438
diff
changeset
|
30 #include "load-path.h" |
23438 | 31 #include "interpreter-private.h" |
23511
232c8d69d934
manage interpreter instance in interpreter object
John W. Eaton <jwe@octave.org>
parents:
23438
diff
changeset
|
32 #include "interpreter.h" |
23438 | 33 |
34 namespace octave | |
35 { | |
23511
232c8d69d934
manage interpreter instance in interpreter object
John W. Eaton <jwe@octave.org>
parents:
23438
diff
changeset
|
36 load_path& __get_load_path__ (const std::string& who) |
23438 | 37 { |
23511
232c8d69d934
manage interpreter instance in interpreter object
John W. Eaton <jwe@octave.org>
parents:
23438
diff
changeset
|
38 interpreter *interp = interpreter::the_interpreter (); |
23438 | 39 |
40 if (! interp) | |
41 error ("%s: interpreter context missing", who.c_str ()); | |
42 | |
23511
232c8d69d934
manage interpreter instance in interpreter object
John W. Eaton <jwe@octave.org>
parents:
23438
diff
changeset
|
43 return interp->get_load_path (); |
23438 | 44 } |
45 } |