Various changes and additions. It's probably a lot worse now.
This commit is contained in:
parent
58d14167a7
commit
94060a78c1
48
utf8.h
48
utf8.h
@ -60,7 +60,18 @@ struct string32 {
|
|||||||
size += c32.size;
|
size += c32.size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
string32() {}
|
string32(std::string s) {
|
||||||
|
char* sd = (char*)s.c_str();
|
||||||
|
while (sd[0]) {
|
||||||
|
char32 c32 = char32(&sd);
|
||||||
|
cs.push_back(c32);
|
||||||
|
size += c32.size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
string32() {
|
||||||
|
// cs.push_back(char32(""));
|
||||||
|
// size++;
|
||||||
|
}
|
||||||
int length() const {
|
int length() const {
|
||||||
return cs.size();
|
return cs.size();
|
||||||
}
|
}
|
||||||
@ -88,6 +99,11 @@ struct string32 {
|
|||||||
toReturn += s;
|
toReturn += s;
|
||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
|
string32 operator+(char* s) {
|
||||||
|
string32 toReturn = *this;
|
||||||
|
toReturn += s;
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
bool operator==(string32 s) {
|
bool operator==(string32 s) {
|
||||||
for (int i(0);i<s.cs.size();i++)
|
for (int i(0);i<s.cs.size();i++)
|
||||||
if (s.cs[i]!=cs[i])
|
if (s.cs[i]!=cs[i])
|
||||||
@ -105,7 +121,7 @@ struct string32 {
|
|||||||
if (copyOfSelf.cs.at(index) == find.cs.at(havematched))
|
if (copyOfSelf.cs.at(index) == find.cs.at(havematched))
|
||||||
havematched++;
|
havematched++;
|
||||||
else
|
else
|
||||||
havematched=0;
|
havematched = 0;
|
||||||
if (havematched == findsize) {
|
if (havematched == findsize) {
|
||||||
index -= findsize-1;
|
index -= findsize-1;
|
||||||
copyOfSelf.cs.erase(copyOfSelf.cs.begin()+index, copyOfSelf.cs.begin()+index+findsize);
|
copyOfSelf.cs.erase(copyOfSelf.cs.begin()+index, copyOfSelf.cs.begin()+index+findsize);
|
||||||
@ -116,6 +132,28 @@ struct string32 {
|
|||||||
return copyOfSelf;
|
return copyOfSelf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool replaceSelf(string32 find, string32 with) {
|
||||||
|
int havematched(0);
|
||||||
|
int findsize = find.cs.size();
|
||||||
|
for (int index(0); index < cs.size(); index++) {
|
||||||
|
if (cs.at(index) == find.cs.at(havematched))
|
||||||
|
havematched++;
|
||||||
|
else
|
||||||
|
havematched = 0;
|
||||||
|
if (havematched == findsize) {
|
||||||
|
index -= findsize-1;
|
||||||
|
cs.erase(cs.begin()+index, cs.begin()+index+findsize);
|
||||||
|
cs.insert(cs.begin()+index, with.cs.begin(), with.cs.end());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void replaceSelfAll(string32 find, string32 with) {
|
||||||
|
while (replaceSelf(find, with));
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<string32> split(string32 delim) {
|
std::vector<string32> split(string32 delim) {
|
||||||
std::vector<string32> toReturn;
|
std::vector<string32> toReturn;
|
||||||
string32 temporary, throwaway;
|
string32 temporary, throwaway;
|
||||||
@ -154,6 +192,12 @@ struct string32 {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
string32 operator+(char* s1, string32 s2) {
|
||||||
|
string32 toReturn = s1;
|
||||||
|
toReturn += s2;
|
||||||
|
return toReturn;
|
||||||
|
}
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& stream, const string32& s32) {
|
std::ostream& operator<<(std::ostream& stream, const string32& s32) {
|
||||||
for (int i=0;i<s32.length();i++)
|
for (int i=0;i<s32.length();i++)
|
||||||
stream << s32[i];
|
stream << s32[i];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user