68 lines
1.9 KiB
C
68 lines
1.9 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* sdir.h
|
|
* POSTGRES scan direction definitions.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2024, 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 NoMovementScanDirectionScans. 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 */
|