new file mode 100644
@@ -0,0 +1,51 @@
+/* SPDX-License-Identifier: LGPL-2.1 */
+
+/*
+ * Copyright (C) 2018 VMware Inc, Yordan Karadzhov <y.karadz@gmail.com>
+ */
+
+/**
+ * @file KsPlugins.hpp
+ * @brief KernelShark C++ plugin declarations.
+ */
+
+#ifndef _KS_PLUGINS_H
+#define _KS_PLUGINS_H
+
+// KernelShark
+#include "libkshark-model.h"
+#include "KsPlotTools.hpp"
+
+/**
+ * Structure representing the vector of C++ arguments of the drawing function
+ * of a plugin.
+ */
+struct KsCppArgV {
+ /** Pointer to the model descriptor object. */
+ kshark_trace_histo *_histo;
+
+ /** Pointer to the graph object. */
+ KsPlot::Graph *_graph;
+
+ /**
+ * Pointer to the list of shapes. All shapes created by the plugin
+ * will be added to this list.
+ */
+ KsPlot::PlotObjList *_shapes;
+
+ /**
+ * Convert the "this" pointer of the C++ argument vector into a
+ * C pointer.
+ */
+ kshark_cpp_argv *toC()
+ {
+ return reinterpret_cast<kshark_cpp_argv *>(this);
+ }
+};
+
+/**
+ * Macro used to convert a C pointer into a pointer to KsCppArgV (C++ struct).
+ */
+#define KS_ARGV_TO_CPP(a) (reinterpret_cast<KsCppArgV *>(a))
+
+#endif
The draw function of a plugin has a type declared in C. However, the function needs to access some high level objects, defined in the C++ libraries. This patch adds instruments for converting the arguments of the plugin's draw function from C++ to C and from C to C++. Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com> --- kernel-shark-qt/src/KsPlugins.hpp | 51 +++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 kernel-shark-qt/src/KsPlugins.hpp