Loading files
// Copyright (c) 1998-1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <TCollection_AsciiString.hxx>
//! Returns True when the two strings are the same.
//! @param[in] theString1 first string to compare
//! @param[in] theString2 second string to compare
//! @return true if strings are equal
inline bool IsEqual(const TCollection_AsciiString& theString1,
const TCollection_AsciiString& theString2)
{
return TCollection_AsciiString::IsEqual(theString1, theString2);
}
namespace std
{
template <>
struct hash<TCollection_AsciiString>
{
size_t operator()(const TCollection_AsciiString& theString) const { return theString.HashCode(); }
};
} // namespace std
//=================================================================================================
inline void TCollection_AsciiString::AssignCat(const TCollection_AsciiString& theOther)
{
AssignCat(theOther.ToCString(), theOther.Length());
}
//=================================================================================================
inline void TCollection_AsciiString::AssignCat(const char* const theCString)
{
if (theCString)
{
AssignCat(theCString, static_cast<int>(strlen(theCString)));
}
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline void TCollection_AsciiString::AssignCat(const std::string_view& theStringView)
{
if (!theStringView.empty())
{
AssignCat(theStringView.data(), static_cast<int>(theStringView.size()));
}
}
#endif
//=================================================================================================
template <std::size_t N>
inline void TCollection_AsciiString::AssignCat(const char (&theLiteral)[N])
{
AssignCat(theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline TCollection_AsciiString TCollection_AsciiString::Cat(
const TCollection_AsciiString& theOther) const
{
return Cat(theOther.ToCString(), theOther.Length());
}
//=================================================================================================
inline TCollection_AsciiString TCollection_AsciiString::Cat(const char* const theCString) const
{
return theCString ? Cat(theCString, static_cast<int>(strlen(theCString)))
: TCollection_AsciiString(*this);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline TCollection_AsciiString TCollection_AsciiString::Cat(
const std::string_view& theStringView) const
{
return Cat(theStringView.data(), static_cast<int>(theStringView.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline TCollection_AsciiString TCollection_AsciiString::Cat(const char (&theLiteral)[N]) const
{
return Cat(theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline void TCollection_AsciiString::Copy(const char* const theCString)
{
Copy(theCString, theCString ? static_cast<int>(strlen(theCString)) : 0);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline void TCollection_AsciiString::Copy(const std::string_view& theStringView)
{
Copy(theStringView.data(), static_cast<int>(theStringView.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline void TCollection_AsciiString::Copy(const char (&theLiteral)[N])
{
Copy(theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline void TCollection_AsciiString::Copy(const TCollection_AsciiString& theFromWhere)
{
if (&theFromWhere != this)
{
Copy(theFromWhere.ToCString(), theFromWhere.Length());
}
}
//=================================================================================================
inline void TCollection_AsciiString::Insert(const int theWhere,
const TCollection_AsciiString& theWhat)
{
Insert(theWhere, theWhat.ToCString(), theWhat.Length());
}
//=================================================================================================
inline void TCollection_AsciiString::Insert(const int theWhere, const char* const theCString)
{
if (theCString)
{
Insert(theWhere, theCString, static_cast<int>(strlen(theCString)));
}
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline void TCollection_AsciiString::Insert(const int theWhere,
const std::string_view& theStringView)
{
Insert(theWhere, theStringView.data(), static_cast<int>(theStringView.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline void TCollection_AsciiString::Insert(const int theWhere, const char (&theLiteral)[N])
{
Insert(theWhere, theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline void TCollection_AsciiString::InsertAfter(const int theIndex,
const TCollection_AsciiString& theOther)
{
InsertAfter(theIndex, theOther.ToCString(), theOther.Length());
}
//=================================================================================================
inline void TCollection_AsciiString::InsertAfter(const int theIndex, const char* const theCString)
{
if (theCString)
InsertAfter(theIndex, theCString, static_cast<int>(strlen(theCString)));
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline void TCollection_AsciiString::InsertAfter(const int theIndex,
const std::string_view& theStringView)
{
InsertAfter(theIndex, theStringView.data(), static_cast<int>(theStringView.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline void TCollection_AsciiString::InsertAfter(const int theIndex, const char (&theLiteral)[N])
{
InsertAfter(theIndex, theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline void TCollection_AsciiString::InsertBefore(const int theIndex,
const TCollection_AsciiString& theOther)
{
InsertBefore(theIndex, theOther.ToCString(), theOther.Length());
}
//=================================================================================================
inline void TCollection_AsciiString::InsertBefore(const int theIndex, const char* const theCString)
{
if (theCString)
InsertBefore(theIndex, theCString, static_cast<int>(strlen(theCString)));
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline void TCollection_AsciiString::InsertBefore(const int theIndex,
const std::string_view& theStringView)
{
InsertBefore(theIndex, theStringView.data(), static_cast<int>(theStringView.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline void TCollection_AsciiString::InsertBefore(const int theIndex, const char (&theLiteral)[N])
{
InsertBefore(theIndex, theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline bool TCollection_AsciiString::IsEqual(const TCollection_AsciiString& theOther) const
{
return IsEqual(theOther.myString, theOther.myLength);
}
//=================================================================================================
inline bool TCollection_AsciiString::IsEqual(const char* const theCString) const
{
return theCString ? IsEqual(theCString, static_cast<int>(strlen(theCString))) : (myLength == 0);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::IsEqual(const std::string_view& theStringView) const
{
return IsEqual(theStringView.data(), static_cast<int>(theStringView.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline bool TCollection_AsciiString::IsEqual(const char (&theLiteral)[N]) const
{
return IsEqual(theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline bool TCollection_AsciiString::IsDifferent(const TCollection_AsciiString& theOther) const
{
return IsDifferent(theOther.myString, theOther.myLength);
}
//=================================================================================================
inline bool TCollection_AsciiString::IsDifferent(const char* const theCString) const
{
return !IsEqual(theCString);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::IsDifferent(const std::string_view& theStringView) const
{
return !IsEqual(theStringView);
}
#endif
//=================================================================================================
template <std::size_t N>
inline bool TCollection_AsciiString::IsDifferent(const char (&theLiteral)[N]) const
{
return !IsEqual(theLiteral);
}
//=================================================================================================
inline bool TCollection_AsciiString::IsLess(const TCollection_AsciiString& theOther) const
{
return IsLess(theOther.ToCString(), theOther.Length());
}
//=================================================================================================
inline bool TCollection_AsciiString::IsLess(const char* const theCString) const
{
return theCString ? IsLess(theCString, static_cast<int>(strlen(theCString))) : false;
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::IsLess(const std::string_view& theStringView) const
{
return IsLess(theStringView.data(), static_cast<int>(theStringView.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline bool TCollection_AsciiString::IsLess(const char (&theLiteral)[N]) const
{
return IsLess(theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline bool TCollection_AsciiString::IsGreater(const TCollection_AsciiString& theOther) const
{
return IsGreater(theOther.ToCString(), theOther.Length());
}
//=================================================================================================
inline bool TCollection_AsciiString::IsGreater(const char* const theCString) const
{
return theCString ? IsGreater(theCString, static_cast<int>(strlen(theCString))) : (myLength > 0);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::IsGreater(const std::string_view& theStringView) const
{
return IsGreater(theStringView.data(), static_cast<int>(theStringView.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline bool TCollection_AsciiString::IsGreater(const char (&theLiteral)[N]) const
{
return IsGreater(theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline bool TCollection_AsciiString::StartsWith(const TCollection_AsciiString& theStartString) const
{
return StartsWith(theStartString.ToCString(), theStartString.Length());
}
//=================================================================================================
inline bool TCollection_AsciiString::StartsWith(const char* const theCString) const
{
return theCString ? StartsWith(theCString, static_cast<int>(strlen(theCString)))
: (myLength == 0);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::StartsWith(const std::string_view& theStartString) const
{
return StartsWith(theStartString.data(), static_cast<int>(theStartString.size()));
}
#endif
//=================================================================================================
inline bool TCollection_AsciiString::EndsWith(const TCollection_AsciiString& theEndString) const
{
return EndsWith(theEndString.ToCString(), theEndString.Length());
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::EndsWith(const std::string_view& theEndString) const
{
return EndsWith(theEndString.data(), static_cast<int>(theEndString.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline bool TCollection_AsciiString::StartsWith(const char (&theLiteral)[N]) const
{
return StartsWith(theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
template <std::size_t N>
inline bool TCollection_AsciiString::EndsWith(const char (&theLiteral)[N]) const
{
return EndsWith(theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline int TCollection_AsciiString::Search(const TCollection_AsciiString& theWhat) const
{
return Search(theWhat.ToCString(), theWhat.Length());
}
//=================================================================================================
inline int TCollection_AsciiString::Search(const char* const theCString) const
{
return theCString ? Search(theCString, static_cast<int>(strlen(theCString))) : -1;
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline int TCollection_AsciiString::Search(const std::string_view& theWhat) const
{
return Search(theWhat.data(), static_cast<int>(theWhat.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline int TCollection_AsciiString::Search(const char (&theLiteral)[N]) const
{
return Search(theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline int TCollection_AsciiString::SearchFromEnd(const TCollection_AsciiString& theWhat) const
{
return SearchFromEnd(theWhat.ToCString(), theWhat.Length());
}
//=================================================================================================
inline int TCollection_AsciiString::SearchFromEnd(const char* const theCString) const
{
return theCString ? SearchFromEnd(theCString, static_cast<int>(strlen(theCString))) : -1;
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline int TCollection_AsciiString::SearchFromEnd(const std::string_view& theWhat) const
{
return SearchFromEnd(theWhat.data(), static_cast<int>(theWhat.size()));
}
#endif
//=================================================================================================
template <std::size_t N>
inline int TCollection_AsciiString::SearchFromEnd(const char (&theLiteral)[N]) const
{
return SearchFromEnd(theLiteral, static_cast<int>(strlen(theLiteral)));
}
//=================================================================================================
inline void TCollection_AsciiString::SetValue(const int theWhere,
const TCollection_AsciiString& theWhat)
{
SetValue(theWhere, theWhat.ToCString(), theWhat.Length());
}
//=================================================================================================
inline void TCollection_AsciiString::SetValue(const int theWhere, const char* const theCString)
{
if (theCString)
{
SetValue(theWhere, theCString, static_cast<int>(strlen(theCString)));
}
else
{
SetValue(theWhere, "", 0);
}
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline void TCollection_AsciiString::SetValue(const int theWhere,
const std::string_view& theStringView)
{
SetValue(theWhere, theStringView.data(), static_cast<int>(theStringView.size()));
}
#endif
//=================================================================================================
inline size_t TCollection_AsciiString::HashCode() const
{
if (myLength < 4)
{
return opencascade::FNVHash::hash_combine(*myString, myLength);
}
return opencascade::hashBytes(myString, myLength);
}
//=================================================================================================
inline bool TCollection_AsciiString::IsEqual(const TCollection_AsciiString& string1,
const TCollection_AsciiString& string2)
{
return string1.IsEqual(string2);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::IsEqual(const TCollection_AsciiString& theString1,
const std::string_view& theStringView)
{
return theString1.IsEqual(theStringView);
}
#endif
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::IsEqual(const std::string_view& theStringView,
const TCollection_AsciiString& theString2)
{
return theString2.IsEqual(theStringView);
}
#endif
//=================================================================================================
inline bool TCollection_AsciiString::IsSameString(const TCollection_AsciiString& theString1,
const TCollection_AsciiString& theString2,
const bool theIsCaseSensitive)
{
return IsSameString(theString1.ToCString(),
theString1.Length(),
theString2.ToCString(),
theString2.Length(),
theIsCaseSensitive);
}
//=================================================================================================
inline bool TCollection_AsciiString::IsSameString(const TCollection_AsciiString& theString1,
const char* const theCString,
const bool theIsCaseSensitive)
{
if (!theCString)
return theString1.Length() == 0;
return IsSameString(theString1.ToCString(),
theString1.Length(),
theCString,
static_cast<int>(strlen(theCString)),
theIsCaseSensitive);
}
//=================================================================================================
inline bool TCollection_AsciiString::IsSameString(const char* const theCString,
const TCollection_AsciiString& theString2,
const bool theIsCaseSensitive)
{
return IsSameString(theString2, theCString, theIsCaseSensitive);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::IsSameString(const TCollection_AsciiString& theString1,
const std::string_view& theStringView,
const bool theIsCaseSensitive)
{
return IsSameString(theString1.ToCString(),
theString1.Length(),
theStringView.data(),
static_cast<int>(theStringView.size()),
theIsCaseSensitive);
}
#endif
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::IsSameString(const std::string_view& theStringView,
const TCollection_AsciiString& theString2,
const bool theIsCaseSensitive)
{
// Redirect to the primary static method with swapped arguments
return IsSameString(theString2, theStringView, theIsCaseSensitive);
}
#endif
//=================================================================================================
inline bool TCollection_AsciiString::IsSameString(const char* const theCString1,
const char* const theCString2,
const bool theIsCaseSensitive)
{
if (!theCString1 && !theCString2)
return true;
if (!theCString1 || !theCString2)
return false;
return IsSameString(theCString1,
static_cast<int>(strlen(theCString1)),
theCString2,
static_cast<int>(strlen(theCString2)),
theIsCaseSensitive);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::IsSameString(const std::string_view& theStringView1,
const std::string_view& theStringView2,
const bool theIsCaseSensitive)
{
return IsSameString(theStringView1.data(),
static_cast<int>(theStringView1.size()),
theStringView2.data(),
static_cast<int>(theStringView2.size()),
theIsCaseSensitive);
}
#endif
//=================================================================================================
template <std::size_t N>
inline void TCollection_AsciiString::operator+=(const char (&theLiteral)[N])
{
AssignCat(theLiteral);
}
//=================================================================================================
template <std::size_t N>
inline TCollection_AsciiString TCollection_AsciiString::operator+(const char (&theLiteral)[N]) const
{
return Cat(theLiteral);
}
//=================================================================================================
template <std::size_t N>
inline void TCollection_AsciiString::operator=(const char (&theLiteral)[N])
{
Copy(theLiteral);
}
//=================================================================================================
template <std::size_t N>
inline bool TCollection_AsciiString::operator==(const char (&theLiteral)[N]) const
{
return IsEqual(theLiteral);
}
//=================================================================================================
template <std::size_t N>
inline bool TCollection_AsciiString::operator!=(const char (&theLiteral)[N]) const
{
return IsDifferent(theLiteral);
}
//=================================================================================================
template <std::size_t N>
inline bool TCollection_AsciiString::operator<(const char (&theLiteral)[N]) const
{
return IsLess(theLiteral);
}
//=================================================================================================
template <std::size_t N>
inline bool TCollection_AsciiString::operator>(const char (&theLiteral)[N]) const
{
return IsGreater(theLiteral);
}
//=================================================================================================
inline TCollection_AsciiString TCollection_AsciiString::operator+(const char theOther) const
{
return Cat(theOther);
}
//=================================================================================================
inline int TCollection_AsciiString::FirstLocationInSet(const TCollection_AsciiString& theSet,
const int theFromIndex,
const int theToIndex) const
{
return FirstLocationInSet(theSet.ToCString(), theSet.Length(), theFromIndex, theToIndex);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline int TCollection_AsciiString::FirstLocationInSet(const std::string_view& theSet,
const int theFromIndex,
const int theToIndex) const
{
return FirstLocationInSet(theSet.data(),
static_cast<int>(theSet.size()),
theFromIndex,
theToIndex);
}
#endif
//=================================================================================================
template <std::size_t N>
inline int TCollection_AsciiString::FirstLocationInSet(const char (&theLiteral)[N],
const int theFromIndex,
const int theToIndex) const
{
return FirstLocationInSet(theLiteral, static_cast<int>(N - 1), theFromIndex, theToIndex);
}
//=================================================================================================
inline int TCollection_AsciiString::FirstLocationNotInSet(const TCollection_AsciiString& theSet,
const int theFromIndex,
const int theToIndex) const
{
return FirstLocationNotInSet(theSet.ToCString(), theSet.Length(), theFromIndex, theToIndex);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline int TCollection_AsciiString::FirstLocationNotInSet(const std::string_view& theSet,
const int theFromIndex,
const int theToIndex) const
{
return FirstLocationNotInSet(theSet.data(),
static_cast<int>(theSet.size()),
theFromIndex,
theToIndex);
}
#endif
//=================================================================================================
template <std::size_t N>
inline int TCollection_AsciiString::FirstLocationNotInSet(const char (&theLiteral)[N],
const int theFromIndex,
const int theToIndex) const
{
return FirstLocationNotInSet(theLiteral, static_cast<int>(N - 1), theFromIndex, theToIndex);
}
//=================================================================================================
inline bool TCollection_AsciiString::IsDifferent(const char* const theString,
const int theLength) const
{
return !IsEqual(theString, theLength);
}
//=================================================================================================
inline TCollection_AsciiString TCollection_AsciiString::operator+(
const TCollection_AsciiString& theOther) const
{
return Cat(theOther);
}
//=================================================================================================
inline TCollection_AsciiString TCollection_AsciiString::operator+(
const char* const theCString) const
{
return Cat(theCString);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline TCollection_AsciiString TCollection_AsciiString::operator+(
const std::string_view& theStringView) const
{
return Cat(theStringView);
}
#endif
//=================================================================================================
inline TCollection_AsciiString& TCollection_AsciiString::operator=(
const TCollection_AsciiString& theOther)
{
Copy(theOther);
return *this;
}
//=================================================================================================
inline TCollection_AsciiString& TCollection_AsciiString::operator=(
TCollection_AsciiString&& theOther) noexcept
{
Move(std::forward<TCollection_AsciiString>(theOther));
return *this;
}
//=================================================================================================
inline bool TCollection_AsciiString::operator==(const TCollection_AsciiString& theOther) const
{
return IsEqual(theOther);
}
//=================================================================================================
inline bool TCollection_AsciiString::operator==(const char* const theCString) const
{
return IsEqual(theCString);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::operator==(const std::string_view& theStringView) const
{
return IsEqual(theStringView);
}
#endif
//=================================================================================================
inline bool TCollection_AsciiString::operator!=(const TCollection_AsciiString& theOther) const
{
return IsDifferent(theOther);
}
//=================================================================================================
inline bool TCollection_AsciiString::operator!=(const char* const theCString) const
{
return IsDifferent(theCString);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::operator!=(const std::string_view& theStringView) const
{
return IsDifferent(theStringView);
}
#endif
//=================================================================================================
inline bool TCollection_AsciiString::operator<(const TCollection_AsciiString& theOther) const
{
return IsLess(theOther);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::operator<(const std::string_view& theStringView) const
{
return IsLess(theStringView);
}
#endif
//=================================================================================================
inline bool TCollection_AsciiString::operator>(const TCollection_AsciiString& theOther) const
{
return IsGreater(theOther);
}
//=================================================================================================
inline bool TCollection_AsciiString::operator>(const char* const theCString) const
{
return IsGreater(theCString);
}
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline bool TCollection_AsciiString::operator>(const std::string_view& theStringView) const
{
return IsGreater(theStringView);
}
#endif
//=================================================================================================
#if Standard_CPP17_OR_HIGHER
inline TCollection_AsciiString::TCollection_AsciiString(const std::string_view& theStringView)
: TCollection_AsciiString(theStringView.data(), static_cast<int>(theStringView.size()))
{
}
#endif
//=================================================================================================
inline TCollection_AsciiString::TCollection_AsciiString(const char* const theMessage)
: TCollection_AsciiString(theMessage, theMessage ? static_cast<int>(strlen(theMessage)) : 0)
{
}
//=================================================================================================
template <std::size_t N>
inline TCollection_AsciiString::TCollection_AsciiString(const char (&theLiteral)[N])
: TCollection_AsciiString(theLiteral, static_cast<int>(strlen(theLiteral)))
{
}
f2929057eThis file is pinned to the selected release. Download the original to open it in your design tool.