gecko-dev/xpcom/string/nsTDependentString.cpp
criss c6b2c5db61 Backed out 9 changesets (bug 1772006) causing build bustages on nsTString.cpp. CLOSED TREE
Backed out changeset f17c7565707b (bug 1772006)
Backed out changeset c725fe1f5882 (bug 1772006)
Backed out changeset d19663161261 (bug 1772006)
Backed out changeset b6611ab002d9 (bug 1772006)
Backed out changeset 790f42b64af9 (bug 1772006)
Backed out changeset 79a734b4e4d9 (bug 1772006)
Backed out changeset 42730aae16ea (bug 1772006)
Backed out changeset b2542aef3054 (bug 1772006)
Backed out changeset 962bfea4a309 (bug 1772006)
2022-06-11 01:13:42 +03:00

46 lines
1.6 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
template <typename T>
nsTDependentString<T>::nsTDependentString(const char_type* aStart,
const char_type* aEnd)
: string_type(const_cast<char_type*>(aStart), aEnd - aStart,
DataFlags::TERMINATED, ClassFlags(0)) {
MOZ_RELEASE_ASSERT(aStart <= aEnd, "Overflow!");
this->AssertValidDependentString();
}
template <typename T>
void nsTDependentString<T>::Rebind(const string_type& str,
index_type startPos) {
MOZ_ASSERT(str.GetDataFlags() & DataFlags::TERMINATED,
"Unterminated flat string");
// If we currently own a buffer, release it.
this->Finalize();
size_type strLength = str.Length();
if (startPos > strLength) {
startPos = strLength;
}
char_type* newData =
const_cast<char_type*>(static_cast<const char_type*>(str.Data())) +
startPos;
size_type newLen = strLength - startPos;
DataFlags newDataFlags =
str.GetDataFlags() & (DataFlags::TERMINATED | DataFlags::LITERAL);
this->SetData(newData, newLen, newDataFlags);
}
template <typename T>
void nsTDependentString<T>::Rebind(const char_type* aStart,
const char_type* aEnd) {
MOZ_RELEASE_ASSERT(aStart <= aEnd, "Overflow!");
this->Rebind(aStart, aEnd - aStart);
}