43#ifndef WDL_STRING_IMPL_ONLY
47 #ifdef WDL_STRING_INTF_ONLY
48 void Set(
const char *str,
int maxlen=0);
50 void Append(
const char *str,
int maxlen=0);
53 void Insert(
const char *str,
int position,
int maxlen=0);
55 #ifdef WDL_STRING_FASTSUB_DEFINED
56 bool SetLen(
int length,
bool resizeDown=
false,
char fillchar=
' ');
72 const char *
Get()
const {
return m_hb.GetSize()?(
char*)
m_hb.Get():
""; }
74 #ifdef WDL_STRING_FASTSUB_DEFINED
75 int GetLength()
const {
int a = m_hb.
GetSize();
return a>0?
a-1:0; }
78 void SetRaw(
const char *str,
int len) {
__doSet(0,str,len,0); }
80 void InsertRaw(
const char *str,
int position,
int ilen)
84 else if (position>srclen)
position=srclen;
85 if (ilen>0)
__doSet(position,str,ilen,srclen-position);
91 if (
m_hb.GetSize())
return (
char *)
m_hb.Get();
92 static char c;
c=0;
return &
c;
100 if (initial)
Set(initial,initial_len);
107#ifndef WDL_STRING_INTF_ONLY
108 #ifdef WDL_STRING_IMPL_ONLY
109 #define WDL_STRING_FUNCPREFIX WDL_String::
110 #define WDL_STRING_DEFPARM(x)
112 #define WDL_STRING_FUNCPREFIX
113 #define WDL_STRING_DEFPARM(x) =(x)
121 if (maxlen>0)
while (
s < maxlen && str[
s])
s++;
122 else s=(
int)strlen(str);
129 #ifdef WDL_STRING_FASTSUB_DEFINED
131 if (maxlen>0 && maxlen<
s)
s=maxlen;
144 if (maxlen>0)
while (
s < maxlen && str[
s])
s++;
145 else s=(
int)strlen(str);
153 #ifdef WDL_STRING_FASTSUB_DEFINED
155 if (maxlen>0 && maxlen<
s)
s=maxlen;
165 int l=
m_hb.GetSize()-1;
166 char *
p=(
char *)
m_hb.Get();
167 if (
l<0 || !*
p || position < 0 || position >=
l)
return;
168 if (position+len >
l) len=
l-position;
171 memmove(
p+position,
p+position+len,
l-position-len+1);
172 m_hb.Resize(
l+1-len,
false);
181 if (maxlen>0)
while (ilen < maxlen && str[ilen]) ilen++;
182 else ilen=(
int)strlen(str);
186 if (position<0) position=0;
187 else if (position>srclen) position=srclen;
188 if (ilen>0)
__doSet(position,str,ilen,srclen-position);
193 #ifdef WDL_STRING_FASTSUB_DEFINED
195 if (maxlen>0 && maxlen<ilen) ilen=maxlen;
197 const int srclen =
m_hb.GetSize()>0 ?
m_hb.GetSize()-1 : 0;
198 if (position<0) position=0;
199 else if (position>srclen) position=srclen;
200 if (ilen>0)
__doSet(position,str->
Get(),ilen,srclen-position);
212 #ifdef WDL_STRING_FASTSUB_DEFINED
213 int osz =
m_hb.GetSize()-1;
220 #ifdef WDL_STRING_FASTSUB_DEFINED
221 const int fill =
length-osz;
222 if (fill > 0) memset(
b+osz,fillchar,fill);
233 char *
b= (
char*)
m_hb.ResizeOK(offs+maxlen+1,
false);
240 int written = _vsnprintf(
b, maxlen+1,
fmt, arglist);
241 if (written < 0 || written>=maxlen)
b[written=
b[0]?maxlen:0]=0;
243 int written = vsnprintf(
b, maxlen+1,
fmt, arglist);
244 if (written > maxlen) written=maxlen;
247 m_hb.Resize(offs + written + 1,
false);
270 if (minlen<0) minlen=0;
271 char *
b = (
char *)
m_hb.Get();
273 for (
i = maxlen-4;
i >= minlen; --
i)
278 m_hb.Resize(
i+4,
false);
285 m_hb.Resize(maxlen,
false);
291 const char *
s =
Get();
298 const char *
s =
Get();
300 const char *
p = endp - 1;
303 if (*
p ==
'.')
return p;
310 const char *str =
Get();
329 const char *str =
Get();
337 if (keepTrailingSlash) ++pos;
349 const char *str =
Get();
353 char c = str[
l - cnt];
357 if (cnt > 0)
SetLen(
l + 1 - cnt);
360#ifndef WDL_STRING_IMPL_ONLY
366 if (len==0 && !trailkeep && !offs)
368 #ifdef WDL_STRING_FREE_ON_CLEAR
371 char *
p = (
char *)
m_hb.Resize(1,
false);
375 else if (len>0 && offs >= 0)
377 const int oldsz =
m_hb.GetSize();
378 const int newsz=offs+len+trailkeep+1;
379 const int growamt = newsz-oldsz;
382 const char *oldb = (
const char *)
m_hb.Get();
383 const char *newb = (
const char *)
m_hb.Resize(newsz,
false);
386 if (str && newb != oldb && str >= oldb && str < oldb+oldsz) str = newb + (str - oldb);
389 if (
m_hb.GetSize() >= newsz)
391 char *newbuf = (
char *)
m_hb.Get();
392 if (trailkeep>0) memmove(newbuf+offs+len,newbuf+offs,trailkeep);
393 if (str) memmove(newbuf+offs,str,len);
397 if (growamt < 0)
m_hb.Resize(newsz,
false);
402 #undef WDL_STRING_FUNCPREFIX
403 #undef WDL_STRING_DEFPARM
406#ifndef WDL_STRING_IMPL_ONLY
409 #ifdef WDL_STRING_INTF_ONLY
410 void __doSet(
int offs,
const char *str,
int len,
int trailkeep);
417#ifndef WDL_STRING_FASTSUB_DEFINED
419#define WDL_STRING_FASTSUB_DEFINED
420#define WDL_String WDL_FastString
422#undef WDL_STRING_FASTSUB_DEFINED
uint8_t a
Definition Spc_Cpu.h:141
int GetSize() const
Definition heapbuf.h:57
const char * Get() const
Definition wdlstring.h:72
bool WDL_STRING_FUNCPREFIX remove_fileext()
Definition wdlstring.h:308
WDL_HeapBuf m_hb
Definition wdlstring.h:413
void WDL_STRING_FUNCPREFIX Set(const char *str, int maxlen WDL_STRING_DEFPARM(0))
Definition wdlstring.h:116
int WDL_STRING_FUNCPREFIX remove_trailing_dirchars()
Definition wdlstring.h:346
void WDL_STRING_FUNCPREFIX SetAppendFormattedArgs(bool append, int maxlen, const char *fmt, va_list arglist)
Definition wdlstring.h:230
void WDL_STRING_FUNCPREFIX Append(const WDL_String *str, int maxlen WDL_STRING_DEFPARM(0))
Definition wdlstring.h:151
void WDL_STRING_FUNCPREFIX Set(const WDL_String *str, int maxlen WDL_STRING_DEFPARM(0))
Definition wdlstring.h:127
SetAppendFormattedArgs(true, maxlen, fmt, arglist)
void WDL_STRING_FUNCPREFIX Insert(const WDL_String *str, int position, int maxlen WDL_STRING_DEFPARM(0))
Definition wdlstring.h:191
WDL_String(int hbgran)
Definition wdlstring.h:97
const char *WDL_STRING_FUNCPREFIX get_filepart() const
Definition wdlstring.h:289
void const char * fmt
Definition wdlstring.h:250
WDL_String(const WDL_String *s)
Definition wdlstring.h:103
void WDL_STRING_FUNCPREFIX Ellipsize(int minlen, int maxlen)
Definition wdlstring.h:266
char WDL_STRING_FUNCPREFIX remove_filepart(bool keepTrailingSlash WDL_STRING_DEFPARM(false))
Definition wdlstring.h:326
SetAppendFormattedArgs(false, maxlen, fmt, arglist)
const char *WDL_STRING_FUNCPREFIX get_fileext() const
Definition wdlstring.h:296
WDL_String(const char *initial=NULL, int initial_len=0)
Definition wdlstring.h:98
WDL_String(const WDL_String &s)
Definition wdlstring.h:102
bool WDL_STRING_FUNCPREFIX SetLen(int length, bool resizeDown WDL_STRING_DEFPARM(false))
Definition wdlstring.h:206
~WDL_String()
Definition wdlstring.h:104
char * Get()
Definition wdlstring.h:89
int GetLength() const
Definition wdlstring.h:94
void const char va_start(arglist, fmt)
void WDL_STRING_FUNCPREFIX Insert(const char *str, int position, int maxlen WDL_STRING_DEFPARM(0))
Definition wdlstring.h:176
void WDL_VARARG_WARN(printf, 3, 4) WDL_STRING_FUNCPREFIX AppendFormatted(int maxlen
void WDL_STRING_FUNCPREFIX Append(const char *str, int maxlen WDL_STRING_DEFPARM(0))
Definition wdlstring.h:139
void WDL_STRING_FUNCPREFIX DeleteSub(int position, int len)
Definition wdlstring.h:163
void WDL_STRING_FUNCPREFIX __doSet(int offs, const char *str, int len, int trailkeep)
Definition wdlstring.h:363
int * l
Definition inflate.c:1579
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
#define WDL_HEAPBUF_TRACEPARM(x)
Definition heapbuf.h:42
QPoint position(const QDropEvent *de)
position is a backwards-compatible adapter for QDropEvent::position and pos functions.
Definition DeprecationHelper.h:47
png_uint_32 length
Definition png.c:2247
uch * p
Definition crypt.c:594
return c
Definition crypt.c:175
memcpy(hh, h, RAND_HEAD_LEN)
typedef int(UZ_EXP MsgFn)()
#define WDL_STRING_DEFPARM(x)
Definition wdlstring.h:113
#define WDL_STRING_FASTSUB_DEFINED
Definition wdlstring.h:419
#define WDL_STRING_FUNCPREFIX
Definition wdlstring.h:112
#define WDL_VARARG_WARN(x, n, s)
Definition wdltypes.h:86
#define WDL_IS_DIRCHAR(x)
Definition wdltypes.h:129
#define const
Definition zconf.h:137