bitmap.h
上传用户:allwinjm
上传日期:2021-08-29
资源大小:99k
文件大小:3k
源码类别:

Internet/IE编程

开发平台:

Unix_Linux

  1. /************************************************************************ 
  2.  * RSTP library - Rapid Spanning Tree (802.1t, 802.1w) 
  3.  * Copyright (C) 2001-2003 Optical Access 
  4.  * Author: Alex Rozin 
  5.  * 
  6.  * This file is part of RSTP library. 
  7.  * 
  8.  * RSTP library is free software; you can redistribute it and/or modify it 
  9.  * under the terms of the GNU Lesser General Public License as published by the 
  10.  * Free Software Foundation; version 2.1 
  11.  * 
  12.  * RSTP library is distributed in the hope that it will be useful, but 
  13.  * WITHOUT ANY WARRANTY; without even the implied warranty of 
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser 
  15.  * General Public License for more details. 
  16.  * 
  17.  * You should have received a copy of the GNU Lesser General Public License 
  18.  * along with RSTP library; see the file COPYING.  If not, write to the Free 
  19.  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 
  20.  * 02111-1307, USA. 
  21.  **********************************************************************/
  22. #ifndef __BITMAP_H
  23. #define __BITMAP_H
  24. #define NUMBER_OF_PORTS 4
  25. typedef struct tagBITMAP
  26. {
  27.   unsigned long part0;     /* Least Significant part */
  28. } BITMAP_T;
  29. #define BitmapClear(BitmapPtr) 
  30.         { (BitmapPtr)->part0 = 0; }
  31. #define BitmapSetAllBits(BitmapPtr) 
  32.         { (BitmapPtr)->part0 = 0xF; }
  33. #define BitmapClearBits(BitmapPtr,BitmapBitsPtr) 
  34.         { (BitmapPtr)->part0 &= ~((BitmapBitsPtr)->part0); }
  35. #define BitmapSetBits(BitmapPtr,BitmapBitsPtr) 
  36.         { (BitmapPtr)->part0 |= ((BitmapBitsPtr)->part0); }
  37. #define BitmapOr(ResultPtr,BitmapPtr1,BitmapPtr2) 
  38.         { (ResultPtr)->part0 = (BitmapPtr1)->part0 | (BitmapPtr2)->part0; }
  39. #define BitmapAnd(ResultPtr,BitmapPtr1,BitmapPtr2) 
  40.         { (ResultPtr)->part0 = (BitmapPtr1)->part0 & (BitmapPtr2)->part0; }
  41. #define BitmapNot(ResultPtr,BitmapPtr) 
  42.         { (ResultPtr)->part0 = ~((BitmapPtr)->part0); }
  43. /* Return zero if identical */
  44. #define BitmapCmp(BitmapPtr1,BitmapPtr2) 
  45.         ((BitmapPtr1)->part0 != (BitmapPtr2)->part0) 
  46. #define BitmapIsZero(BitmapPtr) 
  47.         (!(BitmapPtr)->part0)
  48. #define BitmapIsAllOnes(BitmapPtr) 
  49.         ((BitmapPtr)->part0 == 0xF)
  50. #define BitmapGetBit(BitmapPtr,Bit) 
  51.          ((BitmapPtr)->part0 & (1 << (Bit)))
  52. /* Bit range [0 .. 63] */
  53. #define BitmapSetBit(BitmapPtr,Bit) 
  54.     {(BitmapPtr)->part0 |= (1 << (Bit)); }
  55. #define BitmapClearBit(BitmapPtr,Bit) 
  56.     (BitmapPtr)->part0 &= ~(1 << (Bit));
  57. #define BitmapCopy(BitmapDstPtr,BitmapSrcPtr) 
  58.         { (BitmapDstPtr)->part0 = (BitmapSrcPtr)->part0; }
  59. #define BitmapXor(ResultPtr,BitmapPtr1,BitmapPtr2) 
  60.         { (ResultPtr)->part0 = (BitmapPtr1)->part0 ^ (BitmapPtr2)->part0; }
  61. #endif /* __BITMAP_H */