//////////////////////////////////////////////////////////////////////////////// // MESH_SFEdge.inl // //////////////////////////////////////////////////////////////////////////////// namespace X3DTK { namespace MESH { template SFTemplateEdge *SFTemplateEdge::getSymetric() { return _symetric; } template typename SFTemplateEdge::MFFace SFTemplateEdge::getFaces() const { MFFace faces; const MFFace &r1faces = _edgeContent->get1Faces(); const MFFace &r2faces = _edgeContent->get2Faces(); //faces.reserve(r1faces.size() + r2faces.size() + 1); for (typename MFFace::const_iterator it = r1faces.begin(); it != r1faces.end(); ++it) faces.push_back(*it); for (typename MFFace::const_iterator it = r2faces.begin(); it != r2faces.end(); ++it) faces.push_back(*it); return faces; } template bool SFTemplateEdge::isBoundary() const { return _edgeContent->isBoundary(); } template bool SFTemplateEdge::isNonManifold() const { return _edgeContent->isNonManifold(); } template EData &SFTemplateEdge::data() { return _edgeContent->data(); } template const EData &SFTemplateEdge::data() const { return _edgeContent->data(); } #ifdef TEMPLATE_SPECIALIZATION_SUPPORTED template template F &SFTemplateEdge::getData() { return _data.template get(); } template template F &SFTemplateEdge::ogetData() { return _data.template get(); } #endif template SFTemplateEdge::SFTemplateEdge(SFTemplateEdgeContent *const edgeContent) : BaseSFEdge(), _edgeContent(edgeContent), _symetric(0) { } template SFTemplateEdge::~SFTemplateEdge() { } template void SFTemplateEdge::setSymetric(SFTemplateEdge *symetric) { _symetric = symetric; } template void SFTemplateEdge::reverse(SFTemplateFace *face) { _edgeContent->reverse(face); } template std::ostream& operator<<(std::ostream& o, const SFTemplateEdge &e) { o << "< " << e.getFromVertex()->getIndex() << ", " << e.getToVertex()->getIndex() << " >"; return o; } } }