added more functions to StrBase

This commit is contained in:
hyung-hwan 2015-03-17 16:06:07 +00:00
parent b4fd70b1e4
commit c6d29bc9b6
5 changed files with 460 additions and 412 deletions

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,7 @@
#include <qse/cmn/StrBase.hpp> #include <qse/cmn/StrBase.hpp>
#include <qse/cmn/str.h> #include <qse/cmn/str.h>
#include <qse/cmn/mem.h>
///////////////////////////////// /////////////////////////////////
QSE_BEGIN_NAMESPACE(QSE) QSE_BEGIN_NAMESPACE(QSE)
@ -36,24 +37,31 @@ QSE_BEGIN_NAMESPACE(QSE)
struct WcStringOpset struct WcStringOpset
{ {
qse_size_t copy (qse_wchar_t* dst, const qse_wchar_t* src, qse_size_t ssz) qse_size_t copy (qse_wchar_t* dst, const qse_wchar_t* src, qse_size_t ssz) const
{ {
return qse_wcsncpy(dst, src, ssz); return qse_wcsncpy(dst, src, ssz);
} }
qse_size_t move (qse_wchar_t* dst, const qse_wchar_t* src, qse_size_t ssz) const
{
// this one doesn't insert terminating null
qse_memmove (dst, src, ssz * QSE_SIZEOF(*dst));
return ssz;
}
// compare two strings of the same length // compare two strings of the same length
int compare (const qse_wchar_t* str1, const qse_wchar_t* str2, qse_size_t len) int compare (const qse_wchar_t* str1, const qse_wchar_t* str2, qse_size_t len) const
{ {
return qse_wcsxncmp(str1, len, str2, len); return qse_wcsxncmp(str1, len, str2, len);
} }
// compare a length-bound string with a null-terminated string. // compare a length-bound string with a null-terminated string.
int compare (const qse_wchar_t* str1, qse_size_t len, const qse_wchar_t* str2) int compare (const qse_wchar_t* str1, qse_size_t len, const qse_wchar_t* str2) const
{ {
return qse_wcsxcmp(str1, len, str2); return qse_wcsxcmp(str1, len, str2);
} }
int length (const qse_wchar_t* str) qse_size_t getLength (const qse_wchar_t* str) const
{ {
return qse_strlen(str); return qse_strlen(str);
} }

View File

@ -139,7 +139,7 @@ int main ()
a.insert (0, 10); a.insert (0, 10);
a.insert (0, 20); a.insert (0, 20);
a.insert (0, 30); a.insert (0, 30);
const int& t = a[2]; const int& t = a[2u];
printf ("%lu\n", (unsigned long int)a.getIndex(t)); printf ("%lu\n", (unsigned long int)a.getIndex(t));

View File

@ -141,7 +141,7 @@ int main ()
h.insert (buf); h.insert (buf);
} }
for (int i = 0; i < h.getSize(); i++) for (qse_size_t i = 0; i < h.getSize(); i++)
{ {
printf ("%05d %s\n", (int)h.getIndex(h[i]), h[i].c_str()); printf ("%05d %s\n", (int)h.getIndex(h[i]), h[i].c_str());
} }
@ -150,7 +150,7 @@ int main ()
while (!h.isEmpty()) while (!h.isEmpty())
{ {
printf ("%s\n", h[0].c_str()); printf ("%s\n", h[0u].c_str());
h.remove (0); h.remove (0);
} }
printf ("----------------\n"); printf ("----------------\n");
@ -181,9 +181,9 @@ int main ()
{ {
Container c; Container c;
StrList::Node* node2, * node14; StrList::Node* node2, * node14;
for (int i = 0; i < 20; i++) for (qse_size_t i = 0; i < 20; i++)
{ {
sprintf (buf, "hello %d", i); sprintf (buf, "hello %d", (int)i);
//c.insert (buf); //c.insert (buf);

View File

@ -13,7 +13,26 @@ void t1 ()
QSE::String y (x); QSE::String y (x);
*z = y; *z = y;
qse_printf (QSE_T("[%s]\n"), x.getBuffer());
//z->setCharAt (0, QSE_T('Q'));
//z->prepend (QSE_T("ok."));
z->append (*z);
for (int i = 0; i < 80; i++)
{
z->prepend (QSE_T("ok."));
z->insert (10, QSE_T("XXX"));
}
z->update (10, 2, QSE_T("ZZZZ"));
//z->update (QSE_T("QQQ"));
z->replace (QSE_T("XX"), QSE_T("^"));
//z->invert();
qse_printf (QSE_T("[%s] [%c] capa=%d len=%d\n"), x.getBuffer(), x[0], (int)x.getCapacity(), (int)x.getLength());
qse_printf (QSE_T("[%s] [%c] capa=%d len=%d\n"), z->getBuffer(), (*z)[0], (int)z->getCapacity(), (int)z->getLength());
qse_printf (QSE_T("%d %d\n"), (int)z->findIndex (0, QSE_T("K")), (int)z->findLastIndex (0, QSE_T("K")));
} }
qse_printf (QSE_T("-----------------\n")); qse_printf (QSE_T("-----------------\n"));