in include/photon/fs/range-split.h [133:192]
void init(uint64_t offset, uint64_t length)
{
begin = offset;
end = offset + length;
divide(begin, abegin, begin_remainder, apbegin);
divide(end, apend, end_remainder, aend);
if (abegin + 1 == aend)
{
first.assign(abegin, begin_remainder, length);
if (abegin != apbegin)
{
if (aend != apend) //end is an offset but aend is an index, totally different
{
small_note = first;
preface.clear();
postface.clear();
}
else //if (aend == epnd)
{
small_note.clear();
preface = first;
postface.clear();
}
}
else //if (abegin == apbegin)
{
if (aend != apend)
{
small_note.clear();
preface.clear();
postface = first;
}
else //if (aend == apend)
{
small_note.clear();
preface.clear();
postface.clear();
}
}
}
else
{
small_note.clear();
if (abegin == apbegin)
preface.clear();
else
preface.assign(abegin, begin_remainder,
get_length(abegin) - begin_remainder);
if (preface)
first = preface;
else
first.assign(apbegin, 0, get_length(apbegin));
if (aend == apend)
postface.clear();
else
postface.assign(apend, 0,
end_remainder);
}
}