|
ATLAS Offline Software
|
Go to the documentation of this file.
13 #include "eformat/HeaderMarker.h"
14 #include "eformat/Issue.h"
79 throw EFORMAT_WRONG_MARKER(
marker(), eformat::ROB);
88 }
catch(eformat::WrongMarkerIssue &ex){
91 }
catch(eformat::SizeCheckIssue &ex){
94 }
catch(eformat::BadVersionIssue &ex){
104 return this->check_rob_impl(
version,
false);
109 return this->check_rob_impl(
version,
true);
121 if ( rod_version() >> 16 !=
version ) {
122 throw EFORMAT_BAD_ROD_VERSION(rod_version() >> 16,
version);
124 if ( rod_header_size_word() != 9 ) {
125 throw EFORMAT_SIZE_CHECK(9, rod_header_size_word());
127 if ( rod_fragment_size_word() != 12 + rod_nstatus() + rod_ndata() ) {
128 throw EFORMAT_ROD_SIZE_CHECK(rod_fragment_size_word(),
129 (12 + rod_nstatus() + rod_ndata()));
131 }
catch(eformat::RODSizeCheckIssue &ex){
134 }
catch(eformat::SizeCheckIssue &ex){
137 }
catch(eformat::BadRodVersionIssue &ex){
147 return this->check_rod_impl(
version,
false);
152 return this->check_rod_impl(
version,
true);
162 return this->check_rob_impl(
version, exc) &&
163 this->check_rod_impl(rod_version, exc);
170 return this->check_impl(
version, rod_version,
false);
177 return this->check_impl(
version, rod_version,
true);
185 p.push_back(eformat::WRONG_MARKER);
187 p.push_back(eformat::UNSUPPORTED_VERSION);
190 p.push_back(eformat::WRONG_FRAGMENT_SIZE);
197 if (rod_marker() != eformat::ROD)
p.push_back(eformat::WRONG_ROD_MARKER);
198 if (rod_version() >> 16 !=
version)
199 p.push_back(eformat::UNSUPPORTED_ROD_VERSION);
200 if (rod_header_size_word() != 9)
p.push_back(eformat::WRONG_ROD_HEADER_SIZE);
201 if (rod_fragment_size_word() != 12 + rod_nstatus() + rod_ndata())
202 p.push_back(eformat::WRONG_ROD_FRAGMENT_SIZE);
206 (std::vector<eformat::FragmentProblem>&
p,
210 rod_problems(
p, rod_version);
215 if (rod_status_position())
return m_start + 9 + rod_ndata();
221 if (!rod_status_position())
return m_start + 9 + rod_nstatus();
234 if (
max == 0)
return 0;