[glacier] Create lib with scaffolding string class.
This commit is contained in:
parent
172bf51db7
commit
859fbf66da
|
@ -1,3 +1,4 @@
|
||||||
|
add_subdirectory(glacier)
|
||||||
add_subdirectory(libc)
|
add_subdirectory(libc)
|
||||||
add_subdirectory(libcxx)
|
add_subdirectory(libcxx)
|
||||||
add_subdirectory(mammoth)
|
add_subdirectory(mammoth)
|
||||||
|
|
|
@ -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}/..")
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue