template<typename Transform> \
struct vtable<CLASS,Transform> : public std::enable_shared_from_this<vtable<CLASS,Transform>> { \
template<typename Visitor> \
void visit_other( Visitor&& v ){ \
} \
template<typename Visitor> \
void visit( Visitor&& v ){ \
} \
}; \
}
#define FC_API_VTABLE_DEFINE_VISIT(r, data, elem)
#define FC_API_VTABLE_DEFINE_MEMBER(r, data, elem)
#define FC_API_VTABLE_DEFINE_VISIT_OTHER(r, data, elem)
119#define FC_API( CLASS, METHODS ) \
120namespace fc { \
121 template<typename Transform> \
122 struct vtable<CLASS,Transform> : public std::enable_shared_from_this<vtable<CLASS,Transform>> { \
123 BOOST_PP_SEQ_FOR_EACH( FC_API_VTABLE_DEFINE_MEMBER, CLASS, METHODS ) \
124 template<typename Visitor> \
125 void visit_other( Visitor&& v ){ \
126 BOOST_PP_SEQ_FOR_EACH( FC_API_VTABLE_DEFINE_VISIT_OTHER, CLASS, METHODS ) \
127 } \
128 template<typename Visitor> \
129 void visit( Visitor&& v ){ \
130 BOOST_PP_SEQ_FOR_EACH( FC_API_VTABLE_DEFINE_VISIT, CLASS, METHODS ) \
131 } \
132 }; \
133}