From bef91d45de4044cefddf5e9b4a83b712b432470c Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Thu, 6 Oct 2022 02:23:45 -0700 Subject: [PATCH] Match and link IObj --- configure.py | 1 + include/Kyoto/CObjectReference.hpp | 16 +--------------- include/Kyoto/IObj.hpp | 3 +++ libc/ctype.h | 15 --------------- src/Kyoto/IObj.cpp | 20 ++++++++++++++++++++ 5 files changed, 25 insertions(+), 30 deletions(-) create mode 100644 src/Kyoto/IObj.cpp diff --git a/configure.py b/configure.py index a8abb782..a149b85e 100755 --- a/configure.py +++ b/configure.py @@ -65,6 +65,7 @@ COMPLETE_OBJECTS = [ "Kyoto/Text/CFontImageDef", "Kyoto/Graphics/DolphinCColor", "Kyoto/Audio/g721", + "Kyoto/IObj", "Dolphin/PPCArch", "Dolphin/dsp/dsp_debug", "Dolphin/os/__start", diff --git a/include/Kyoto/CObjectReference.hpp b/include/Kyoto/CObjectReference.hpp index eeb4ca6d..5c46ea9f 100644 --- a/include/Kyoto/CObjectReference.hpp +++ b/include/Kyoto/CObjectReference.hpp @@ -2,23 +2,9 @@ #define __COBJECTREFERENCE_HPP__ #include +#include #include - -#define kInvalidAssetId 0xFFFFFFFFu - -typedef uint CAssetId; -typedef uint FourCC; - -struct SObjectTag { - FourCC type; - CAssetId id; - - SObjectTag() {} - SObjectTag(FourCC type, CAssetId id) : type(type), id(id) {} - SObjectTag(const SObjectTag& other) : type(other.type), id(other.id) {} -}; - class IObj; class IObjectStore; class CObjectReference { diff --git a/include/Kyoto/IObj.hpp b/include/Kyoto/IObj.hpp index 7cccfa82..bdac9df2 100644 --- a/include/Kyoto/IObj.hpp +++ b/include/Kyoto/IObj.hpp @@ -3,8 +3,11 @@ #include "types.h" +#include "Kyoto/SObjectTag.hpp" #include "rstl/auto_ptr.hpp" +extern const SObjectTag gkInvalidObjectTag; + class IObj { public: virtual ~IObj() {} diff --git a/libc/ctype.h b/libc/ctype.h index 5e5f3620..b8f6067a 100644 --- a/libc/ctype.h +++ b/libc/ctype.h @@ -29,21 +29,6 @@ extern unsigned char __upper_map[]; #define __control (__motion_char | __control_char) #define __zero_fill(c) ((int)(unsigned char)(c)) -int isalnum(int); -int isalpha(int); -int iscntrl(int); -int isdigit(int); -int isgraph(int); -int islower(int); -int isprint(int); -int ispunct(int); -int isspace(int); -int isupper(int); -int isxdigit(int); -int tolower(int); -int toupper(int); -int iswblank(int); - #ifndef _CTYPE_INLINE #define _CTYPE_INLINE static inline #endif diff --git a/src/Kyoto/IObj.cpp b/src/Kyoto/IObj.cpp new file mode 100644 index 00000000..60b242aa --- /dev/null +++ b/src/Kyoto/IObj.cpp @@ -0,0 +1,20 @@ +#include "Kyoto/IObj.hpp" +#include + +const SObjectTag gkInvalidObjectTag(-1, kInvalidAssetId); + +const char* SObjectTag::Type2Text(FourCC type) { + static char text[5]; + text[0] = toupper((type >> 24) & 0xFF); + text[1] = toupper((type >> 16) & 0xFF); + text[2] = toupper((type >> 8) & 0xFF); + text[3] = toupper(type & 0xFF); + text[4] = '\0'; + + for (int i = 0; i < 4; ++i) { + if (isprint(text[i]) == 0) { + text[i] = '-'; + } + } + return text; +}