23 lines
		
	
	
	
		
			778 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
	
		
			778 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $Header$ */
 | |
| /*	S T R U C T U R E - S T O R A G E  D E F I N I T I O N S	*/
 | |
| 
 | |
| /*	Storage allocation is one of the most expensive operations in
 | |
| 	the compiler and consequently much thought and experimentation
 | |
| 	has gone into it.  To simplify the hooking in of new super-fancy
 | |
| 	algorithms, all allocating and freeing of storage for structs
 | |
| 	goes through the macros
 | |
| 		st_alloc(&head, size)
 | |
| 		st_free(ptr, head, size)
 | |
| 	which, hopefully, convey enough information.
 | |
| */
 | |
| 
 | |
| extern char *head_alloc();
 | |
| 
 | |
| #define	st_alloc(headp, size)		head_alloc((char **)headp, size)
 | |
| 
 | |
| #ifndef	BOTCH_FREE
 | |
| #define	st_free(ptr, head, size)	(ptr->next = head, head = ptr)
 | |
| #else	def BOTCH_FREE
 | |
| #define	st_free(ptr, head, size)	(botch((char *)(ptr), size), \
 | |
| 						ptr->next = head, head = ptr)
 | |
| #endif	BOTCH_FREE
 |