bool SM_io_parser<Decorator_>::read_vertex(SVertex_handle v)
{
  // precondition: nodes exist
  // syntax: index { isolated incident_object, mark, point}
  int n; bool iso; int f; Mark m; Sphere_point p;
  if ( !(in >> n) ||
       !check_sep("{") ||
       !(in >> iso) ||
       !(in >> f) ||
       !check_sep(",") ||
       !(in >> m) ||
       !check_sep(",") ||
       !(in >> p) ||
       !check_sep("}") ) return false;

  if(f<0 || (iso && f > fn) || (!iso && f > en))
  {
    in.clear(std::ios_base::badbit);
    return false;
  }

  if (iso) this->set_face(v,SFace_of[f]);
  else     this->set_first_out_edge(v,Edge_of[f]);
  v->mark() = m; v->point() = p;
  return true;
}
bool SM_io_parser<Decorator_>::read_vertex(SVertex_handle v)
{
   
   
  int n; bool iso; int f; Mark m; Sphere_point p;
  if ( !(in >> n) ||
       !check_sep("{") ||
       !(in >> iso) ||
       !(in >> f) ||
       !check_sep(",") ||
       !(in >> m) ||
       !check_sep(",") ||
       !(in >> p) ||
       !check_sep("}") ) return false;

  if(f<0 || (iso && f > fn) || (!iso && f > en))
  {
    in.clear(std::ios_base::badbit);
    return false;
  }

  if (iso) this->set_face(v,SFace_of[f]);
  else     this->set_first_out_edge(v,Edge_of[f]);
  v->mark() = m; v->point() = p;
  return true;
}