#ifndef DBF_NDX_H_
#define DBF_NDX_H_
#include "dbf.h"
#define NDX_PAGE_SZ 512
struct dndx_header {
char dndx_st_pg[4];
char dndx_tot_pg[4];
char dndx_filler1[4];
char dndx_key_len[2];
char dndx_keys_ppg[2];
char dndx_key_type[2];
char dndx_size_key[4];
char dndx_filler2;
char dndx_unique;
char dndx_key_name[488];
};
typedef struct dndx_header dndx_header_t;
struct ndx_header {
long ndx_start_pg;
long ndx_total_pgs;
unsigned short ndx_key_len;
unsigned short ndx_keys_ppg;
unsigned short ndx_key_type;
char ndx_unique;
long ndx_key_size;
char *ndx_key_name;
int ndx_fd;
struct ndx_page *ndx_fp;
dndx_header_t *ndx_hpage;
struct ndx_record *ndx_cur_rec;
};
typedef struct ndx_header ndx_header_t;
#define NDX_CHAR_TYPE 00
#define NDX_NUM_TYPE 01
struct dndx_record {
char dndx_left_pg[4];
char dndx_dbf_rec[4];
char dndx_key_data;
};
typedef struct dndx_record dndx_record_t;
struct ndx_record {
long ndxr_left;
long ndxr_rec;
char *ndxr_key_data;
struct ndx_page *ndxr_page;
int ndxr_p_nrec;
};
typedef struct ndx_record ndx_record_t;
struct dndx_page {
char dndxp_num_keys[4];
struct dndx_record dndx_rp;
};
typedef struct dndx_page dndx_page_t;
struct ndx_page {
long ndxp_page_no;
long ndxp_num_keys;
dndx_page_t *ndxp_page_data;
ndx_header_t *ndxp_header_p;
long ndxp_last_key;
struct ndx_page *ndxp_parent;
int ndxp_par_rno;
struct ndx_record *ndxp_records;
};
typedef struct ndx_page ndx_page_t;
extern ndx_header_t *ndx_get_header(int);
extern ndx_record_t *ndx_get_first_rec(ndx_header_t *);
extern ndx_record_t *ndx_get_next_rec(ndx_header_t *, ndx_record_t *);
#endif