int main() { // test for small append std::string str1 = "abc"; std::string str2 = "def"; const char* str3 = "efg"; char c4 = 'h'; const char* str5 = "ijklmn"; VarString vs1; vs1.append(str1).append(str2).append(str3).append(c4).append(str5, 2); assert(vs1.toString() == str1 + str2 + str3 + c4 + "ij"); // test for massive append std::string answer = ""; int round = 100; int min = 200; int max = 2000; int round_id = 0; VarString vs2; while(round_id < round) { std::string str; if (round_id % 2) { str = random_string(rand() % (max - min) + min); } else { str = random_string(rand() % (min - 10) + 10); } vs2.append(str); answer += str; round_id ++; } assert(vs2.toString() == answer); // test for other function { std::string str1 = random_string(10); std::string str2 = str1.substr(0, str1.size() - 1); VarString vs; vs.append(str1); vs.drop(); assert(vs.toString() == str2); vs.clear(); vs.append(str1); int len = 5; std::string str3 = str1.substr(0, str1.size() - len); vs.drop(len); assert(vs.toString() == str3); } std::cout << VarString::format("This is an integer %d", 2) << std::endl; }
// // VarString::PointAt // // Setup/change to point to the VarString 'var', which MUST be setup // void VarString::PointAt(VarString &var) { // Make sure target is valid if (!var.Alive()) { ERR_FATAL(("Attempt to point a VarString at an invalid VarPtr")) } // Get the target item item = var.item; }
_Array<String>& String::Split(_Page* _rp, char c) { _Array<String>* ret = new(_rp) _Array<String>(); VarString* part = 0; for (size_t _i = 0; _i < length; _i++) { char currentChar = this->charAt(_i); if (currentChar == c) { if (part) { ret->push(new(_rp) String(part)); part = 0; } } else { if (!part) part = new(_rp) VarString(); part->append(this->charAt(_i)); } } if (part) ret->push(new(_rp) String(part)); return *ret; }