Fix is>>point_d

Now it matches what os<<point_d does at least.
This commit is contained in:
Marc Glisse 2018-10-03 22:47:04 +02:00
parent f64ae1b240
commit cfbb3ef977
2 changed files with 14 additions and 18 deletions

View File

@ -21,6 +21,7 @@
#define CGAL_WRAPPER_POINT_D_H
#include <ostream>
#include <istream>
#include <CGAL/Origin.h>
#include <CGAL/Kernel/mpl.h>
#include <CGAL/representation_tags.h>
@ -246,8 +247,6 @@ public:
template <class R_> Point_d<R_>::Point_d(Point_d &)=default;
#endif
//TODO: IO
template <class R_>
std::ostream& operator <<(std::ostream& os, const Point_d<R_>& p)
{
@ -269,25 +268,19 @@ std::ostream& operator <<(std::ostream& os, const Point_d<R_>& p)
// TODO: test if the stream is binary or text?
template<typename K>
std::istream &
operator>>(std::istream &is, typename Point_d<K> & p)
operator>>(std::istream &is, Point_d<K> & p)
{
typedef typename Point_d<K> P;
typedef Point_d<K> P;
typedef typename K::FT FT;
std::vector<FT> coords;
int dim;
is >> dim;
if(!is) return is;
std::string line;
for(;;)
{
if (!std::getline(is, line))
return is;
if (line != "")
break;
}
std::stringstream line_sstr(line);
FT temp;
while (line_sstr >> temp)
coords.push_back(temp);
std::vector<FT> coords(dim);
for(int i=0;i<dim;++i)
is >> coords[i];
if(is)
p = P(coords.begin(), coords.end());
return is;
}

View File

@ -622,6 +622,9 @@ void test3(){
std::ostringstream output;
output << showit;
assert(output.str()=="3 1 2 4");
std::istringstream input("3 5 6 9");
input >> showit;
assert(ed(showit,cp(5,6,9)));
P t1[]={cp(1,2,3),cp(3,2,1),cp(2,4,2)};
assert(sbds(t1+0,t1+2,cp(2,2,3.414)) == CGAL::ON_BOUNDED_SIDE);
assert(sbds(t1+0,t1+2,cp(1,2,3)) == CGAL::ON_BOUNDARY);