ezEngine  Milestone 7
StringView_inl.h
1 #pragma once
2 
4 {
5  m_pStart = nullptr;
6  m_pEnd = nullptr;
7 }
8 
9 inline ezStringView::ezStringView(const char* pStart)
10 {
11  m_pStart = pStart;
12  m_pEnd = pStart + ezStringUtils::GetStringElementCount(pStart);
13 }
14 
15 inline ezStringView::ezStringView(const char* pStart, const char* pEnd)
16 {
17  EZ_ASSERT_DEV(pStart <= pEnd, "It should start BEFORE it ends.");
18 
19  m_pStart = pStart;
20  m_pEnd = pEnd;
21 }
22 
24 {
25  if (!IsValid())
26  return;
27 
29 }
30 
31 inline void ezStringView::operator+=(ezUInt32 d)
32 {
33  while (d > 0)
34  {
35  ++(*this);
36  --d;
37  }
38 }
39 
40 inline ezUInt32 ezStringView::GetCharacter() const
41 {
42  if (!IsValid())
43  return 0;
44 
45  return ezUnicodeUtils::ConvertUtf8ToUtf32(m_pStart);
46 }
47 
48 inline bool ezStringView::IsValid() const
49 {
50  return (m_pStart != nullptr) && (m_pStart < m_pEnd);
51 }
52 
53 inline void ezStringView::SetStartPosition(const char* szCurPos)
54 {
55  EZ_ASSERT_DEV((szCurPos >= m_pStart) && (szCurPos <= m_pEnd), "New start position must still be inside the view's range.");
56 
57  m_pStart = szCurPos;
58 }
59 
60 inline void ezStringView::Shrink(ezUInt32 uiShrinkCharsFront, ezUInt32 uiShrinkCharsBack)
61 {
62  while (IsValid() && (uiShrinkCharsFront > 0))
63  {
64  ezUnicodeUtils::MoveToNextUtf8(m_pStart, 1);
65  --uiShrinkCharsFront;
66  }
67 
68  while (IsValid() && (uiShrinkCharsBack > 0))
69  {
71  --uiShrinkCharsBack;
72  }
73 }
74 
75 inline bool ezStringView::IsEqual(const ezStringView& sOther) const
76 {
77  return ezStringUtils::IsEqualN(m_pStart, sOther.m_pStart, static_cast<ezUInt32>(-1), m_pEnd, sOther.m_pEnd);
78 }
79 
80 inline bool ezStringView::IsEqual_NoCase(const ezStringView& sOther) const
81 {
82  return ezStringUtils::IsEqualN_NoCase(m_pStart, sOther.m_pStart, static_cast<ezUInt32>(-1), m_pEnd, sOther.m_pEnd);
83 }
84 
85 inline void ezStringView::Trim(const char* szTrimChars)
86 {
87  return Trim(szTrimChars, szTrimChars);
88 }
89 
90 inline void ezStringView::Trim(const char* szTrimCharsStart, const char* szTrimCharsEnd)
91 {
92  if (IsValid())
93  ezStringUtils::Trim(m_pStart, m_pEnd, szTrimCharsStart, szTrimCharsEnd);
94 }