#ifdef __cplusplus
extern "C" {
#endif

#pragma once


#include "HROOT-grafType.h"

#include "HROOTGrafTPad.h"

#include "HROOTCoreTVirtualPad.h"

#include "HROOTCoreTObject.h"

#include "HROOTCoreTAttLine.h"

#include "HROOTCoreTAttFill.h"

#include "HROOTCoreTAttPad.h"

#include "HROOTCoreTQObject.h"

#include "STDDeletable.h"


#define TCANVAS_DECL_VIRT(Type) \
void Type##_ToggleEditor ( Type##_p p );\
void Type##_ToggleEventStatus ( Type##_p p );\
void Type##_ToggleToolBar ( Type##_p p );\
void Type##_ToggleToolTips ( Type##_p p );


#define TCANVAS_DECL_NONVIRT(Type) \
Type##_p Type##_newTCanvas ( const char* name, const char* title, int ww, int wh );


#define TCANVAS_DECL_ACCESSOR(Type) \



#define TCANVAS_DEF_VIRT(Type) \
void Type##_ToggleEditor ( Type##_p p ) {\
((TYPECASTMETHOD(Type, ToggleEditor, TCanvas))(p))->ToggleEditor();\
}\
\
void Type##_ToggleEventStatus ( Type##_p p ) {\
((TYPECASTMETHOD(Type, ToggleEventStatus, TCanvas))(p))->ToggleEventStatus();\
}\
\
void Type##_ToggleToolBar ( Type##_p p ) {\
((TYPECASTMETHOD(Type, ToggleToolBar, TCanvas))(p))->ToggleToolBar();\
}\
\
void Type##_ToggleToolTips ( Type##_p p ) {\
((TYPECASTMETHOD(Type, ToggleToolTips, TCanvas))(p))->ToggleToolTips();\
}


#define TCANVAS_DEF_NONVIRT(Type) \
Type##_p Type##_newTCanvas ( const char* name, const char* title, int ww, int wh ) {\
Type* newp=new Type(name, title, ww, wh);return from_nonconst_to_nonconst<Type##_t, Type>(newp);\
}


#define TCANVAS_DEF_ACCESSOR(Type) \



TPAD_DECL_VIRT(TCanvas)
TVIRTUALPAD_DECL_VIRT(TCanvas)
TOBJECT_DECL_VIRT(TCanvas)
TATTLINE_DECL_VIRT(TCanvas)
TATTFILL_DECL_VIRT(TCanvas)
TATTPAD_DECL_VIRT(TCanvas)
TQOBJECT_DECL_VIRT(TCanvas)
DELETABLE_DECL_VIRT(TCanvas)
TCANVAS_DECL_VIRT(TCanvas)
TCANVAS_DECL_NONVIRT(TCanvas)
TCANVAS_DECL_ACCESSOR(TCanvas)

#ifdef __cplusplus
}
#endif