[glacier] Create lib with scaffolding string class.

This commit is contained in:
Drew Galbraith 2023-06-21 14:42:23 -07:00
parent 172bf51db7
commit 859fbf66da
4 changed files with 62 additions and 0 deletions

View File

@ -1,3 +1,4 @@
add_subdirectory(glacier)
add_subdirectory(libc)
add_subdirectory(libcxx)
add_subdirectory(mammoth)

View File

@ -0,0 +1,6 @@
add_library(glacier STATIC
string/string.cpp)
target_include_directories(glacier
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..")

View File

@ -0,0 +1,37 @@
#include "string/string.h"
namespace glcr {
namespace {
uint64_t cstrlen(const char* cstr) {
uint64_t len = 0;
while (*cstr != '\0') {
cstr++;
len++;
}
return len;
}
} // namespace
String::String(const char* str) {
length_ = cstrlen(str);
cstr_ = new char[length_ + 1];
for (uint64_t i = 0; i <= length_; i++) {
cstr_[i] = str[i];
}
}
bool String::operator==(const String& other) {
if (other.length_ != length_) {
return false;
}
for (uint64_t i = 0; i < length_; i++) {
if (cstr_[i] != other.cstr_[i]) {
return false;
}
}
return true;
}
} // namespace glcr

View File

@ -0,0 +1,18 @@
#pragma once
#include <stdint.h>
namespace glcr {
class String {
public:
String(const char* cstr);
bool operator==(const String& str);
private:
char* cstr_;
uint64_t length_;
};
} // namespace glcr