Skip to content
Snippets Groups Projects
REveDataSimpleProxyBuilderTemplate.hxx 1.87 KiB
Newer Older
alja's avatar
alja committed
#ifndef ROOT7_REveDataProxySimpleBuilderTemplate
#define ROOT7_REveDataProxySimpleBuilderTemplate


#include <ROOT/REveDataSimpleProxyBuilder.hxx>


namespace ROOT {
namespace Experimental {

template <typename T>
class REveDataSimpleProxyBuilderTemplate : public REveDataSimpleProxyBuilder {

public:
   REveDataSimpleProxyBuilderTemplate() : REveDataSimpleProxyBuilder("GL")
   {
   }

protected:
   using REveDataSimpleProxyBuilder::Build;
   virtual void Build(const void *iData, unsigned int index, REveElement *itemHolder, const REveViewContext *context)
alja's avatar
alja committed
   {
      if(iData) {
         Build(*reinterpret_cast<const T*> (iData), index, itemHolder, context);
alja's avatar
alja committed
      }
   }
alja's avatar
alja committed
   using REveDataSimpleProxyBuilder::BuildViewType;
   virtual void BuildViewType(const void *iData, unsigned int index, REveElement *itemHolder, std::string viewType, const REveViewContext *context)
alja's avatar
alja committed
   {
      if(iData) {
         BuildViewType(*reinterpret_cast<const T*> (iData), index, itemHolder, viewType, context);
alja's avatar
alja committed
      }
   }
   virtual void Build(const T &/*iData*/, unsigned int index, REveElement */*itemHolder*/, const REveViewContext */*context*/)
alja's avatar
alja committed
   {
      throw std::runtime_error("virtual Build(const T&, unsigned int, REveElement&, const REveViewContext*) not implemented by inherited class.");
alja's avatar
alja committed
   }
   virtual void BuildViewType(const T &/*iData*/, unsigned int index, REveElement */*itemHolder*/, std::string /*viewType*/, const REveViewContext */*context*/)
alja's avatar
alja committed
   {
      throw std::runtime_error("virtual BuildViewType(const T&, unsigned int, REveElement&, const REveViewContext*) not implemented by inherited class.");
alja's avatar
alja committed
   }

private:
   REveDataSimpleProxyBuilderTemplate(const REveDataSimpleProxyBuilderTemplate&); // stop default

   const REveDataSimpleProxyBuilderTemplate& operator=(const REveDataSimpleProxyBuilderTemplate&); // stop default
};


} // namespace Experimental
} // namespace ROOT
#endif