|
102 Patches: Detours to the Rescue
C reference for DttR maintainers and modders.
|
#include <stdbool.h>#include <stddef.h>#include <stdint.h>#include <dttr_core.h>#include <dttr_pcdogs.h>Go to the source code of this file.
Data Structures | |
| struct | DTTR_Util_PkgVisit |
| A single callback frame. Pointers are visit-lifetime unless documented by PCDOGS. More... | |
| struct | DTTR_Util_PkgWalkOptions |
| Walker configuration. Use DTTR_Util_PkgWalk_DefaultOptions() for defaults. More... | |
| struct | DTTR_Util_PkgWalkResult |
| Aggregate walk result. Non-fatal per-entry failures keep traversal moving. More... | |
Macros | |
| #define | DTTR_UTIL_API extern |
| #define | DTTR_UTIL_PKG_DEFAULT_TOC_COUNT 138u |
Typedefs | |
| typedef enum DTTR_Util_PkgWalkDomain | DTTR_Util_PkgWalkDomain |
| Package subtree families that the walker can expose. | |
| typedef enum DTTR_Util_PkgVisitKind | DTTR_Util_PkgVisitKind |
| Object kind reported to a package visitor. | |
| typedef enum DTTR_Util_PkgVisitStatus | DTTR_Util_PkgVisitStatus |
| Per-visit and whole-walk status values. | |
| typedef enum DTTR_Util_PkgVisitAction | DTTR_Util_PkgVisitAction |
| Visitor return value controlling traversal below the current visit. | |
| typedef struct DTTR_Util_PkgVisit | DTTR_Util_PkgVisit |
| typedef DTTR_Util_PkgVisitAction(* | DTTR_Util_PkgVisitor) (const DTTR_Util_PkgVisit *visit, void *userdata) |
| typedef bool(* | DTTR_Util_PkgLoadEntryFn) (const DTTR_Core_Context *ctx, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *entry, void *userdata, void **out_entry, size_t *out_size, DTTR_Util_PkgVisitStatus *out_status) |
| typedef void(* | DTTR_Util_PkgFreeEntryFn) (const DTTR_Core_Context *ctx, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *entry, void *entry_data, void *userdata) |
| typedef struct DTTR_Util_PkgWalkOptions | DTTR_Util_PkgWalkOptions |
| Walker configuration. Use DTTR_Util_PkgWalk_DefaultOptions() for defaults. | |
| typedef struct DTTR_Util_PkgWalkResult | DTTR_Util_PkgWalkResult |
| Aggregate walk result. Non-fatal per-entry failures keep traversal moving. | |
Experimental utility helpers for reverse-engineering package data.
These declarations are available through dttr_sdk.h only when DTTR_SDK_ENABLE_UNSTABLE is defined. These declarations can change at source or ABI level while package layouts are still being mapped.
Definition in file dttr_util_unstable.h.
| #define DTTR_UTIL_API extern |
Definition at line 22 of file dttr_util_unstable.h.
| #define DTTR_UTIL_PKG_DEFAULT_TOC_COUNT 138u |
Experimental package traversal helpers for reverse-engineering workflows. These declarations may change while package layouts are still being mapped.
Definition at line 72 of file dttr_util_unstable.h.
Referenced by DTTR_Util_PkgWalk_DefaultOptions(), and resolve_toc().
| typedef void(* DTTR_Util_PkgFreeEntryFn) (const DTTR_Core_Context *ctx, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *entry, void *entry_data, void *userdata) |
Definition at line 144 of file dttr_util_unstable.h.
| typedef bool(* DTTR_Util_PkgLoadEntryFn) (const DTTR_Core_Context *ctx, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *entry, void *userdata, void **out_entry, size_t *out_size, DTTR_Util_PkgVisitStatus *out_status) |
Definition at line 134 of file dttr_util_unstable.h.
| typedef struct DTTR_Util_PkgVisit DTTR_Util_PkgVisit |
Definition at line 127 of file dttr_util_unstable.h.
| typedef enum DTTR_Util_PkgVisitAction DTTR_Util_PkgVisitAction |
Visitor return value controlling traversal below the current visit.
| typedef enum DTTR_Util_PkgVisitKind DTTR_Util_PkgVisitKind |
Object kind reported to a package visitor.
| typedef DTTR_Util_PkgVisitAction(* DTTR_Util_PkgVisitor) (const DTTR_Util_PkgVisit *visit, void *userdata) |
Definition at line 129 of file dttr_util_unstable.h.
| typedef enum DTTR_Util_PkgVisitStatus DTTR_Util_PkgVisitStatus |
Per-visit and whole-walk status values.
| typedef enum DTTR_Util_PkgWalkDomain DTTR_Util_PkgWalkDomain |
Package subtree families that the walker can expose.
| typedef struct DTTR_Util_PkgWalkOptions DTTR_Util_PkgWalkOptions |
Walker configuration. Use DTTR_Util_PkgWalk_DefaultOptions() for defaults.
| typedef struct DTTR_Util_PkgWalkResult DTTR_Util_PkgWalkResult |
Aggregate walk result. Non-fatal per-entry failures keep traversal moving.
Visitor return value controlling traversal below the current visit.
| Enumerator | |
|---|---|
| DTTR_UTIL_PKG_VISIT_CONTINUE | |
| DTTR_UTIL_PKG_VISIT_RECURSE | |
| DTTR_UTIL_PKG_VISIT_LOAD_AND_RECURSE | |
| DTTR_UTIL_PKG_VISIT_SKIP_SUBTREE | |
| DTTR_UTIL_PKG_VISIT_STOP | |
Definition at line 119 of file dttr_util_unstable.h.
Object kind reported to a package visitor.
Definition at line 95 of file dttr_util_unstable.h.
Per-visit and whole-walk status values.
Definition at line 108 of file dttr_util_unstable.h.
Package subtree families that the walker can expose.
Definition at line 75 of file dttr_util_unstable.h.
|
inlinestatic |
Return the current active actor, or NULL when unavailable or inactive.
| ctx | Runtime context for generated PCDOGS symbol calls. |
Definition at line 51 of file dttr_util_unstable.h.
References ctx, DTTR_PCDOGS_F_Entity_GetActiveActorFromList, DTTR_ResultOK(), and NULL.
|
inlinestatic |
Const-preserving variant of the Level_Data runtime-layout cast.
| ptr_ | Stable opaque Level_Data pointer to cast. |
Definition at line 43 of file dttr_util_unstable.h.
|
inlinestatic |
Cast a stable opaque Level_Data pointer to the unstable runtime layout. The stable API keeps Level_Data opaque; this helper makes the intentional bridge explicit for callers that opt into unstable layouts.
| ptr_ | Stable opaque Level_Data pointer to cast. |
Definition at line 34 of file dttr_util_unstable.h.
|
inlinestatic |
Definition at line 256 of file dttr_util_unstable.h.
References DTTR_UTIL_PKG_VISIT_COLLISION_SHAPE, DTTR_Util_PkgVisit::kind, NULL, and DTTR_Util_PkgVisit::ptr.
|
inlinestatic |
Definition at line 216 of file dttr_util_unstable.h.
References DTTR_UTIL_PKG_VISIT_LEVEL_RUNTIME_DATA, DTTR_Util_PkgVisit::kind, NULL, and DTTR_Util_PkgVisit::ptr.
|
inlinestatic |
Definition at line 210 of file dttr_util_unstable.h.
References DTTR_UTIL_PKG_VISIT_LOADED_ENTRY, DTTR_Util_PkgVisit::kind, NULL, and DTTR_Util_PkgVisit::ptr.
|
inlinestatic |
Definition at line 232 of file dttr_util_unstable.h.
References DTTR_UTIL_PKG_VISIT_MATERIAL_ENTRY, DTTR_Util_PkgVisit::kind, NULL, and DTTR_Util_PkgVisit::ptr.
|
inlinestatic |
Definition at line 224 of file dttr_util_unstable.h.
References DTTR_UTIL_PKG_VISIT_MESH_NODE, DTTR_Util_PkgVisit::kind, NULL, and DTTR_Util_PkgVisit::ptr.
|
inlinestatic |
Definition at line 240 of file dttr_util_unstable.h.
References DTTR_UTIL_PKG_VISIT_SCENE_NODE, DTTR_Util_PkgVisit::kind, NULL, and DTTR_Util_PkgVisit::ptr.
|
inlinestatic |
Definition at line 248 of file dttr_util_unstable.h.
References DTTR_UTIL_PKG_VISIT_SPRITE_ENTRY, DTTR_Util_PkgVisit::kind, NULL, and DTTR_Util_PkgVisit::ptr.
|
inlinestatic |
Definition at line 202 of file dttr_util_unstable.h.
References DTTR_UTIL_PKG_VISIT_TOC_ENTRY, DTTR_Util_PkgVisit::kind, NULL, and DTTR_Util_PkgVisit::ptr.
| DTTR_UTIL_API const char * DTTR_Util_PkgVisitStatusName | ( | DTTR_Util_PkgVisitStatus | status | ) |
Definition at line 34 of file util_pkg_walk.c.
References DTTR_UTIL_PKG_STATUS_BOUNDS_INVALID, DTTR_UTIL_PKG_STATUS_DECODE_UNSUPPORTED, DTTR_UTIL_PKG_STATUS_INVALID_ARGUMENT, DTTR_UTIL_PKG_STATUS_LOAD_FAILED, DTTR_UTIL_PKG_STATUS_OK, DTTR_UTIL_PKG_STATUS_UNKNOWN_ENTRY_KIND, and DTTR_UTIL_PKG_STATUS_UNRESOLVED_SYMBOL.
| DTTR_UTIL_API DTTR_Util_PkgWalkResult DTTR_Util_PkgWalk | ( | const DTTR_Core_Context * | ctx, |
| const DTTR_Util_PkgWalkOptions * | options, | ||
| DTTR_Util_PkgVisitor | visitor, | ||
| void * | userdata ) |
Definition at line 264 of file util_pkg_walk.c.
References ctx, default_free_entry(), default_load_entry(), DTTR_Util_PkgWalkOptions::domains, DTTR_UTIL_PKG_DOMAIN_TOC, DTTR_UTIL_PKG_STATUS_INVALID_ARGUMENT, DTTR_UTIL_PKG_STATUS_LOAD_FAILED, DTTR_UTIL_PKG_STATUS_OK, DTTR_UTIL_PKG_STATUS_UNRESOLVED_SYMBOL, DTTR_UTIL_PKG_VISIT_LOADED_ENTRY, DTTR_UTIL_PKG_VISIT_SKIP_SUBTREE, DTTR_UTIL_PKG_VISIT_STOP, DTTR_UTIL_PKG_VISIT_TOC_ENTRY, DTTR_UTIL_PKG_VISIT_UNSUPPORTED, DTTR_Util_PkgWalk_DefaultOptions(), emit_decode_boundary(), emit_visit(), DTTR_Util_PkgWalkOptions::free_entry, DTTR_Util_PkgWalkOptions::io_userdata, DTTR_Util_PkgWalkOptions::load_entry, DTTR_Util_PkgWalkResult::loaded_count, make_result(), make_visit(), DTTR_Util_PkgWalkOptions::max_depth, NULL, resolve_toc(), should_load(), should_recurse(), and DTTR_Util_PkgWalkResult::stopped.
| DTTR_UTIL_API DTTR_Util_PkgWalkOptions DTTR_Util_PkgWalk_DefaultOptions | ( | ) |
Definition at line 22 of file util_pkg_walk.c.
References DTTR_Util_PkgWalkOptions::domains, DTTR_UTIL_PKG_DEFAULT_TOC_COUNT, DTTR_UTIL_PKG_DOMAIN_ALL_KNOWN, DTTR_Util_PkgWalkOptions::load_entries, DTTR_Util_PkgWalkOptions::max_depth, DTTR_Util_PkgWalkOptions::struct_size, and DTTR_Util_PkgWalkOptions::toc_count.
Referenced by DTTR_Util_PkgWalk().
|
inlinestatic |
Compare non-NULL live actor pointers directly.
| left | First actor pointer. |
| right | Second actor pointer. |
Definition at line 63 of file dttr_util_unstable.h.
References NULL.