mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
| /* insque(3C) routines
 | |
|    This file is in the public domain.  */
 | |
| 
 | |
| /*
 | |
| 
 | |
| @deftypefn Supplemental void insque (struct qelem *@var{elem}, @
 | |
|   struct qelem *@var{pred})
 | |
| @deftypefnx Supplemental void remque (struct qelem *@var{elem})
 | |
| 
 | |
| Routines to manipulate queues built from doubly linked lists.  The
 | |
| @code{insque} routine inserts @var{elem} in the queue immediately
 | |
| after @var{pred}.  The @code{remque} routine removes @var{elem} from
 | |
| its containing queue.  These routines expect to be passed pointers to
 | |
| structures which have as their first members a forward pointer and a
 | |
| back pointer, like this prototype (although no prototype is provided):
 | |
| 
 | |
| @example
 | |
| struct qelem @{
 | |
|   struct qelem *q_forw;
 | |
|   struct qelem *q_back;
 | |
|   char q_data[];
 | |
| @};
 | |
| @end example
 | |
| 
 | |
| @end deftypefn
 | |
| 
 | |
| */
 | |
| 
 | |
| 
 | |
| struct qelem {
 | |
|   struct qelem *q_forw;
 | |
|   struct qelem *q_back;
 | |
| };
 | |
| 
 | |
| 
 | |
| void
 | |
| insque (struct qelem *elem, struct qelem *pred)
 | |
| {
 | |
|   elem -> q_forw = pred -> q_forw;
 | |
|   pred -> q_forw -> q_back = elem;
 | |
|   elem -> q_back = pred;
 | |
|   pred -> q_forw = elem;
 | |
| }
 | |
| 
 | |
| 
 | |
| void
 | |
| remque (struct qelem *elem)
 | |
| {
 | |
|   elem -> q_forw -> q_back = elem -> q_back;
 | |
|   elem -> q_back -> q_forw = elem -> q_forw;
 | |
| }
 |