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

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * bit.c
  4.  *   Standard bit array code.
  5.  *
  6.  * Copyright (c) 1994, Regents of the University of California
  7.  *
  8.  *
  9.  * IDENTIFICATION
  10.  *   $Header: /usr/local/cvsroot/pgsql/src/backend/lib/bit.c,v 1.6 1999/02/13 23:15:32 momjian Exp $
  11.  *
  12.  *-------------------------------------------------------------------------
  13.  */
  14. /*
  15.  * utils/memutils.h contains declarations of the functions in this file
  16.  */
  17. #include <postgres.h>
  18. #include <utils/bit.h>
  19. #include <utils/memutils.h>
  20. void
  21. BitArraySetBit(BitArray bitArray, BitIndex bitIndex)
  22. {
  23. bitArray[bitIndex / BitsPerByte]
  24. |= (1 << (BitsPerByte - (bitIndex % BitsPerByte) - 1));
  25. return;
  26. }
  27. void
  28. BitArrayClearBit(BitArray bitArray, BitIndex bitIndex)
  29. {
  30. bitArray[bitIndex / BitsPerByte]
  31. &= ~(1 << (BitsPerByte - (bitIndex % BitsPerByte) - 1));
  32. return;
  33. }
  34. bool
  35. BitArrayBitIsSet(BitArray bitArray, BitIndex bitIndex)
  36. {
  37. return ((bool) (((bitArray[bitIndex / BitsPerByte] &
  38.   (1 << (BitsPerByte - (bitIndex % BitsPerByte)
  39.  - 1)
  40.    )
  41.   ) != 0) ? 1 : 0));
  42. }