Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void cut(CutBuilder& builder) const
- {
- if (builder.length() == 0) {
- return;
- }
- position_t resultOffset = builder.logical() % _interval;
- builder.skipResult(resultOffset);
- position_t prefixLeft = 0;
- if (resultOffset < _prefix) {
- prefixLeft = min(_prefix - resultOffset, builder.length());
- }
- builder.skipSource(prefixLeft);
- builder.skipResult(prefixLeft);
- if (builder.length() == 0) {
- return;
- }
- if (_nested) {
- position_t left = _copy;
- SCIDB_ASSERT(left > 0);
- while(builder.length() > 0 && left > 0) {
- _nested->cut(builder);
- left -= _nested->_interval;
- }
- } else {
- builder.copy(min(_copy, builder.length()));
- }
- if (builder.length() == 0) {
- return ;
- }
- position_t left = min(_suffix, builder.length());
- builder.skipSource(left);
- builder.skipResult(left);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement