blob: 3955cdfda93442fd124a6b127651fe5619299224 [file] [log] [blame]
/* 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