Major refractor

- Add regex search and replace
- Add chunk iterator + update line iterator.
- Cleanup/formatting.
This commit is contained in:
2026-07-29 04:50:22 +01:00
parent d8a59a5f5c
commit 15f1456fac
16 changed files with 759 additions and 256 deletions
+23 -10
View File
@@ -5,18 +5,15 @@
int main() {
const char *text_o =
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqr\n"
"st\n"
"uv\n"
"wx\n"
"yzabcdefghijklmnopqrstuvwxyz\n";
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
uint32_t len = strlen(text_o);
char *text = strdup(text_o);
Vase vase = Vase(text, len);
vase.insert(14, "gr\ntt", 5);
vase.insert(1, "bcgr\ntt", 5);
vase.insert(2, "cgr\ntt", 5);
vase.insert(58, "gr\ntt", 5);
vase.insert(100, "gr\ntt", 5);
vase.insert(20, "gr\ntt", 5);
@@ -26,17 +23,33 @@ int main() {
vase.type(7, '3');
vase.type(8, '4');
vase.erase(vase.offset_of(7, 3), -3);
vase.erase(offset_of(vase.root, 7, 3), -3);
print_shard(vase.root);
std::vector<RegexMatch> matches = regex_search(vase.root, "a(.)c", 0, vase.length(), PCRE2_MULTILINE, false);
print_regex(matches);
std::cout << "\n\n";
std::cout << (int)vase.offset_of(6, 0) << "\n\n";
std::cout << "\n\n"
<< vase.to_string();
LineIterator it(vase.root, 3);
// supports gisxUn
vase.regex_search_replace("a(.)c", 0, vase.length(), "|$1|", "g");
/*print_shard(vase.root);
LineIterator it(vase.root, 0);
std::string line;
while (it.next(line))
std::cout << line << "\n";
std::cout << "\n\n";
ChunkIterator it2(vase.root);
const char *data;
uint32_t length;
while (it2.next(&data, &length))
std::cout << std::string(data, length) << "\n|\n";*/
std::cout << "\n\n"
<< vase.to_string();