39 #define CURR_CDAT (*cdat_stackp)
40 #define CURR_SET set_list[CURR_CDAT->num_sets]
41 #define CURR_ELE ele_list[CURR_CDAT->CURR_SET.num_ele]
42 #define PREV_REF (ref_buf[num_refs-1])
43 #define CURR_REF (ref_buf[num_refs])
44 #define PREV_ODAT (odat_buf[num_odats-1])
45 #define CURR_ODAT (odat_buf[num_odats])
46 #define CURR_VDAT (vdat_buf[num_vdats])
47 #define PREV_VDAT (vdat_buf[num_vdats-1])
48 #define CURR_MODEL (CURR_VDAT->model_list[CURR_VDAT->num_models])
49 #define CURR_LINK (link_buf[num_links])
50 #define CURR_POST (post_buf[num_posts])
51 #define CURR_QUAD (CURR_ODAT->quad_list[CURR_ODAT->num_quads])
55 int curr_max_cdats
= PTRS_IN_PAGE
;
57 struct cdat
* cdat_buf
[PTRS_IN_PAGE
];
58 struct cdat
* cdat_stack
[PTRS_IN_PAGE
];
59 struct cdat
** cdat_stackp
;
63 int curr_max_odats
= PTRS_IN_PAGE
;
64 struct odat
* odat_buf
[PTRS_IN_PAGE
];
68 int curr_max_vdats
= PTRS_IN_PAGE
;
69 struct vdat
* vdat_buf
[PTRS_IN_PAGE
];
73 int curr_max_refs
= PTRS_IN_PAGE
;
74 struct ref
* ref_buf
[PTRS_IN_PAGE
];
75 uint64_t ss_ref_id
= 0x00FFFFFF; /* system space for ref_ids */
78 int curr_max_posts
= PTRS_IN_PAGE
;
79 struct ref
* post_buf
[PTRS_IN_PAGE
];
83 int curr_max_links
= PTRS_IN_PAGE
;
84 struct link
* link_buf
[PTRS_IN_PAGE
];
87 /* The initalization function of the IR. */
92 /* Init root cdat and stack */
93 char root
[4] = "root";
95 cdat_buf
[num_cdats
] = (struct cdat
*) malloc(sizeof(struct cdat
) );
96 cdat_buf
[num_cdats
]->idx
= num_cdats
;
97 memmove(cdat_buf
[num_cdats
]->name
, root
, 4);
99 cdat_stackp
= cdat_stack
;
100 *cdat_stackp
++ = cdat_buf
[num_cdats
++];
109 for(i
= 0; i
<= num_odats
; i
++)
113 for(i
= 0; i
<= num_cdats
; i
++)
117 for(i
= 0; i
<= num_vdats
; i
++)
121 for(i
= 0; i
<= num_refs
; i
++)
125 for(i
= 0; i
<= num_links
; i
++)
137 if(curr_max_cdats
<= num_cdats
)
138 { if( (realloc((void*) cdat_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
139 perror("realloc cdat_buf failed");
140 curr_max_cdats
+= PTRS_IN_PAGE
;
141 if( (realloc( (void*) cdat_stack
, PTRS_IN_PAGE
* 4)) == NULL
) //increase cdat_stack also
142 perror("realloc cdat_stack failed");
144 if( (CURR_CDAT
= (struct cdat
*) malloc(sizeof (struct cdat
)) ) == NULL
)
145 perror("malloc cdat failed");
156 if(num_odats
>= curr_max_odats
)
157 { if( (realloc((void*) odat_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
158 perror("realloc odat_buf failed");
159 curr_max_odats
+= PTRS_IN_PAGE
;
161 if( (CURR_ODAT
= (struct odat
*) malloc(sizeof (struct odat
))) == NULL
)
162 perror("malloc odat failed");
172 if(num_vdats
>= curr_max_vdats
)
173 { if( (realloc((void*) vdat_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
174 perror("realloc vdat_buf failed");
175 curr_max_vdats
+= PTRS_IN_PAGE
;
177 if((CURR_VDAT
= (struct vdat
*) malloc(sizeof (struct vdat
))) == NULL
)
178 perror("malloc vdat failed");
188 if(num_links
>= curr_max_links
)
189 { if( (realloc((void*) link_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
190 perror("realloc vdat_buf failed");
191 curr_max_links
+= PTRS_IN_PAGE
;
193 if((CURR_LINK
= (struct link
*) malloc(sizeof (struct link
))) == NULL
)
194 perror("malloc link failed");
205 if(num_refs
% 16 == 0)
206 { CURR_POST
= CURR_REF
;
210 if(num_refs
>= curr_max_refs
)
211 { if( (realloc((void*) ref_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
212 perror("realloc ref_buf failed");
213 curr_max_refs
+= PTRS_IN_PAGE
;
215 if((CURR_REF
= (struct ref
*) malloc(sizeof (struct ref
))) == NULL
)
216 perror("malloc ref failed");
224 if(num_posts
>= curr_max_posts
)
225 { if( (realloc((void*) ref_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
226 perror("realoc post_buf failed");
227 curr_max_posts
+= PTRS_IN_PAGE
;
229 if ((CURR_POST
= (struct ref
*) malloc (sizeof (struct ref
))) == NULL
)
230 perror("malloc post failed");
257 return &CURR_CDAT
->CURR_SET
;
263 return &CURR_CDAT
->CURR_SET
.CURR_ELE
;