28 virtual const std::string&
name()
const = 0;
40 static const T s_v = T();
45 if(
void* p = cmp_cast<icolumn>(
this,a_class))
return p;
58 static const std::string s_v(
"tools::read::intuple");
67 virtual const std::vector<icol*>&
columns()
const = 0;
68 virtual const std::string&
title()
const = 0;
77 const std::vector<icol*>& _cols =
columns();
82 std::string low_a_name = a_name;
85 const std::vector<icol*>& _cols =
columns();
87 low_name = (*it)->name();
89 if(low_name==low_a_name)
return *it;
98 return id_cast<icol, icolumn<T> >(*col);
104 if(!col) {a_col = 0;
return false;}
105 a_col = id_cast<icol, icolumn<T> >(*col);
106 return a_col?
true:
false;
112 if(!col) {a_is =
false;
return false;}
113 a_is = id_cast<icol, icolumn<T> >(*col)?
true:
false;
120 const std::vector<icol*>& cols =
columns();
121 if(cols.empty())
return false;
122 if(a_col>=cols.size())
return false;
123 icol* _base_col = cols[a_col];
124 icolumn<T>* _col = id_cast<icol, icolumn<T> >(*_base_col);
125 if(!_col)
return false;
130 {
for(
uint64 row=0;row<_rows;row++) {
131 if(!
next()) {a_value = T();
return false;}
136 a_value = mn<T>(a_value,v);
145 const std::vector<icol*>& cols =
columns();
146 if(cols.empty())
return false;
147 if(a_col>=cols.size())
return false;
148 icol* _base_col = cols[a_col];
149 icolumn<T>* _col = id_cast<icol, icolumn<T> >(*_base_col);
150 if(!_col)
return false;
155 {
for(
uint64 row=0;row<_rows;row++) {
156 if(!
next()) {a_value = T();
return false;}
161 a_value = mx<T>(a_value,v);