flag.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef __FLAG_H__
  2. #define __FLAG_H__
  3. /* a set of routines that allow the programmer to "flag" cells in a
  4. * raster map. A flag is of type unsigned char, i.e. 8 bits can be set.
  5. *
  6. * int flag_set(flag, bitno)
  7. * sets the flag at position bitno to one.
  8. *
  9. * int flag_unset(flag, bitno)
  10. * sets the flag at position bitno to zero.
  11. *
  12. * int flag_get(flag, bitno)
  13. * checks if the flag is set at postion bitno.
  14. *
  15. * Examples:
  16. * set flag at position 0: FLAG_SET(flag, 0)
  17. * unset (clear) flag at position 7: FLAG_UNSET(flag, 7)
  18. * check flag at position 5: is_set_at_5 = FLAG_GET(flag, 5)
  19. */
  20. /* flag positions */
  21. #define NULLFLAG 0 /* elevation is NULL */
  22. #define EDGEFLAG 1 /* edge cell */
  23. #define INLISTFLAG 2 /* in open A* list */
  24. #define WORKEDFLAG 3 /* in closed A* list/ accumulation done */
  25. #define STREAMFLAG 4 /* stream */
  26. #define DEPRFLAG 5 /* real depression */
  27. #define WORKED2FLAG 6 /* extraction done */
  28. /* last bit is unused */
  29. #define FLAG_SET(flag,bitno) ((flag) |= (1 << (bitno)))
  30. #define FLAG_UNSET(flag,bitno) ((flag) &= ~(1 << (bitno)))
  31. #define FLAG_GET(flag,bitno) ((flag) & (1 << (bitno)))
  32. #endif /* __FLAG_H__ */