SSBM Decomp
Toggle main menu visibility
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
12
struct
HSD_ArchiveHeader
{
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
};
21
ASSERT_SIZE
(
struct
HSD_ArchiveHeader
, 0x20);
22
23
struct
HSD_ArchiveRelocationInfo
{
24
u32
offset
;
25
};
26
27
struct
HSD_ArchivePublicInfo
{
28
u32
offset
;
/* 0x00 */
29
u32
symbol
;
/* 0x04 */
30
};
31
32
struct
HSD_ArchiveExternInfo
{
33
u32
offset
;
/* 0x00 */
34
u32
symbol
;
/* 0x04 */
35
};
36
37
struct
HSD_Archive
{
38
HSD_ArchiveHeader
header
;
/* 0x00 */
39
u8
*
data
;
/* 0x20 */
40
HSD_ArchiveRelocationInfo
*
reloc_info
;
/* 0x24 */
41
HSD_ArchivePublicInfo
*
public_info
;
/* 0x28 */
42
HSD_ArchiveExternInfo
*
extern_info
;
/* 0x2C */
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
};
52
ASSERT_SIZE
(
struct
HSD_Archive
, 0x44);
53
54
s32
HSD_ArchiveParse
(
HSD_Archive
*,
u8
*,
size_t
file_size);
55
void
*
HSD_ArchiveGetPublicAddress
(
HSD_Archive
*,
const
char
*);
56
58
#ifdef TARGET_PC
59
void
* HSD_ArchiveGetPublicTyped(
HSD_Archive
*,
const
char
* name,
60
const
char
* type);
61
void
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
76
char
*
HSD_ArchiveGetExtern
(
HSD_Archive
*,
int
);
77
void
HSD_ArchiveLocateExtern
(
HSD_Archive
*,
const
char
*,
void
*);
78
79
#endif
HSD_ArchiveLocateExtern
void HSD_ArchiveLocateExtern(HSD_Archive *, const char *, void *)
Definition
archive.c:95
HSD_ArchiveGetExtern
char * HSD_ArchiveGetExtern(HSD_Archive *, int)
Definition
archive.c:86
HSD_ArchiveParse
s32 HSD_ArchiveParse(HSD_Archive *, u8 *, size_t file_size)
Definition
archive.c:20
HSD_ArchiveGetPublicAddress
void * HSD_ArchiveGetPublicAddress(HSD_Archive *, const char *)
Definition
archive.c:69
dat_macros.h
Annotations describing how archive data is laid out, for the parts a C declaration cannot express: ho...
s32
signed int s32
Definition
types.h:12
u32
unsigned int u32
Definition
types.h:13
u8
unsigned char u8
Definition
types.h:5
platform.h
ASSERT_SIZE
#define ASSERT_SIZE(expr, size)
Definition
platform.h:127
HSD_ArchiveExternInfo
Definition
archive.h:32
HSD_ArchiveExternInfo::symbol
u32 symbol
Definition
archive.h:34
HSD_ArchiveExternInfo::offset
u32 offset
Definition
archive.h:33
HSD_ArchiveHeader
Definition
archive.h:12
HSD_ArchiveHeader::pad
u32 pad[2]
Definition
archive.h:19
HSD_ArchiveHeader::nb_reloc
u32 nb_reloc
Definition
archive.h:15
HSD_ArchiveHeader::nb_extern
u32 nb_extern
Definition
archive.h:17
HSD_ArchiveHeader::data_size
u32 data_size
Definition
archive.h:14
HSD_ArchiveHeader::version
u8 version[4]
Definition
archive.h:18
HSD_ArchiveHeader::nb_public
u32 nb_public
Definition
archive.h:16
HSD_ArchiveHeader::file_size
u32 file_size
Definition
archive.h:13
HSD_ArchivePublicInfo
Definition
archive.h:27
HSD_ArchivePublicInfo::offset
u32 offset
Definition
archive.h:28
HSD_ArchivePublicInfo::symbol
u32 symbol
Definition
archive.h:29
HSD_ArchiveRelocationInfo
Definition
archive.h:23
HSD_ArchiveRelocationInfo::offset
u32 offset
Definition
archive.h:24
HSD_Archive
Definition
archive.h:37
HSD_Archive::flags
u32 flags
Definition
archive.h:46
HSD_Archive::reloc_info
HSD_ArchiveRelocationInfo * reloc_info
Definition
archive.h:40
HSD_Archive::extern_info
HSD_ArchiveExternInfo * extern_info
Definition
archive.h:42
HSD_Archive::public_info
HSD_ArchivePublicInfo * public_info
Definition
archive.h:41
HSD_Archive::data
u8 * data
Definition
archive.h:39
HSD_Archive::symbols
char * symbols
Definition
archive.h:43
HSD_Archive::next
HSD_Archive * next
Definition
archive.h:44
HSD_Archive::top_ptr
void * top_ptr
Definition
archive.h:47
HSD_Archive::header
HSD_ArchiveHeader header
Definition
archive.h:38
HSD_Archive::name
char * name
Definition
archive.h:45
forward.h
src
sysdolphin
baselib
archive.h
Generated by
1.17.0