OpenBarnyard
 
Loading...
Searching...
No Matches
T2FormatString< Size, TStringTraits > Class Template Reference

#include <T2String.h>

Public Types

using StringTraits = TStringTraits
 
using CharTraits = typename StringTraits::CharTraits
 
using CharType = typename StringTraits::CharType
 
using UCharType = typename StringTraits::UCharType
 

Public Member Functions

 TSTATICASSERT (Size > 0)
 
constexpr T2FormatString ()
 
 T2FormatString (const CharType *a_szString)
 
void Copy (const CharType *a_szString)
 
TINT ParseLine (const CharType *a_szString, TINT a_uiSize=-1, TINT *a_pStringLength=nullptr, TBOOL a_bTrimStartSpaces=true, TBOOL a_bTrimEndSpaces=true)
 Parses a line from specified buffer and saves it.
 
void Format (const CharType *a_szFormat,...)
 
void FormatV (const CharType *a_szFormat, va_list a_Args)
 
void Append (const CharType *a_szString)
 
void Clear ()
 
TUINT Length ()
 
constexpr CharTypeGet ()
 
constexpr const CharTypeGet () const
 
constexpr CharTypeGet (TUINT a_uiIndex)
 
constexpr const CharTypeGet (TUINT a_uiIndex) const
 
constexpr CharTypeoperator[] (TUINT a_uiIndex)
 
constexpr const CharTypeoperator[] (TUINT a_uiIndex) const
 

Detailed Description

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
class T2FormatString< Size, TStringTraits >

Definition at line 85 of file T2String.h.

Member Typedef Documentation

◆ CharTraits

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
using T2FormatString< Size, TStringTraits >::CharTraits = typename StringTraits::CharTraits

Definition at line 91 of file T2String.h.

◆ CharType

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
using T2FormatString< Size, TStringTraits >::CharType = typename StringTraits::CharType

Definition at line 92 of file T2String.h.

◆ StringTraits

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
using T2FormatString< Size, TStringTraits >::StringTraits = TStringTraits

Definition at line 90 of file T2String.h.

◆ UCharType

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
using T2FormatString< Size, TStringTraits >::UCharType = typename StringTraits::UCharType

Definition at line 93 of file T2String.h.

Constructor & Destructor Documentation

◆ T2FormatString() [1/2]

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
T2FormatString< Size, TStringTraits >::T2FormatString ( )
inlineconstexpr

Definition at line 96 of file T2String.h.

97 {
98 m_szBuffer[ 0 ] = CharTraits::NullChar;
99 }

◆ T2FormatString() [2/2]

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
T2FormatString< Size, TStringTraits >::T2FormatString ( const CharType * a_szString)
inline

Definition at line 101 of file T2String.h.

102 {
103 Copy( a_szString );
104 }
void Copy(const CharType *a_szString)
Definition T2String.h:106

Member Function Documentation

◆ Append()

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
void T2FormatString< Size, TStringTraits >::Append ( const CharType * a_szString)
inline

Definition at line 189 of file T2String.h.

190 {
191 StringTraits::Concat( m_szBuffer, a_szString );
192 }

◆ Clear()

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
void T2FormatString< Size, TStringTraits >::Clear ( )
inline

Definition at line 194 of file T2String.h.

195 {
196 m_szBuffer[ 0 ] = CharTraits::NullChar;
197 }

◆ Copy()

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
void T2FormatString< Size, TStringTraits >::Copy ( const CharType * a_szString)
inline

Definition at line 106 of file T2String.h.

107 {
108 StringTraits::CopySafe( m_szBuffer, a_szString, Size );
109 }

◆ Format()

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
void T2FormatString< Size, TStringTraits >::Format ( const CharType * a_szFormat,
... )
inline

Definition at line 172 of file T2String.h.

173 {
175
177 StringTraits::FormatV( m_szBuffer, Size, a_szFormat, args );
178 va_end( args );
179
180 m_szBuffer[ Size - 1 ] = CharTraits::NullChar;
181 }

◆ FormatV()

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
void T2FormatString< Size, TStringTraits >::FormatV ( const CharType * a_szFormat,
va_list a_Args )
inline

Definition at line 183 of file T2String.h.

