segment.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef GRASS_SEGMENT_H
  2. #define GRASS_SEGMENT_H
  3. #include <grass/config.h>
  4. #ifdef HAVE_UNISTD_H
  5. #include <unistd.h>
  6. #endif
  7. #ifdef HAVE_SYS_TYPES_H
  8. #include <sys/types.h>
  9. #endif
  10. typedef struct
  11. {
  12. int open; /* open flag */
  13. int nrows; /* rows in original data */
  14. int ncols; /* cols in original data */
  15. int len; /* bytes per data value */
  16. int srows; /* rows in segments */
  17. int scols; /* cols in segments */
  18. int size; /* size in bytes of a segment */
  19. int spr; /* segments per row */
  20. int spill; /* cols in last segment in row */
  21. int fd ; /* file descriptor to read/write segment */
  22. struct SEGMENT_SCB /* control blocks */
  23. {
  24. char *buf ; /* data buffer */
  25. char dirty ; /* dirty flag */
  26. int age; /* for order of access */
  27. int n; /* segment number */
  28. } *scb ;
  29. int nseg; /* number of segments in memory */
  30. int cur; /* last accessed segment */
  31. int offset; /* offset of data past header */
  32. } SEGMENT ;
  33. #include <grass/gis.h>
  34. int segment_address (const SEGMENT *, int, int, int *, int *);
  35. int segment_flush (SEGMENT *);
  36. int segment_format (int, int, int, int, int, int);
  37. int segment_format_nofill (int, int, int, int, int, int);
  38. int segment_get(SEGMENT *,void *, int, int);
  39. int segment_get_row (const SEGMENT *, void *, int);
  40. int segment_init ( SEGMENT *, int, int);
  41. int segment_pagein (SEGMENT *,int);
  42. int segment_pageout (SEGMENT *,int);
  43. int segment_put (SEGMENT *,const void *,int,int);
  44. int segment_put_row (const SEGMENT *,const void *,int);
  45. int segment_release (SEGMENT *);
  46. int segment_seek (const SEGMENT *, int, int);
  47. int segment_setup (SEGMENT *);
  48. #endif /* GRASS_SEGMENT_H */