28234d85e715dd2adbe079667d4e74542528bc71
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
= 0;
97 memmove(cdat_buf
[num_cdats
]->name
, root
, 4);
99 cdat_stackp
= cdat_stack
;
100 *cdat_stackp
++ = cdat_buf
[num_cdats
++];
109 if(curr_max_cdats
<= num_cdats
)
110 { if( (realloc((void*) cdat_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
111 perror("realloc cdat_buf failed");
112 curr_max_cdats
+= PTRS_IN_PAGE
;
113 if( (realloc( (void*) cdat_stack
, PTRS_IN_PAGE
* 4)) == NULL
) //increase cdat_stack also
114 perror("realloc cdat_stack failed");
116 if( (CURR_CDAT
= (struct cdat
*) malloc(sizeof (struct cdat
)) ) == NULL
)
117 perror("malloc cdat failed");
128 if(num_odats
>= curr_max_odats
)
129 { if( (realloc((void*) odat_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
130 perror("realloc odat_buf failed");
131 curr_max_odats
+= PTRS_IN_PAGE
;
133 if( (CURR_ODAT
= (struct odat
*) malloc(sizeof (struct odat
))) == NULL
)
134 perror("malloc odat failed");
144 if(num_vdats
>= curr_max_vdats
)
145 { if( (realloc((void*) vdat_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
146 perror("realloc vdat_buf failed");
147 curr_max_vdats
+= PTRS_IN_PAGE
;
149 if((CURR_VDAT
= (struct vdat
*) malloc(sizeof (struct vdat
))) == NULL
)
150 perror("malloc vdat failed");
160 if(num_links
>= curr_max_links
)
161 { if( (realloc((void*) link_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
162 perror("realloc vdat_buf failed");
163 curr_max_links
+= PTRS_IN_PAGE
;
165 if((CURR_LINK
= (struct link
*) malloc(sizeof (struct link
))) == NULL
)
166 perror("malloc link failed");
177 if(num_refs
% 16 == 0)
178 { CURR_POST
= CURR_REF
;
182 if(num_refs
>= curr_max_refs
)
183 { if( (realloc((void*) ref_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
184 perror("realloc ref_buf failed");
185 curr_max_refs
+= PTRS_IN_PAGE
;
187 if((CURR_REF
= (struct ref
*) malloc(sizeof (struct ref
))) == NULL
)
188 perror("malloc ref failed");
196 if(num_posts
>= curr_max_posts
)
197 { if( (realloc((void*) ref_buf
, PTRS_IN_PAGE
* 4)) == NULL
)
198 perror("realoc post_buf failed");
199 curr_max_posts
+= PTRS_IN_PAGE
;
201 if ((CURR_POST
= (struct ref
*) malloc (sizeof (struct ref
))) == NULL
)
202 perror("malloc post failed");
229 return &CURR_CDAT
->CURR_SET
;
235 return &CURR_CDAT
->CURR_SET
.CURR_ELE
;