string brush

This commit is contained in:
2022-04-25 15:29:27 +03:00
parent 765ef7368e
commit 90afc369f0
5 changed files with 38 additions and 34 deletions

View File

@@ -82,8 +82,6 @@ const float PIString::ElideLeft = 0.f;
const float PIString::ElideCenter = .5f;
const float PIString::ElideRight = 1.f;
static const char * _PIString_empty_cc = "";
#ifndef CC_VC
# define pisprintf(f, v) char ch[256]; memset(ch, 0, 256); sprintf(ch, f, v); return PIString(ch);
@@ -252,6 +250,7 @@ void PIString::appendFromChars(const char * c, int s, const char * codepage) {
PIString PIString::fromConsole(const char * s) {
PIString ret;
if (!s) return ret;
if (s[0] != '\0') ret.appendFromChars(s, strlen(s), __sysoemname__);
return ret;
@@ -260,6 +259,7 @@ PIString PIString::fromConsole(const char * s) {
PIString PIString::fromSystem(const char * s) {
PIString ret;
if (!s) return ret;
if (s[0] != '\0') ret.appendFromChars(s, strlen(s), __syslocname__);
return ret;
}
@@ -267,6 +267,7 @@ PIString PIString::fromSystem(const char * s) {
PIString PIString::fromUTF8(const char * s) {
PIString ret;
if (!s) return ret;
if (s[0] != '\0') ret.appendFromChars(s, strlen(s), __utf8name__);
return ret;
}
@@ -331,10 +332,7 @@ PIString PIString::readableSize(llong bytes) {
void PIString::buildData(const char * cp) const {
//data_.clear();
if (data_) {
free(data_);
data_ = nullptr;
}
deleteData();
int sz = 0;
#ifdef PIP_ICU
UErrorCode e((UErrorCode)0);
@@ -395,6 +393,13 @@ void PIString::buildData(const char * cp) const {
}
void PIString::deleteData() const {
if (!data_) return;
free(data_);
data_ = nullptr;
}
void PIString::trimsubstr(int &st, int &fn) const {
for (int i = 0; i < length(); ++i) {
if (at(i) != ' ' && at(i) != '\t' && at(i) != '\n' && at(i) != '\r' && at(i) != char(12) && at(i) != uchar(0)) {
@@ -445,8 +450,9 @@ PIString & PIString::operator +=(const char * str) {
return *this;
}
PIString::~PIString() {
if(data_) free(data_);
deleteData();
}
@@ -1363,7 +1369,7 @@ PIString PIString::inBrackets(const PIChar start, const PIChar end) const {
//! \endcode
//! \~\sa \a dataConsole(), \a dataUTF8()
const char * PIString::data() const {
if (isEmpty()) return _PIString_empty_cc;
if (isEmpty()) return "";
buildData(__syslocname__);
return data_;
}
@@ -1381,7 +1387,7 @@ const char * PIString::data() const {
//! действителен до следующего вызова этого метода
//! \~\sa \a data(), \a dataUTF8()
const char * PIString::dataConsole() const {
if (isEmpty()) return _PIString_empty_cc;
if (isEmpty()) return "";
buildData(__sysoemname__ );
return data_;
}
@@ -1399,7 +1405,7 @@ const char * PIString::dataConsole() const {
//! действителен до следующего вызова этого метода
//! \~\sa \a data(), \a dataConsole()
const char * PIString::dataUTF8() const {
if (isEmpty()) return _PIString_empty_cc;
if (isEmpty()) return "";
buildData(__utf8name__);
return data_;
}
@@ -1417,11 +1423,8 @@ const char * PIString::dataUTF8() const {
//! действителен до следующего вызова этого метода
//! \~\sa \a dataConsole(), \a dataUTF8()
const char * PIString::dataAscii() const {
if (isEmpty()) return _PIString_empty_cc;
if (data_) {
free(data_);
data_ = nullptr;
}
if (isEmpty()) return "";
deleteData();
data_ = (char*)malloc(size()+1);
for (int i = 0; i < size_s(); ++i) {
data_[i] = uchar(at(i).ch);