Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
project(eui CXX ASM)

add_library(eui OBJECT
include/euiControlBase.h
file(GLOB_RECURSE HEADER_FILES "include/*.h")
file(GLOB_RECURSE SRC "src/*.cpp")

src/euiControlBase.cpp
add_library(eui OBJECT
${HEADER_FILES}
${SRC}
)

target_compile_options(eui PRIVATE -fno-exceptions)
Expand All @@ -15,3 +17,8 @@ if(NOT TARGET agl)
add_subdirectory(../agl)
endif()
target_link_libraries(eui PUBLIC agl)
if(NOT TARGET sead)
add_subdirectory(../sead)
endif()

target_link_libraries(eui PUBLIC sead)
42 changes: 42 additions & 0 deletions include/message/euiMessageString.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#pragma once

#include <basis/seadTypes.h>
#include <prim/seadSafeString.h>

namespace eui {

class MessageString {
public:
class iterator {
public:
iterator(const char16_t* ptr, u32 index = 0) : mPtr(ptr), mIndex(index) {}


private:
const char16_t* mPtr;
u32 mIndex;
};

MessageString();
MessageString(s32 len, const char16_t* str);
MessageString(const char16_t* str, const char16_t* str2);
MessageString(const sead::SafeStringBase<char16_t>& str);
MessageString(const MessageString& messageStr);

void operator=(const MessageString& str);
const char16_t* operator[](s32 i) const;

iterator begin() const;
iterator end() const;
iterator toIterator(s32 len) const;
bool tryMakeTagStrippedString(sead::BufferedSafeStringBase<char16_t>* str) const;

const char16_t* getStr() const { return mStr; }
s32 getStrLen() const { return mStrLen; }

private:
const char16_t* mStr;
u32 mStrLen;
};

} // namespace eui
60 changes: 60 additions & 0 deletions src/message/euiMessageString.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#include "message/euiMessageString.h"

#include <prim/seadSafeString.h>

namespace eui {

MessageString::MessageString() {
mStr = nullptr;
mStrLen = 0;
}

MessageString::MessageString(s32 len, const char16_t* str) {
mStr = str;
mStrLen = len;
}

MessageString::MessageString(const char16_t* str, const char16_t* str2) {
mStr = str;
mStrLen = (str2 - str);
}

MessageString::MessageString(const sead::SafeStringBase<char16_t>& str) {
mStr = str.cstr();
mStrLen = str.calcLength();
}

MessageString::MessageString(const MessageString& str) {
mStr = str.getStr();
mStrLen = str.getStrLen();
}

void MessageString::operator=(const MessageString& str) {
mStr = str.getStr();
mStrLen = str.getStrLen();
}

const char16_t* MessageString::operator[](s32 i) const {
return mStrLen <= i ? &mStr[0] : &mStr[i];
}

MessageString::iterator MessageString::begin() const {
return { mStr };
}

MessageString::iterator MessageString::end() const {
return {
mStr,
mStrLen
};
}

MessageString::iterator MessageString::toIterator(s32 len) const {
u32 size = mStrLen <= len ? mStrLen : len;
return {
mStr,
size
};
}

} // namespace eui