![]() |
![]() |
#include <GeneratorInterface/LHEInterface/src/XMLUtils.h>
Public Types | |
typedef Reader | Stream_t |
Public Member Functions | |
CBInputStream (Reader &in) | |
virtual unsigned int | curPos () const |
virtual unsigned int | readBytes (XMLByte *const buf, const unsigned int size) |
virtual | ~CBInputStream () |
Private Attributes | |
std::string | buffer |
unsigned int | pos |
Reader & | reader |
Classes | |
class | Reader |
Definition at line 125 of file XMLUtils.h.
typedef Reader lhef::CBInputStream::Stream_t |
Definition at line 133 of file XMLUtils.h.
lhef::CBInputStream::CBInputStream | ( | Reader & | in | ) |
lhef::CBInputStream::~CBInputStream | ( | ) | [virtual] |
virtual unsigned int lhef::CBInputStream::curPos | ( | ) | const [inline, virtual] |
unsigned int lhef::CBInputStream::readBytes | ( | XMLByte *const | buf, | |
const unsigned int | size | |||
) | [virtual] |
Definition at line 135 of file XMLUtils.cc.
References buffer, lhef::CBInputStream::Reader::data(), len, pos, SiStripLorentzAngle_cfi::read, and reader.
00137 { 00138 char *rawBuf = reinterpret_cast<char*>(buf); 00139 unsigned int bytes = size * sizeof(XMLByte); 00140 unsigned int read = 0; 00141 00142 while(read < bytes) { 00143 if (buffer.empty()) { 00144 buffer = reader.data(); 00145 if (buffer.empty()) 00146 break; 00147 } 00148 00149 unsigned int len = buffer.length(); 00150 unsigned int rem = bytes - read; 00151 if (rem < len) { 00152 std::memcpy(rawBuf + read, buffer.c_str(), rem); 00153 buffer.erase(0, rem); 00154 read += rem; 00155 break; 00156 } 00157 00158 std::memcpy(rawBuf + read, buffer.c_str(), len); 00159 buffer.clear(); 00160 read += len; 00161 } 00162 00163 read /= sizeof(XMLByte); 00164 pos += read; 00165 00166 return read; 00167 }
std::string lhef::CBInputStream::buffer [private] |
unsigned int lhef::CBInputStream::pos [private] |
Reader& lhef::CBInputStream::reader [private] |