
#ifdef __cplusplus
extern "C" {
#endif

#pragma once


#include "OGDFType.h"

#include "STDDeletable.h"

#include "stdcxxType.h"


#define GRAPHATTRIBUTES_DECL_VIRT(Type) \
DRect_p Type##_boundingBox ( Type##_p p );


#define GRAPHATTRIBUTES_DECL_NONVIRT(Type) \
Type##_p Type##_newGraphAttributes ( Graph_p g, long initAttributes );\
Color_p Type##_graphAttributes_fillColor ( Type##_p p, NodeElement_p v );\
Color_p Type##_graphAttributes_fillBgColor ( Type##_p p, NodeElement_p v );\
double* Type##_graphAttributes_x ( Type##_p p, NodeElement_p v );\
double* Type##_graphAttributes_y ( Type##_p p, NodeElement_p v );\
double* Type##_graphAttributes_width ( Type##_p p, NodeElement_p v );\
double* Type##_graphAttributes_height ( Type##_p p, NodeElement_p v );\
void* Type##_graphAttributes_bends ( Type##_p p, EdgeElement_p e );\
string_p Type##_graphAttributes_label ( Type##_p p, NodeElement_p v );\
string_p Type##_graphAttributeslabelE ( Type##_p p, EdgeElement_p e );\
double* Type##_graphAttributes_xLabel ( Type##_p p, NodeElement_p v );\
double* Type##_graphAttributes_yLabel ( Type##_p p, NodeElement_p v );


#define GRAPHATTRIBUTES_DECL_ACCESSOR(Type) \



#define GRAPHATTRIBUTES_DEF_VIRT(Type) \
DRect_p Type##_boundingBox ( Type##_p p ) {\
return from_nonconst_to_nonconst<DRect_t, DRect>(new DRect(((TYPECASTMETHOD(Type, boundingBox, GraphAttributes))(p))->boundingBox()));\
}


#define GRAPHATTRIBUTES_DEF_NONVIRT(Type) \
Type##_p Type##_newGraphAttributes ( Graph_p g, long initAttributes ) {\
Type* newp=new Type(from_nonconstref_to_nonconstref<Graph, Graph_t>(*(g)), initAttributes);return from_nonconst_to_nonconst<Type##_t, Type>(newp);\
}\
\
Color_p Type##_graphAttributes_fillColor ( Type##_p p, NodeElement_p v ) {\
return from_nonconst_to_nonconst<Color_t, Color>(&(((TYPECASTMETHOD(Type, graphAttributes_fillColor, GraphAttributes))(p))->fillColor(from_nonconst_to_nonconst<NodeElement, NodeElement_t>(v))));\
}\
\
Color_p Type##_graphAttributes_fillBgColor ( Type##_p p, NodeElement_p v ) {\
return from_nonconst_to_nonconst<Color_t, Color>(&(((TYPECASTMETHOD(Type, graphAttributes_fillBgColor, GraphAttributes))(p))->fillBgColor(from_nonconst_to_nonconst<NodeElement, NodeElement_t>(v))));\
}\
\
double* Type##_graphAttributes_x ( Type##_p p, NodeElement_p v ) {\
return &(((TYPECASTMETHOD(Type, graphAttributes_x, GraphAttributes))(p))->x(from_nonconst_to_nonconst<NodeElement, NodeElement_t>(v)));\
}\
\
double* Type##_graphAttributes_y ( Type##_p p, NodeElement_p v ) {\
return &(((TYPECASTMETHOD(Type, graphAttributes_y, GraphAttributes))(p))->y(from_nonconst_to_nonconst<NodeElement, NodeElement_t>(v)));\
}\
\
double* Type##_graphAttributes_width ( Type##_p p, NodeElement_p v ) {\
return &(((TYPECASTMETHOD(Type, graphAttributes_width, GraphAttributes))(p))->width(from_nonconst_to_nonconst<NodeElement, NodeElement_t>(v)));\
}\
\
double* Type##_graphAttributes_height ( Type##_p p, NodeElement_p v ) {\
return &(((TYPECASTMETHOD(Type, graphAttributes_height, GraphAttributes))(p))->height(from_nonconst_to_nonconst<NodeElement, NodeElement_t>(v)));\
}\
\
void* Type##_graphAttributes_bends ( Type##_p p, EdgeElement_p e ) {\
List<DPoint>* r=new List<DPoint>(((TYPECASTMETHOD(Type, graphAttributes_bends, GraphAttributes))(p))->bends(from_nonconst_to_nonconst<EdgeElement, EdgeElement_t>(e)));return static_cast<void*>(r);\
}\
\
string_p Type##_graphAttributes_label ( Type##_p p, NodeElement_p v ) {\
return from_nonconst_to_nonconst<string_t, string>(&(((TYPECASTMETHOD(Type, graphAttributes_label, GraphAttributes))(p))->label(from_nonconst_to_nonconst<NodeElement, NodeElement_t>(v))));\
}\
\
string_p Type##_graphAttributeslabelE ( Type##_p p, EdgeElement_p e ) {\
return from_nonconst_to_nonconst<string_t, string>(&(((TYPECASTMETHOD(Type, graphAttributeslabelE, GraphAttributes))(p))->label(from_nonconst_to_nonconst<EdgeElement, EdgeElement_t>(e))));\
}\
\
double* Type##_graphAttributes_xLabel ( Type##_p p, NodeElement_p v ) {\
return &(((TYPECASTMETHOD(Type, graphAttributes_xLabel, GraphAttributes))(p))->xLabel(from_nonconst_to_nonconst<NodeElement, NodeElement_t>(v)));\
}\
\
double* Type##_graphAttributes_yLabel ( Type##_p p, NodeElement_p v ) {\
return &(((TYPECASTMETHOD(Type, graphAttributes_yLabel, GraphAttributes))(p))->yLabel(from_nonconst_to_nonconst<NodeElement, NodeElement_t>(v)));\
}


#define GRAPHATTRIBUTES_DEF_ACCESSOR(Type) \



DELETABLE_DECL_VIRT(GraphAttributes)
GRAPHATTRIBUTES_DECL_VIRT(GraphAttributes)
GRAPHATTRIBUTES_DECL_NONVIRT(GraphAttributes)
GRAPHATTRIBUTES_DECL_ACCESSOR(GraphAttributes)

#ifdef __cplusplus
}
#endif

