52 lines
940 B
C++
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;
|
|
} |