which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@5762 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| 
 | |
| /*******************************************************************************
 | |
| *  Copyright 1991-1996 by ORCA Software, Inc.                                  *
 | |
| *                                                                              *
 | |
| *  All rights reserved.  May not be reproduced or distributed, in printed or   *
 | |
| *  electronic form, without permission of ORCA Software, Inc.  May not be      *
 | |
| *  distributed as object code, separately or linked with other object modules, *
 | |
| *  without permission.                                                         *
 | |
| *******************************************************************************/
 | |
| 
 | |
| /******************************************************************
 | |
| Heap module
 | |
| ******************************************************************/
 | |
| void *heap_malloc( size_t size );
 | |
| void heap_free( void *p );
 | |
| void *heap_realloc( void *p, size_t size );
 | |
| void heap_dbg( char *title );
 | |
| 
 | |
| #define MAX_NODE_SIZE 16000
 | |
| #define HEAP_SIZE 32000
 | |
| 
 | |
| #define NODE_SET_MAGIC(node) (node->size = 0xFFFF)
 | |
| #define NODE_IS_MAGIC(node) (node->size == 0xFFFF)
 | |
| 
 | |
| #define NODE_MARK_ALLOCATED(node) (node->size |= 0x8000)
 | |
| #define NODE_MARK_FREE(node) (node->size &= 0x7FFF)
 | |
| #define NODE_IS_FREE(node) ( (node->size & 0x8000) == 0 )
 | |
| 
 | |
| #define NODE_SET_SIZE(node, n) (node->size = (node->size & 0x8000) | (n))
 | |
| #define NODE_GET_SIZE(node) (node->size & 0x7FFF)
 | |
| 
 | |
| #define PTR_IS_GLOBAL(p) ((PTR_LONG(p) & 0xFFFF) == 0)
 | |
| #define NEXT_NODE(node) ( (NODE *)((char *)node + sizeof(NODE) + NODE_GET_SIZE(node)))
 | |
| 
 | |
| #define PTR_TO_NODE(p) ((NODE *)(p) - 1)
 | |
| #define NODE_TO_PTR(node) ((char *)(node + 1))
 | |
| 
 | |
| typedef struct _s_node
 | |
| {
 | |
|   unsigned short size;
 | |
| } NODE;
 | |
| 
 | |
| typedef struct _s_enode
 | |
| {
 | |
|   unsigned short size;          /* equal to NODE_MAGIC */
 | |
|   struct _s_node *next;         /* pointer to next heap */
 | |
| } E_NODE;
 | |
| 
 | |
| #define ALIGNMENT (sizeof(NODE))
 |