Beispiel #1
0
void be_free(be_node *node)
{
	switch (node->type) {
		case BE_STR:
			_be_free_str(node->val.s);
			break;

		case BE_INT:
			break;

		case BE_LIST: {
			unsigned int i;
			for (i = 0; node->val.l[i]; ++i)
				be_free(node->val.l[i]);
			free(node->val.l);
			break;
		}

		case BE_DICT: {
			unsigned int i;
			for (i = 0; node->val.d[i].val; ++i) {
				_be_free_str(node->val.d[i].key);
				be_free(node->val.d[i].val);
			}
			free(node->val.d);
			break;
		}
	}
	free(node);
}
Beispiel #2
0
void be_free(be_node *node)
{
    if(node == NULL)
        return;
    //printf("enter free\n");
    //printf("node->type is %d\n",node->type);
	switch (node->type) {
		case BE_STR:
            //printf("BE_STR free\n");
			_be_free_str(node->val.s);
			break;

		case BE_INT:
			break;

		case BE_LIST: {
            //printf("BE_LIST free\n");
			unsigned int i;
			for (i = 0; node->val.l[i]; ++i)
				be_free(node->val.l[i]);
			free(node->val.l);
			break;
		}

		case BE_DICT: {
            //printf("BE_DICT free\n");
			unsigned int i;
			for (i = 0; node->val.d[i].val; ++i) {
                //printf("node key is %s\n",node->val.d[i].key);
				_be_free_str(node->val.d[i].key);
				be_free(node->val.d[i].val);
			}
			free(node->val.d);
			break;
		}
	}
    //printf("free node\n");
	free(node);
    //printf("leave free\n");
}