瀏覽代碼

updated header for segment library

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@39601 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 15 年之前
父節點
當前提交
ff3588bac4
共有 1 個文件被更改,包括 30 次插入1 次删除
  1. 30 1
      include/segment.h

+ 30 - 1
include/segment.h

@@ -11,6 +11,11 @@
 #include <sys/types.h>
 #endif
 
+struct aq {			/* age queue */
+    int cur;			/* segment number */
+    struct aq *younger, *older;	/* pointer to next younger and next older */
+} ;
+
 typedef struct
 {
     int open;			/* open flag */
@@ -19,22 +24,45 @@ typedef struct
     int len;			/* bytes per data value */
     int srows;			/* rows in segments */
     int scols;			/* cols in segments */
+    int srowscols;   /* rows x cols in segments */
     int size;			/* size in bytes of a segment */
     int spr;			/* segments per row */
     int spill;			/* cols in last segment in row */
+
+    /* fast mode */
+    int slow_adrs;      /* toggles fast address mode */
+    int scolbits;       /* column bitshift */
+    int srowbits;       /* row bitshift */
+    int segbits;        /* segment bitshift */
+    int slow_seek;      /* toggles fast seek mode */
+    int lenbits;        /* data size bitshift */
+    int sizebits;       /* segment size bitshift */
+    
     int fd;			/* file descriptor to read/write segment */
     struct SEGMENT_SCB		/* control blocks */
     {
 	char *buf;		/* data buffer */
 	char dirty;		/* dirty flag */
-	int age;		/* for order of access */
+	struct aq *age;		/* pointer to position in age queue */
 	int n;			/* segment number */
     } *scb;
+    struct RB_TREE *loaded;	/* search tree of loaded segments */
+    int nfreeslots;		/* number of free slots */
+    int *freeslot;		/* array of free slots */
+    struct aq *agequeue,	/* queue of age for order of access */ 
+              *youngest, 	/* youngest in age queue */
+	      *oldest;	        /* oldest in age queue */
     int nseg;			/* number of segments in memory */
     int cur;			/* last accessed segment */
     int offset;			/* offset of data past header */
 } SEGMENT;
 
+typedef struct
+{
+    int i;
+    int n;
+} SEGID;
+
 #include <grass/gis.h>
 
 int segment_address(const SEGMENT *, int, int, int *, int *);
@@ -51,5 +79,6 @@ int segment_put_row(const SEGMENT *, const void *, int);
 int segment_release(SEGMENT *);
 int segment_seek(const SEGMENT *, int, int);
 int segment_setup(SEGMENT *);
+int segment_compare(const void *, const void *);
 
 #endif /* GRASS_SEGMENT_H */