power: Add a clock_period variable to power expressions
[gem5.git] / src / sim / init.hh
index 2bbcd23da050740c4f757146381dfeae6944f840..de6b44de4f4debd24ab13ed166559624c42e9f34 100644 (file)
@@ -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.
  *
 #ifndef __SIM_INIT_HH__
 #define __SIM_INIT_HH__
 
-#include <Python.h>
+#include "pybind11/pybind11.h"
 
 #include <list>
+#include <map>
 #include <string>
 
 #include <inttypes.h>
@@ -67,16 +80,29 @@ struct EmbeddedPython
     static int initAll();
 };
 
-struct EmbeddedSwig
+class EmbeddedPyBind
 {
-    void (*initFunc)();
+  public:
+    EmbeddedPyBind(const char *_name,
+                   void (*init_func)(pybind11::module &),
+                   const char *_base);
 
-    std::string context;
+    EmbeddedPyBind(const char *_name,
+                   void (*init_func)(pybind11::module &));
 
-    EmbeddedSwig(void (*init_func)(), const std::string& _context);
-
-    static std::list<EmbeddedSwig *> &getList();
     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();