diff options
Diffstat (limited to 'include/user/paf/common.h')
-rw-r--r-- | include/user/paf/common.h | 332 |
1 files changed, 259 insertions, 73 deletions
diff --git a/include/user/paf/common.h b/include/user/paf/common.h index e3ecda5..67d6e5e 100644 --- a/include/user/paf/common.h +++ b/include/user/paf/common.h @@ -10,27 +10,12 @@ namespace paf { - class String; - class WString; - namespace widget { class Widget; } - namespace common { - - enum CesFlags - { - AllowIllegalCode = 0x2, - AllowOutOfCodeRange = 0x4, - AllowInvalidEncode = 0x8, - AllowSrcBufferEnd = 0x10 - }; - - static paf::widget::Widget *WidgetStateTransition(SceFloat32 delay, paf::widget::Widget *widget, SceUInt32 animationId, SceBool disableOnEnd, SceBool skipAnimation); - static paf::widget::Widget *WidgetStateTransitionReverse(SceFloat32 delay, paf::widget::Widget *widget, SceUInt32 animationId, SceBool disableOnEnd, SceBool skipAnimation); - } - + class String; + class WString; class String { @@ -46,7 +31,7 @@ namespace paf { ~String() { - if (length != 0 && *data != 0) + if (length != 0 && data != &null) delete data; } @@ -60,65 +45,150 @@ namespace paf { SceSSize ToWString(paf::WString *dst, SceUInt32 flags); - String *Set(const char *s, SceSize srcLength) + SceVoid MemsizeFormat(SceSize memsize); + + SceVoid Setf(const char *format, ...); + + SceVoid Set(const char* c, SceInt32 len) { - if (data == s) - return this; + Clear(); - if (*data != 0) - delete data; + if (!len) + { + SetEmpty(); - if (srcLength == 0 || s == SCE_NULL || s[0] == 0) { - String(); - return this; + return; } - data = new char[srcLength + 1]; - length = srcLength; - sce_paf_memcpy(data, s, length); - data[length] = 0; + Copy(c, len); + } - return this; - }; + SceVoid Set(const char* c) + { + SceInt32 len = sce_paf_strlen(c); + + Clear(); + + if (!len) + { + SetEmpty(); + + return; + } + + Copy(c, len); + } + + SceVoid Clear() + { + if (IsEmpty()) + { + return; + } + + delete data; - String *Set(const char *s) + SetEmpty(); + } + + String *operator=(const char* c) { - Set(s, sce_paf_strlen(s)); + Clear(); + + Copy(c, sce_paf_strlen(c)); return this; - }; + } String *operator=(const String *s) { - if (data == s->data) - return this; + Clear(); - if (s->length == 0) { - String(); - return this; + Copy(s->data, s->length); + return this; + } + + String operator+(const String *s) const + { + SceInt32 len1 = length; + SceInt32 len2 = s->length; + + if (!len1 && !len2) + { + String ret; + return ret; } - data = new char[s->length + 1]; - length = s->length; - sce_paf_memcpy(data, s->data, s->length + 1); + char* newptr = new char[len1 + len2 + 1]; - return this; + if (newptr == SCE_NULL) + { + String ret; + return ret; + } + + sce_paf_memcpy(newptr, data, sizeof(char) * len1); + sce_paf_memcpy(&newptr[len1], s->data, sizeof(char) * (s->length + 1)); + + String ret(newptr, len1 + len2); + delete newptr; + + return ret; } - String *operator+(const String *s) const + String operator+(const char* c) const { - String *newStr = new String; + SceInt32 len1 = length; + SceInt32 len2 = sce_paf_strlen(c); - if (!length && !s->length) + char* newptr = new char[len1 + len2 + 1]; + + if (newptr == SCE_NULL) { - return newStr; + String ret; + return ret; } - newStr->data = new char[s->length + length + 1]; - newStr->length = s->length + length; - sce_paf_memcpy(newStr->data, data, length); - sce_paf_memcpy(&newStr->data[length], s->data, s->length + 1); - newStr->data[newStr->length] = 0; - return newStr; + sce_paf_memcpy(newptr, data, sizeof(char) * len1); + sce_paf_memcpy(&newptr[len1], c, sizeof(char) * (len2 + 1)); + + String ret(newptr, len1 + len2); + delete newptr; + + return ret; + } + + String *operator+=(const String *s) + { + char* newptr = SCE_NULL; + SceInt32 len1 = length; + + newptr = new char[length + s->length + 1]; + + sce_paf_memcpy(newptr, data, len1); + sce_paf_memcpy(&newptr[len1], s->data, s->length + 1); + + Clear(); + Set(newptr, len1 + s->length); + delete newptr; + + return this; + } + + String *operator+=(const char* c) + { + SceInt32 len1 = length; + SceInt32 len2 = sce_paf_strlen(c); + + char* newptr = new char[len1 + len2 + 1]; + + sce_paf_memcpy(newptr, data, len1); + sce_paf_memcpy(&newptr[len1], c, len2 + 1); + + Clear(); + Set(newptr, len1 + len2); + delete newptr; + + return this; } SceBool operator==(const String *s) const @@ -126,20 +196,90 @@ namespace paf { if (s->length != length) return SCE_FALSE; - if (!sce_paf_strncmp(s->data, data, length)) + if (sce_paf_strncmp(data, s->data, length)) + return SCE_FALSE; + + return SCE_TRUE; + } + + SceBool operator==(const char* rc) const + { + if (sce_paf_strlen(rc) != length) + return SCE_FALSE; + + if (sce_paf_strncmp(data, rc, length)) + return SCE_FALSE; + + return SCE_TRUE; + } + + SceBool operator<(const String *s) const + { + return sce_paf_strcmp(data, s->data) < 0; + } + + SceBool operator<(const char* c) const + { + return sce_paf_strcmp(data, c) < 0; + } + + SceBool operator>(const String *s) const + { + return sce_paf_strcmp(data, s->data) > 0; + } + + SceBool operator>(const char* c) const + { + return sce_paf_strcmp(data, c) > 0; + } + + String *Append(const char* c, SceInt32 len2) + { + SceInt32 len1 = length; + + char *newptr = new char[len1 + len2 + 1]; + + sce_paf_memcpy(newptr, data, len1); + sce_paf_memcpy(&newptr[len1], c, len2); + + Clear(); + Set(newptr, len1 + len2); + delete newptr; + + return this; + } + + SceVoid Copy(const char* c, SceInt32 cLength) + { + if (!cLength) + { + return; + } + + length = cLength; + + data = new char[length + 1]; + + sce_paf_memcpy(data, c, cLength); + data[cLength] = 0; + } + + SceBool IsEmpty() const + { + if (data == &null && length == 0) return SCE_TRUE; else return SCE_FALSE; } - SceVoid Clear() + SceVoid SetEmpty() { - if (length != 0 && data != SCE_NULL) { - delete data; - String(); - } + data = &null; + length = 0; } + static char null; + char *data; SceSize length; @@ -153,12 +293,12 @@ namespace paf { { public: - WString() : data(SCE_NULL), length(0) + WString() : data(&null), length(0) { } - WString(const SceWChar16 *s, SceSize srcLength) : data(SCE_NULL), length(0) + WString(const SceWChar16 *s, SceSize srcLength) : data(&null), length(0) { if (srcLength == 0 || s == SCE_NULL || s[0] == 0) { return; @@ -172,7 +312,7 @@ namespace paf { return; } - WString(const SceWChar16 *s) : data(SCE_NULL), length(0) + WString(const SceWChar16 *s) : data(&null), length(0) { SceSize srcLength = sce_paf_wcslen((wchar_t*)s); @@ -190,7 +330,7 @@ namespace paf { ~WString() { - if (length != 0 && data != SCE_NULL) + if (length != 0 && data != &null) delete data; } @@ -209,11 +349,11 @@ namespace paf { if (data == s) return this; - if (data != SCE_NULL) + if (data != &null) delete data; if (srcLength == 0 || s == SCE_NULL || s[0] == 0) { - data = SCE_NULL; + data = &null; length = 0; return this; } @@ -232,13 +372,29 @@ namespace paf { return this; }; + WString *Append(const SceWChar16 *c, SceInt32 len2) + { + SceInt32 len1 = length; + + SceWChar16 *newptr = new SceWChar16[len1 + len2 + 1]; + + sce_paf_wmemcpy((wchar_t *)newptr, (wchar_t *)data, len1); + sce_paf_wmemcpy((wchar_t *)&newptr[len1], (wchar_t *)c, len2); + + Clear(); + Set(newptr, len1 + len2); + delete newptr; + + return this; + } + WString *operator=(const WString *s) { if (data == s->data) return this; if (s->length == 0) { - data = SCE_NULL; + data = &null; length = 0; return this; } @@ -280,13 +436,15 @@ namespace paf { SceVoid Clear() { - if (length != 0 && data != SCE_NULL) { + if (length != 0 && data != &null) { delete data; length = 0; - data = SCE_NULL; + data = &null; } } + static SceWChar16 null; + SceWChar16 *data; SceSize length; @@ -295,21 +453,49 @@ namespace paf { SceUInt32 m_work; }; + class SWString + { + public: + + SWString(); + + SWString(const char *str); + + SWString(const SceWChar16 *str); + + SWString(String *src); + + SWString(WString *src); + + ~SWString(); + + String string; + WString wstring; + }; + namespace common { class Utils { public: - typedef void(*MainThreadTaskEntryFunction)(void *pArgBlock); - - Utils(); + enum CesFlags + { + AllowIllegalCode = 0x2, + AllowOutOfCodeRange = 0x4, + AllowInvalidEncode = 0x8, + AllowSrcBufferEnd = 0x10 + }; - ~Utils(); + typedef void(*MainThreadTaskEntryFunction)(void *pArgBlock); static SceVoid AddMainThreadTask(MainThreadTaskEntryFunction entry, ScePVoid pArgBlock); static SceVoid RemoveMainThreadTask(MainThreadTaskEntryFunction entry, ScePVoid pArgBlock); + + static paf::widget::Widget *WidgetStateTransition(SceFloat32 animationSpeed, paf::widget::Widget *widget, SceUInt32 animationId, SceBool disableOnEnd, SceBool skipAnimation); + + static paf::widget::Widget *WidgetStateTransitionReverse(SceFloat32 animationSpeed, paf::widget::Widget *widget, SceUInt32 animationId, SceBool disableOnEnd, SceBool skipAnimation); }; } |