SSBM Decomp
Loading...
Searching...
No Matches
archive.h
Go to the documentation of this file.
1#ifndef _archive_h_
2#define _archive_h_
3
4#include <Runtime/platform.h>
5
6#include <sysdolphin/baselib/forward.h> // IWYU pragma: export
7
8#include <dat_macros.h> // IWYU pragma: keep
9
10#define HSD_ARCHIVE_DONT_FREE 1
11
13 u32 file_size; /* 0x00 */
14 u32 data_size; /* 0x04 */
15 u32 nb_reloc; /* 0x08 */
16 u32 nb_public; /* 0x0C */
17 u32 nb_extern; /* 0x10 */
18 u8 version[4]; /* 0x14 */
19 u32 pad[2]; /* 0x18 */
20};
22
26
28 u32 offset; /* 0x00 */
29 u32 symbol; /* 0x04 */
30};
31
33 u32 offset; /* 0x00 */
34 u32 symbol; /* 0x04 */
35};
36
39 u8* data; /* 0x20 */
43 char* symbols; /* 0x30 */
44 HSD_Archive* next; /* 0x34 */
45 char* name; /* 0x38 */
46 u32 flags; /* 0x3C */
47 void* top_ptr; /* 0x40 */
48#ifdef TARGET_PC
49 struct DatArchive* native_data;
50#endif
51};
53
54s32 HSD_ArchiveParse(HSD_Archive*, u8*, size_t file_size);
55void* HSD_ArchiveGetPublicAddress(HSD_Archive*, const char*);
56
58#ifdef TARGET_PC
59void* HSD_ArchiveGetPublicTyped(HSD_Archive*, const char* name,
60 const char* type);
61void HSD_ArchiveReleaseNative(HSD_Archive*);
62#define HSD_ArchiveGetPublicAs(type, archive, name) \
63 ((type*) HSD_ArchiveGetPublicTyped((archive), (name), #type))
64#elif defined(DAT_ROOTS_ENABLED)
65// Also record the type the symbol is loaded as
66#define HSD_ArchiveGetPublicAs(type, archive, name) \
67 ({ \
68 DAT_ROOT((type**) 0, name) \
69 (type*) HSD_ArchiveGetPublicAddress((archive), (name)); \
70 })
71#else
72#define HSD_ArchiveGetPublicAs(type, archive, name) \
73 ((type*) HSD_ArchiveGetPublicAddress((archive), (name)))
74#endif
75
77void HSD_ArchiveLocateExtern(HSD_Archive*, const char*, void*);
78
79#endif
void HSD_ArchiveLocateExtern(HSD_Archive *, const char *, void *)
Definition archive.c:95
char * HSD_ArchiveGetExtern(HSD_Archive *, int)
Definition archive.c:86
s32 HSD_ArchiveParse(HSD_Archive *, u8 *, size_t file_size)
Definition archive.c:20
void * HSD_ArchiveGetPublicAddress(HSD_Archive *, const char *)
Definition archive.c:69
Annotations describing how archive data is laid out, for the parts a C declaration cannot express: ho...
signed int s32
Definition types.h:12
unsigned int u32
Definition types.h:13
unsigned char u8
Definition types.h:5
#define ASSERT_SIZE(expr, size)
Definition platform.h:127
Definition archive.h:32
u32 symbol
Definition archive.h:34
u32 offset
Definition archive.h:33
Definition archive.h:12
u32 pad[2]
Definition archive.h:19
u32 nb_reloc
Definition archive.h:15
u32 nb_extern
Definition archive.h:17
u32 data_size
Definition archive.h:14
u8 version[4]
Definition archive.h:18
u32 nb_public
Definition archive.h:16
u32 file_size
Definition archive.h:13
Definition archive.h:27
u32 offset
Definition archive.h:28
u32 symbol
Definition archive.h:29
Definition archive.h:23
u32 offset
Definition archive.h:24
Definition archive.h:37
u32 flags
Definition archive.h:46
HSD_ArchiveRelocationInfo * reloc_info
Definition archive.h:40
HSD_ArchiveExternInfo * extern_info
Definition archive.h:42
HSD_ArchivePublicInfo * public_info
Definition archive.h:41
u8 * data
Definition archive.h:39
char * symbols
Definition archive.h:43
HSD_Archive * next
Definition archive.h:44
void * top_ptr
Definition archive.h:47
HSD_ArchiveHeader header
Definition archive.h:38
char * name
Definition archive.h:45