| 3776 | /* Functions for binary tree operation. */ |
| 3777 | |
| 3778 | /* Create a tree node. */ |
| 3779 | |
| 3780 | static bin_tree_t * |
| 3781 | create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right, |
| 3782 | re_token_type_t type) |
| 3783 | { |
| 3784 | re_token_t t; |
| 3785 | t.type = type; |
| 3786 | return create_token_tree (dfa, left, right, &t); |
| 3787 | } |
| 3788 | |
| 3789 | static bin_tree_t * |
| 3790 | create_token_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right, |
| 3791 | const re_token_t *token) |
| 3792 | { |
| 3793 | bin_tree_t *tree; |
| 3794 | if (BE (dfa->str_tree_storage_idx == BIN_TREE_STORAGE_SIZE, 0)) |
| 3795 | { |
| 3796 | bin_tree_storage_t *storage = re_malloc (bin_tree_storage_t, 1); |
| 3797 | |
| 3798 | if (storage == NULL) |
| 3799 | return NULL; |
| 3800 | storage->next = dfa->str_tree_storage; |
| 3801 | dfa->str_tree_storage = storage; |
| 3802 | dfa->str_tree_storage_idx = 0; |
| 3803 | } |
| 3804 | tree = &dfa->str_tree_storage->data[dfa->str_tree_storage_idx++]; |
| 3805 | |
| 3806 | tree->parent = NULL; |
| 3807 | tree->left = left; |
| 3808 | tree->right = right; |
| 3809 | tree->token = *token; |
| 3810 | tree->token.duplicated = 0; |
| 3811 | tree->token.opt_subexp = 0; |
| 3812 | tree->first = NULL; |
| 3813 | tree->next = NULL; |
no outgoing calls
no test coverage detected