184 {
186 m_szBuffer[ Size - 1 ] = CharTraits::NullChar;
187 }

◆ Get() [1/4]

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
CharType * T2FormatString< Size, TStringTraits >::Get ( )
inlineconstexpr

Definition at line 204 of file T2String.h.

205 {
206 return m_szBuffer;
207 }

◆ Get() [2/4]

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
const CharType * T2FormatString< Size, TStringTraits >::Get ( ) const
inlineconstexpr

Definition at line 209 of file T2String.h.

210 {
211 return m_szBuffer;
212 }

◆ Get() [3/4]

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
CharType * T2FormatString< Size, TStringTraits >::Get ( TUINT a_uiIndex)
inlineconstexpr

Definition at line 214 of file T2String.h.

215 {
217 return &m_szBuffer[ a_uiIndex ];
218 }
#define TASSERT(X,...)
Definition Defines.h:138

◆ Get() [4/4]

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
const CharType * T2FormatString< Size, TStringTraits >::Get ( TUINT a_uiIndex) const
inlineconstexpr

Definition at line 220 of file T2String.h.

221 {
223 return &m_szBuffer[ a_uiIndex ];
224 }

◆ Length()

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
TUINT T2FormatString< Size, TStringTraits >::Length ( )
inline

Definition at line 199 of file T2String.h.

200 {
201 return StringTraits::Length( m_szBuffer );
202 }

◆ operator[]() [1/2]

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
CharType & T2FormatString< Size, TStringTraits >::operator[] ( TUINT a_uiIndex)
inlineconstexpr

Definition at line 226 of file T2String.h.

227 {
228 return *Get( a_uiIndex );
229 }
constexpr CharType * Get()
Definition T2String.h:204

◆ operator[]() [2/2]

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
const CharType & T2FormatString< Size, TStringTraits >::operator[] ( TUINT a_uiIndex) const
inlineconstexpr

Definition at line 231 of file T2String.h.

232 {
233 return *Get( a_uiIndex );
234 }

◆ ParseLine()

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
TINT T2FormatString< Size, TStringTraits >::ParseLine ( const CharType * a_szString,
TINT a_uiSize = -1,
TINT * a_pStringLength = nullptr,
TBOOL a_bTrimStartSpaces = true,
TBOOL a_bTrimEndSpaces = true )
inline

Parses a line from specified buffer and saves it.

Parameters
a_szStringbuffer to parse buffer
a_uiSizesize of the a_szString buffer
a_pStringLengthif not TNULL, string length is saved there
a_bTrimSpacesif TTRUE, removes spaces at the start and at the end
Returns
number of characters to skip in the buffer

Definition at line 119 of file T2String.h.

120 {
121 TINT uiPos = 0;
122 TINT uiStringPos = 0;
124
125 if ( a_uiSize == -1 )
127
128 while ( uiPos < Size && uiStringPos < a_uiSize && a_szString[ uiStringPos ] != '\0' )
129 {
130 if ( a_szString[ uiStringPos ] != '\n' )
131 {
132 // Trim spaced at the start of the string
134 {
136
137 if ( !bTextStarted )
138 {
139 uiStringPos++;
140 continue;
141 }
142 }
143
144 m_szBuffer[ uiPos++ ] = a_szString[ uiStringPos++ ];
145 }
146 else
147 {
148 break;
149 }
150 }
151
152 uiPos -= 1;
153
154 if ( a_bTrimEndSpaces )
155 {
156 while ( uiPos >= 0 && m_szBuffer[ uiPos ] != '\n' && CharTraits::IsSpace( (UCharType)m_szBuffer[ uiPos ] ) )
157 {
158 uiPos--;
159 }
160 }
161
162 m_szBuffer[ uiPos + 1 ] = CharTraits::NullChar;
163
164 if ( a_pStringLength )
165 {
166 *a_pStringLength = uiPos + 1;
167 }
168
169 return uiStringPos + 1;
170 }
typename StringTraits::UCharType UCharType
Definition T2String.h:93

◆ TSTATICASSERT()

template<TSIZE Size, typename TStringTraits = T2StringTraits<TCHAR>>
T2FormatString< Size, TStringTraits >::TSTATICASSERT ( Size ,
0  )

The documentation for this class was generated from the following file: