⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmem.h

📁 smallbasic for linux
💻 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 + -