mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*-------------------------------------------------------------------------
 | |
|  *
 | |
|  * sdir.h
 | |
|  *	  POSTGRES scan direction definitions.
 | |
|  *
 | |
|  *
 | |
|  * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
 | |
|  * Portions Copyright (c) 1994, Regents of the University of California
 | |
|  *
 | |
|  * src/include/access/sdir.h
 | |
|  *
 | |
|  *-------------------------------------------------------------------------
 | |
|  */
 | |
| #ifndef SDIR_H
 | |
| #define SDIR_H
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * Defines the direction for scanning a table or an index.  Scans are never
 | |
|  * invoked using NoMovementScanDirection.  For convenience, we use the values
 | |
|  * -1 and 1 for backward and forward scans.  This allows us to perform a few
 | |
|  * mathematical tricks such as what is done in ScanDirectionCombine.
 | |
|  */
 | |
| typedef enum ScanDirection
 | |
| {
 | |
| 	BackwardScanDirection = -1,
 | |
| 	NoMovementScanDirection = 0,
 | |
| 	ForwardScanDirection = 1
 | |
| } ScanDirection;
 | |
| 
 | |
| /*
 | |
|  * Determine the net effect of two direction specifications.
 | |
|  * This relies on having ForwardScanDirection = +1, BackwardScanDirection = -1,
 | |
|  * and will probably not do what you want if applied to any other values.
 | |
|  */
 | |
| #define ScanDirectionCombine(a, b)  ((a) * (b))
 | |
| 
 | |
| /*
 | |
|  * ScanDirectionIsValid
 | |
|  *		True iff scan direction is valid.
 | |
|  */
 | |
| #define ScanDirectionIsValid(direction) \
 | |
| 	((bool) (BackwardScanDirection <= (direction) && \
 | |
| 			 (direction) <= ForwardScanDirection))
 | |
| 
 | |
| /*
 | |
|  * ScanDirectionIsBackward
 | |
|  *		True iff scan direction is backward.
 | |
|  */
 | |
| #define ScanDirectionIsBackward(direction) \
 | |
| 	((bool) ((direction) == BackwardScanDirection))
 | |
| 
 | |
| /*
 | |
|  * ScanDirectionIsNoMovement
 | |
|  *		True iff scan direction indicates no movement.
 | |
|  */
 | |
| #define ScanDirectionIsNoMovement(direction) \
 | |
| 	((bool) ((direction) == NoMovementScanDirection))
 | |
| 
 | |
| /*
 | |
|  * ScanDirectionIsForward
 | |
|  *		True iff scan direction is forward.
 | |
|  */
 | |
| #define ScanDirectionIsForward(direction) \
 | |
| 	((bool) ((direction) == ForwardScanDirection))
 | |
| 
 | |
| #endif							/* SDIR_H */
 |