summaryrefslogtreecommitdiff
path: root/include/user/paf/common.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/user/paf/common.h')
-rw-r--r--include/user/paf/common.h332
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);
};
}