sourcemod/sourcepawn/decompiler/file_format.h

53 lines
1.3 KiB
C

#ifndef _INCLUDE_SPDECOMP_FILE_FORMAT_H_
#define _INCLUDE_SPDECOMP_FILE_FORMAT_H_
#include <sp_vm_types.h>
struct sp_debug_t
{
const char *stringbase; /**< base of string table */
uint32_t files_num; /**< number of files */
sp_fdbg_file_t *files; /**< files table */
uint32_t lines_num; /**< number of lines */
sp_fdbg_line_t *lines; /**< lines table */
uint32_t syms_num; /**< number of symbols */
sp_fdbg_symbol_t *symbols; /**< symbol table */
sp_fdbg_ntvtab_s *ntv; /**< native table */
};
struct sp_tag_t
{
uint32_t id;
const char *name;
};
struct sp_file_t
{
uint8_t *base;
size_t base_size;
uint8_t *pcode;
uint32_t pcode_size;
uint32_t pcode_version;
uint8_t *data;
uint32_t data_size;
uint32_t mem_size;
sp_public_t *publics;
uint32_t num_publics;
sp_pubvar_t *pubvars;
uint32_t num_pubvars;
sp_native_t *natives;
uint32_t num_natives;
sp_tag_t *tags;
uint32_t num_tags;
const char *stringbase;
uint32_t flags;
sp_debug_t debug;
};
void Sp_FreePlugin(sp_file_t *plugin);
sp_file_t *Sp_ReadPlugin(const char *file, int *err);
sp_fdbg_symbol_t *Sp_FindFunctionSym(sp_file_t *plugin, ucell_t addr);
sp_tag_t *Sp_FindTag(sp_file_t *plugin, uint32_t tag_id);
#endif //_INCLUDE_SPDECOMP_FILE_FORMAT_H_