Ints get_triangles(SurfaceMeshGeometry *sg) { Ints ret; Ints::const_iterator it = sg->get_faces().begin(); while (it != sg->get_faces().end()) { Ints::const_iterator eit = std::find( it, static_cast<Ints::const_iterator>(sg->get_faces().end()), -1); IMP_INTERNAL_CHECK(eit != sg->get_faces().end(), "No trailing -1"); Ints cur(it, eit); Ints tris = get_triangulation_of_face(cur, sg->get_vertexes()); ret.insert(ret.end(), tris.begin(), tris.end()); it = eit; ++it; } return ret; }