2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-31 14:05:33 +00:00

some more comments on the implementation.

git-svn-id: svn://bind10.isc.org/svn/bind10/branches/jinmei-dnsmessageapi@367 e5f2f494-b856-4b98-b285-d166d9295462
This commit is contained in:
JINMEI Tatuya
2009-12-15 05:06:08 +00:00
parent a782f38489
commit 9fec54f0b5

View File

@@ -584,16 +584,27 @@ Name::split(unsigned int first, unsigned int n) const
}
Name retname;
// If the specified range doesn't include the trailing dot, we need one
// more label for that.
unsigned int newlabels = (first + n == labels_) ? n : n + 1;
//
// Set up offsets: copy the corresponding range of the original offsets
// with subtracting an offset of the prefix length.
//
retname.offsets_.reserve(newlabels);
transform(offsets_.begin() + first, offsets_.begin() + first + newlabels,
back_inserter(retname.offsets_),
bind2nd(OffsetAdjuster(), -offsets_[first]));
//
// Set up the new name. At this point the tail of the new offsets specifies
// the position of the trailing dot, which should be equal to the length of
// the extracted portion excluding the dot. First copy that part from the
// original name, and append the trailing dot explicitly.
//
retname.ndata_.reserve(retname.offsets_.back() + 1);
retname.ndata_.assign(ndata_, offsets_[first], retname.offsets_.back());
// add a trailing dot
retname.ndata_.push_back(0);
retname.length_ = retname.ndata_.size();