off.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * off.h
  4.  *   POSTGRES disk "offset" definitions.
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: off.h,v 1.7.2.1 1999/07/30 17:07:16 scrappy Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. #ifndef OFF_H
  14. #define OFF_H
  15. #include "storage/itemid.h"
  16. /*
  17.  * OffsetNumber:
  18.  *
  19.  * this is a 1-based index into the linp (ItemIdData) array in the
  20.  * header of each disk page.
  21.  */
  22. typedef uint16 OffsetNumber;
  23. #define InvalidOffsetNumber ((OffsetNumber) 0)
  24. #define FirstOffsetNumber ((OffsetNumber) 1)
  25. #define MaxOffsetNumber ((OffsetNumber) (BLCKSZ / sizeof(ItemIdData)))
  26. #define OffsetNumberMask (0xffff) /* valid uint16 bits */
  27. /* ----------------
  28.  * support macros
  29.  * ----------------
  30.  */
  31. /*
  32.  * OffsetNumberIsValid
  33.  * True iff the offset number is valid.
  34.  */
  35. #define OffsetNumberIsValid(offsetNumber) 
  36. ((bool) ((offsetNumber != InvalidOffsetNumber) && 
  37.  (offsetNumber <= MaxOffsetNumber)))
  38. /*
  39.  * OffsetNumberNext
  40.  * OffsetNumberPrev
  41.  * Increments/decrements the argument.  These macros look pointless
  42.  * but they help us disambiguate the different manipulations on
  43.  * OffsetNumbers (e.g., sometimes we substract one from an
  44.  * OffsetNumber to move back, and sometimes we do so to form a
  45.  * real C array index).
  46.  */
  47. #define OffsetNumberNext(offsetNumber) 
  48. ((OffsetNumber) (1 + (offsetNumber)))
  49. #define OffsetNumberPrev(offsetNumber) 
  50. ((OffsetNumber) (-1 + (offsetNumber)))
  51. #endif  /* OFF_H */