📄 pmem.h
字号:
/** mem.h** Memory manager unix/palm** Nicholas Christopoulos** This program is distributed under the terms of the GPL v2.0 or later* Download the GNU Public License (GPL) from www.gnu.org*/#if !defined(_sb_mem_h)#define _sb_mem_h#if defined(__cplusplus)extern "C" {#endif#if defined(_UnixOS) || defined(_Win32) #include "unx_memmgr.h"#endif#if defined(_BCB_W32_IDE) #include <string.h> #include "unx_memmgr.h"#endif#if defined(_PalmOS)#define memset(a,b,c) MemSet((a),(c),(b))#endif#if !defined(NULL) #define NULL (void*)0L#endif/** data-types*/typedef MemHandle mem_t;typedef unsigned char byte;typedef byte* byte_p_t;typedef char* char_p_t;// 16-bit integertypedef int short int16;typedef unsigned short word;// 32-bit integer#if defined(_PalmOS)typedef long int32;typedef unsigned long dword;#else /* Unix, Win32 */typedef int int32;typedef unsigned int dword;#endif// ---------------------------------------------// Dynamic RAM#if defined(_PalmOS)void *tmp_alloc(dword size);void tmp_free(void *ptr);#else#define tmp_alloc(s) tmp_allocX((s), __FILE__, __LINE__)#define tmp_free(p) tmp_freeX((p), __FILE__, __LINE__)void *tmp_allocX(dword size, const char *file, int line);void tmp_freeX(void *ptr, const char *file, int line);#endifvoid *tmp_realloc(void *ptr, dword size);// Storage RAM#if defined(_PalmOS)mem_t mem_alloc(dword size);#else#define mem_alloc(s) mem_allocX((s), __FILE__, __LINE__)mem_t mem_allocX(dword size, const char *file, int line);#endifmem_t mem_realloc(mem_t handle, dword new_size);void* mem_lock(mem_t h);void mem_unlock(mem_t h);void mem_free(mem_t h);mem_t mem_new_text(const char *text);/** standard list (with handles) --- dynamic single-linked list, stored in STORAGE RAM*///#define ENABLE_MEMLIST#if defined(ENABLE_MEMLIST)struct mem_list_node_s { mem_t data; struct mem_list_node_s *next; };typedef struct mem_list_node_s mnode_t;struct mem_list_s { mnode_t *head, *tail; int count; };typedef struct mem_list_s mlist_t;void mlist_init(mlist_t *lst) SEC(TRASH);void mlist_clear(mlist_t *lst) SEC(TRASH); mnode_t *mlist_add(mlist_t *lst, mem_t h) SEC(TRASH);#endif/** temporary list --- dynamic single-linked list, stored in DYNAMIC RAM*///#define ENABLE_TMPLIST#if defined(ENABLE_TMPLIST)struct tmpmem_list_node_s { void *data; struct tmpmem_list_node_s *next; };typedef struct tmpmem_list_node_s tmpnode_t;struct tmpmem_list_s { tmpnode_t *head, *tail; int count; };typedef struct tmpmem_list_s tmplist_t;void tmplist_init(tmplist_t *lst) SEC(TRASH);void tmplist_clear(tmplist_t *lst) SEC(TRASH);tmpnode_t *tmplist_add(tmplist_t *lst, void *ptr, int size) SEC(TRASH);#endif// logfilevoid lwrite(const char *buf) SEC(TRASH);void lprintf(const char *fmt, ...) SEC(TRASH);void lg(const char *fmt, ...) SEC(TRASH);// Virtual memory//#define ENABLE_VMM#if defined(ENABLE_VMM)void vm_init(void) SEC(TRASH);void vm_close(void) SEC(TRASH);int vm_halloc(word size) SEC(TRASH);void vm_hfree(int idx) SEC(TRASH);void* vm_lock(int idx) SEC(TRASH);void vm_unlock(int idx) SEC(TRASH);void* vm_alloc(word size) SEC(TRASH);void vm_free(void*) SEC(TRASH);#endif// PalmOS database I/O#if defined(_PalmOS)typedef DmOpenRef dbt_t;#elsetypedef mem_t dbt_t;#endifdbt_t dbt_create(const char *fileName) SEC(TRASH);void dbt_close(dbt_t f) SEC(TRASH);void dbt_write(dbt_t f, int index, void *ptr, int size) SEC(TRASH);void dbt_read(dbt_t f, int index, void *ptr, int size) SEC(TRASH);void dbt_prealloc(dbt_t f, int num, int size) SEC(TRASH);#if defined(__cplusplus)}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -