libcp/src/string.cpp

52 lines
940 B
C++

#include <string.h>
#include <string.hpp>
String::String(const char* str) {
this->_chars = Vec<char>::from_ptr((char*)str, strlen(str));
}
size_t String::len() {
return this->_chars.len();
}
void String::clear() {
this->_chars.clear();
}
Vec<char>& String::chars() {
return this->_chars;
}
String String::fmt_to_str() {
return this->clone();
}
char* const String::as_cstr() {
return this->_chars.to_ptr();
}
void String::push(char c) {
this->_chars.push(c);
}
void String::push_str(String& str) {
Vec<char> chrs = str.chars();
for (size_t i = 0; i < chrs.len(); i++) {
// SAFETY: Always Valid
this->push(*chrs.nth(i).unwrap());
}
}
void String::push_str(const char* str) {
for (size_t i = 0; i < strlen(str); i++) {
this->push(str[i]);
}
}
// IMPL: Clone
String String::clone() {
String s = String();
s._chars = this->_chars.clone();
return s;
}