AbstractPanelPlotNode.hh
1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
* AbstractPanelPlotNode.hh
*
* Created on: Dec 6, 2013
* Author: amdadev
*/
#ifndef ABSTRACTPANELPLOTNODE_HH_
#define ABSTRACTPANELPLOTNODE_HH_
#include <boost/smart_ptr/shared_ptr.hpp>
#include <libxml/tree.h>
#include "NodeCfg.hh"
#include "PanelPlotOutput.hh"
#include "PlotOutput.hh"
namespace plot {
/**
* Base class for creating a PanelPlotOutput object and add it to its PlotOutput parent.
* Subclasses must register themselves into PanelPlotNodeRegistry.
* (@see plot::TimePlotNode for an example of subclass implementation).
* Using a registry allows to add new plugins (using AMDA plugins mechanism) to handle new kind of
* plot.
*/
class AbstractPanelPlotNode: public AMDA::XMLConfigurator::NodeGrpCfg {
public:
AbstractPanelPlotNode();
virtual ~AbstractPanelPlotNode();
/**
* @overload AMDA::XMLConfigurator::NodeCfg method.
* Subclasses should not overload that method (that's why we mark it as final),
* specific behaviour must be handled in the protected
* boost::shared_ptr<PanelPlotOutput> proceed(xmlNodePtr, PlotOutput*, Panel*) method instead.
*/
void proceed(xmlNodePtr pNode, const AMDA::Parameters::CfgContext& pCtx) final;
protected:
virtual boost::shared_ptr<PanelPlotOutput> proceed(xmlNodePtr, PlotOutput*, Panel*)=0;
};
} /* namespace plot */
#endif /* ABSTRACTPANELPLOTNODE_HH_ */