vgl_io_line_segment_3d.hxx
Go to the documentation of this file.
1 // This is core/vgl/io/vgl_io_line_segment_3d.hxx
2 #ifndef vgl_io_line_segment_3d_hxx_
3 #define vgl_io_line_segment_3d_hxx_
4 //:
5 // \file
6 
7 #include <iostream>
10 
11 //============================================================================
12 //: Binary save self to stream.
13 template<class T>
14 void vsl_b_write(vsl_b_ostream &os, const vgl_line_segment_3d<T> & p)
15 {
16  constexpr short io_version_no = 1;
17  vsl_b_write(os, io_version_no);
18  vsl_b_write(os, p.point1());
19  vsl_b_write(os, p.point2());
20 }
21 
22 //============================================================================
23 //: Binary load self from stream.
24 template<class T>
25 void vsl_b_read(vsl_b_istream &is, vgl_line_segment_3d<T> & p)
26 {
27  if (!is) return;
28 
29  short v;
30  vsl_b_read(is, v);
31  switch (v)
32  {
33  case 1: {
34  vgl_point_3d<T> p1, p2;
35  vsl_b_read(is, p1);
36  vsl_b_read(is, p2);
37  p.set(p1,p2);
38  break;
39  }
40 
41  default:
42  std::cerr << "I/O ERROR: vsl_b_read(vsl_b_istream&, vgl_line_segment_3d<T>&)\n"
43  << " Unknown version number "<< v << '\n';
44  is.is().clear(std::ios::badbit); // Set an unrecoverable IO error on stream
45  return;
46  }
47 }
48 
49 
50 //============================================================================
51 //: Output a human readable summary to the stream
52 template<class T>
53 void vsl_print_summary(std::ostream& os,const vgl_line_segment_3d<T> & l)
54 {
55  os<<"Segment from ";
56  vsl_print_summary(os,l.point1());
57  os<<" to ";
58  vsl_print_summary(os,l.point2());
59 }
60 
61 #define VGL_IO_LINE_SEGMENT_3D_INSTANTIATE(T) \
62 template void vsl_print_summary(std::ostream &, vgl_line_segment_3d<T >const&); \
63 template void vsl_b_read(vsl_b_istream &, vgl_line_segment_3d<T > &); \
64 template void vsl_b_write(vsl_b_ostream &, const vgl_line_segment_3d<T > &)
65 
66 #endif // vgl_io_line_segment_3d_hxx_
vgl_point_3d< Type > point1() const
void set(vgl_point_3d< Type > const &p1, vgl_point_3d< Type > const &p2)
assignment.
void vsl_b_write(vsl_b_ostream &os, const vgl_line_segment_3d< T > &p)
Binary save self to stream.
vgl_point_3d< Type > point2() const
#define v
Definition: vgl_vector_2d.h:74
Represents a 3D line segment using two points.
Definition: vgl_fwd.h:19
void vsl_print_summary(std::ostream &os, const vgl_line_segment_3d< T > &l)
Output a human readable summary to the stream.
#define l
void vsl_b_read(vsl_b_istream &is, vgl_line_segment_3d< T > &p)
Binary load self from stream.