home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <string.h>
- #include "o.h"
-
- void init_trees()
- {
- NAME_T *name_root;
- SEG_T *segment_root;
- GRP_T *group_root;
- PUB_T *public_root;
- EXT_T *extern_root;
- SEX_T *sex_root;
- DAT_T *data_root;
- STRUC_T *struc_root;
- FIX_T *fix_root;
- HINT_T *hint_root;
- LINE_T *line_root;
- SCOPE_T *arg_scope_root;
- SCOPE_T *loc_scope_root;
- SCOPE_T *end_scope_root;
-
- line_root = o_malloc(sizeof(LINE_T));
- line_root->hex_offset = -1;
- line_tree = new_tree((char*)line_root,FALSE);
-
- loc_scope_root = o_malloc(sizeof(SCOPE_T));
- loc_scope_root->hex_offset = -1;
- loc_scope_root->head = NULL;
- loc_scope_tree = new_tree(loc_scope_root,FALSE);
-
- arg_scope_root = o_malloc(sizeof(SCOPE_T));
- arg_scope_root->hex_offset = -1;
- arg_scope_root->head = NULL;
- arg_scope_tree = new_tree(arg_scope_root,FALSE);
-
- end_scope_root = o_malloc(sizeof(SCOPE_T));
- end_scope_root->hex_offset = -1;
- end_scope_root->head = NULL; /* field not used in TCENDSCP */
- end_scope_tree = new_tree(end_scope_root,TRUE); /* allow duplicates */
-
- /* Make an empty name tree node */
- name_root = (NAME_T *)o_malloc( sizeof(NAME_T) );
- name_root->index = 0;
- strcpy( name_root->name, "Root NAME Node" );
-
- name_tree = new_tree( (char *)name_root, FALSE );
-
- /* Make an empty segment tree node */
- segment_root = (SEG_T *)o_malloc( sizeof(SEG_T) );
- segment_root->index = -1; /* Zero reserved to some equates */
- segment_root->name = 0;
- segment_root->class = NULL;
- segment_root->length = 0;
- segment_root->code = FALSE;
- segment_root->bit32 = FALSE;
-
- segment_tree = new_tree( (char *)segment_root, FALSE );
-
- /* Make an empty group tree node */
- group_root = (GRP_T *)o_malloc( sizeof(GRP_T) );
- group_root->index = 0;
- group_root->name = 0;
-
- group_tree = new_tree( (char *)group_root, FALSE );
-
- /* Make an empty public tree node */
- public_root = (PUB_T *)o_malloc( sizeof(PUB_T) );
- public_root->seg_idx = -1; /* Zero reserved to some equates */
- public_root->offset = 0;
- public_root->domain = 0;
- public_root->scope = FALSE;
- strcpy( public_root->name, "Root PUBLIC Node" );
-
- public_tree = new_tree( (char *)public_root, TRUE );
-
- /* Make an empty external tree node */
- extern_root = (EXT_T *)o_malloc( sizeof(EXT_T) );
- extern_root->index = 0;
- extern_root->type = 0;
- extern_root->com_ext = 0;
- extern_root->var_type = 0;
- extern_root->size = 0L;
- extern_root->used = 0;
- extern_root->scope = 0;
- strcpy( extern_root->name, "Root EXTERN Node" );
-
- extern_tree = new_tree( (char *)extern_root, FALSE );
-
- /* Make an empty external tree node */
- sex_root = (SEX_T *)o_malloc( sizeof(SEX_T) );
- sex_root->seg_index = 0;
-
- sex_tree = new_tree( (char *)sex_root, FALSE );
-
- /* Make an empty data record tree node */
- data_root = (DAT_T *)o_malloc( sizeof(DAT_T) );
- data_root->seg_idx = -1; /* Zero reserved to some equates */
- data_root->offset = 0;
- data_root->file_pos = 0L;
- data_root->length = 0;
-
- data_tree = new_tree( (char *)data_root, FALSE );
-
- /* Make an empty structure tree node */
- struc_root = (STRUC_T *)o_malloc( sizeof(STRUC_T) );
- struc_root->form = "";
-
- struc_tree = new_tree( (char *)struc_root, FALSE );
-
- /* Make an empty fixup record tree node */
- fix_root = (FIX_T *)o_malloc( sizeof(FIX_T) );
- fix_root->seg_idx = -1; /* Zero reserved to some equates */
- fix_root->offset = 0;
- fix_root->relate = 0;
- fix_root->form = 0;
- fix_root->a_mode = 0;
- fix_root->a_index = 0;
- fix_root->b_mode = 0;
- fix_root->b_index = 0;
- fix_root->displacement = 0L;
- fix_root->extended = FALSE;
- fix_root->word_sized = FALSE;
-
- fix_tree = new_tree( (char *)fix_root, FALSE );
-
- hint_root = (HINT_T *)o_malloc( sizeof(HINT_T) );
- hint_root->seg_idx = 0;
- hint_root->offset = 0L;
- hint_root->hint_type = 0;
- hint_root->length = 0L;
- hint_tree = new_tree( (char *)hint_root, FALSE );
- }