11 #define MAXHASHLEN 1024
13 typedef struct VTrackStruct {
18 struct VTrackStruct *next;
19 struct VTrackStruct *previous;
23 typedef struct VBucketStruct {
27 } *VBucket, VBucketRec;
29 typedef struct VolumeStruct {
37 struct VolumeStruct *next;
41 typedef struct V_VolumesRec {
50 #define VolumesAttrList(volumes) ((volumes)->attributes)
51 #define VolumesNum(volumes) ((volumes)->nvolumes)
52 #define VolumesNBands(volumes) ((volumes)->nbands)
53 #define VolumesNRows(volumes) ((volumes)->nrows)
54 #define VolumesNColumns(volumes) ((volumes)->ncolumns)
55 #define VolumesNVolumes(volumes) ((volumes)->ntracks)
60 #define VolumeNBands(volume) ((volume)->nbands)
61 #define VolumeNRows(volume) ((volume)->nrows)
62 #define VolumeNColumns(volume) ((volume)->ncolumns)
63 #define VolumeNBuckets(volume) ((volume)->nbuckets)
64 #define VolumeNTracks(volume) ((volume)->ntracks)
65 #define VolumeLabel(volume) ((volume)->label)
66 #define VFirstVolume(volumes) ((volumes)->first)
67 #define VNextVolume(volume) ((volume)->next)
68 #define VolumeExists(volume) ((volume) != NULL)
70 #define VTrackLength(track) ((track)->length)
71 #define VTrackExists(track) ((track) != NULL)
72 #define VFirstTrack(volume,i) ((volume)->bucket[(i)].first)
73 #define VNextTrack(track) ((track)->next)
74 #define VPreviousTrack(track) ((track)->previous)
76 #define VolumesAttr "volumes"
77 #define VolNVolumesAttr "nvolumes"
78 #define VolNTracksAttr "ntracks"
79 #define VolNBandsAttr "nbands"
80 #define VolNRowsAttr "nrows"
81 #define VolNColumnsAttr "ncolumns"
83 extern Volumes VCreateVolumes(
short,
short,
short);
85 extern void VDestroyVolumes(
Volumes);
86 extern VBoolean VWriteVolumes(FILE *, VAttrList,
int,
Volumes *);
88 extern int VReadVolumes(FILE *, VAttrList *,
Volumes **);
90 extern Volume VCreateVolume(
short,
short,
short,
short,
short);
95 extern double VolumeBorderSize(
Volume);
96 extern VBoolean VolumeBorder(
Volume,
short,
short,
short);
99 extern double VolumeRadius(
Volume,
double *);
104 #define VolumeHash(nbands, b, r, len) (((b) * (nbands) + (r)) % (len))