diff options
Diffstat (limited to 'src/sim/init.hh')
-rw-r--r-- | src/sim/init.hh | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/src/sim/init.hh b/src/sim/init.hh index 2bbcd23da..ecc4bc347 100644 --- a/src/sim/init.hh +++ b/src/sim/init.hh @@ -1,4 +1,16 @@ /* + * Copyright (c) 2017 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * * Copyright (c) 2008 The Hewlett-Packard Development Company * All rights reserved. * @@ -31,9 +43,10 @@ #ifndef __SIM_INIT_HH__ #define __SIM_INIT_HH__ -#include <Python.h> +#include "pybind11/pybind11.h" #include <list> +#include <map> #include <string> #include <inttypes.h> @@ -79,6 +92,31 @@ struct EmbeddedSwig static void initAll(); }; +class EmbeddedPyBind +{ + public: + EmbeddedPyBind(const char *_name, + void (*init_func)(pybind11::module &), + const char *_base); + + EmbeddedPyBind(const char *_name, + void (*init_func)(pybind11::module &)); + + static void initAll(); + + private: + void (*initFunc)(pybind11::module &); + + bool depsReady() const; + void init(pybind11::module &m); + + bool registered; + const std::string name; + const std::string base; + + static std::map<std::string, EmbeddedPyBind *> &getMap(); +}; + int initM5Python(); int m5Main(int argc, char **argv); PyMODINIT_FUNC initm5(void); |