5 std::ostream &
operator<<(std::ostream &Ostr,
const field::databuffer &buf)
9 std::ostringstream OStr;
10 OStr << buf._number_of_items <<
" " << buf._item_size << std::endl;
11 bool known_data_type =
false;
12 if(buf._item_size == 1){
13 buf.OutputToStream<
char>(OStr);
15 else if(buf._item_size == 2){
16 buf.OutputToStream<
short>(OStr);
18 else if(buf._item_size == 4){
19 buf.OutputToStream<
int>(OStr);
21 else if(buf._item_size == 8){
22 buf.OutputToStream<
double>(OStr);
25 assert(known_data_type);
30 std::istream &
operator>>(std::istream &Istr,field::databuffer &buf)
36 std::getline(Istr,line);
37 std::istringstream IStr(line);
40 int read_size = in_nitems * in_size;
41 int expected_size = buf._number_of_items * buf._item_size;
42 if(expected_size <= 0) {
43 expected_size = read_size;
44 buf._number_of_items = in_nitems;
45 buf._item_size = in_size;
47 bool known_data_type =
false;
48 if(buf._data_ptr != NULL){
49 if(expected_size != read_size){
50 std::cout <<
"PC2::ERROR line = " << line << std::endl
51 <<
"PC2::ERROR in_nitems = " << in_nitems << std::endl
52 <<
"PC2::ERROR in_size = " << in_size << std::endl
53 <<
"PC2::ERROR read_size = " << read_size << std::endl
54 <<
"PC2::ERROR expected = " << expected_size << std::endl;
55 std::getline(Istr,line);
56 std::cout <<
"PC2::ERROR next_line = " << line << std::endl;
58 assert(expected_size == read_size);
61 buf.Allocate(in_nitems,in_size);
62 if(buf._item_size == 1)
63 buf.ReadFromStream<
char>(Istr);
64 else if(buf._item_size == 2)
65 buf.ReadFromStream<
short>(Istr);
66 else if(buf._item_size == 4)
67 buf.ReadFromStream<
int>(Istr);
68 else if(buf._item_size == 8)
69 buf.ReadFromStream<
double>(Istr);
71 assert(known_data_type);
75 std::istream &
operator>>(std::istream &IStr,field::metadata &md)
81 IStr >> md.name >> md.loc >> md.ncomp >> md.dsize >> md.unit;
82 if(md.unit ==
"[NULL]")
87 std::ostream &
operator<<(std::ostream &OStr,
const field::metadata &md)
89 OStr << md.name <<
" " << md.loc <<
" " << md.ncomp <<
" " << md.dsize <<
" " 90 << (md.unit.empty() ?
"[NULL]" : md.unit);
std::ostream & operator<<(std::ostream &Ostr, const field::databuffer &buf)
std::istream & operator>>(std::istream &Istr, field::databuffer &buf)