
#ifdef __cplusplus
extern "C" {
#endif

#pragma once


#include "OGDFType.h"

#include "STDDeletable.h"

#include "stdcxxType.h"


#define EDGEELEMENT_DECL_VIRT(Type) \



#define EDGEELEMENT_DECL_NONVIRT(Type) \
int Type##_edgeElement_index ( Type##_p p );\
NodeElement_p Type##_edgeElement_source ( Type##_p p );\
NodeElement_p Type##_edgeElement_target ( Type##_p p );\
Type##_p Type##_edgeElement_succ ( Type##_p p );\
Type##_p Type##_edgeElement_pred ( Type##_p p );


#define EDGEELEMENT_DECL_ACCESSOR(Type) \



#define EDGEELEMENT_DEF_VIRT(Type) \



#define EDGEELEMENT_DEF_NONVIRT(Type) \
int Type##_edgeElement_index ( Type##_p p ) {\
return ((TYPECASTMETHOD(Type, edgeElement_index, EdgeElement))(p))->index();\
}\
\
NodeElement_p Type##_edgeElement_source ( Type##_p p ) {\
return from_nonconst_to_nonconst<NodeElement_t, NodeElement>((NodeElement*)((TYPECASTMETHOD(Type, edgeElement_source, EdgeElement))(p))->source());\
}\
\
NodeElement_p Type##_edgeElement_target ( Type##_p p ) {\
return from_nonconst_to_nonconst<NodeElement_t, NodeElement>((NodeElement*)((TYPECASTMETHOD(Type, edgeElement_target, EdgeElement))(p))->target());\
}\
\
Type##_p Type##_edgeElement_succ ( Type##_p p ) {\
return from_nonconst_to_nonconst<Type##_t, Type>((Type*)((TYPECASTMETHOD(Type, edgeElement_succ, EdgeElement))(p))->succ());\
}\
\
Type##_p Type##_edgeElement_pred ( Type##_p p ) {\
return from_nonconst_to_nonconst<Type##_t, Type>((Type*)((TYPECASTMETHOD(Type, edgeElement_pred, EdgeElement))(p))->pred());\
}


#define EDGEELEMENT_DEF_ACCESSOR(Type) \



DELETABLE_DECL_VIRT(EdgeElement)
EDGEELEMENT_DECL_VIRT(EdgeElement)
EDGEELEMENT_DECL_NONVIRT(EdgeElement)
EDGEELEMENT_DECL_ACCESSOR(EdgeElement)

#ifdef __cplusplus
}
#endif

