예제 #1
0
파일: value.c 프로젝트: 9drops/lighttpd2
liCondition* li_value_extract_condition(liValue *val) {
	liCondition* result;
	if (NULL == val || val->type != LI_VALUE_CONDITION) return NULL;
	result = val->data.val_cond.cond;
	_li_value_clear(val);
	return result;
}
예제 #2
0
파일: value.c 프로젝트: presbrey/lighttpd2
void li_value_clear(liValue *val) {
    if (NULL == val) return;

    switch (val->type) {
    case LI_VALUE_NONE:
    case LI_VALUE_BOOLEAN:
    case LI_VALUE_NUMBER:
        /* Nothing to free */
        break;
    case LI_VALUE_STRING:
        g_string_free(val->data.string, TRUE);
        break;
    case LI_VALUE_LIST:
        li_value_list_free(val->data.list);
        break;
    case LI_VALUE_HASH:
        g_hash_table_destroy(val->data.hash);
        break;
    case LI_VALUE_ACTION:
        li_action_release(val->data.val_action.srv, val->data.val_action.action);
        break;
    case LI_VALUE_CONDITION:
        li_condition_release(val->data.val_cond.srv, val->data.val_cond.cond);
        break;
    }
    _li_value_clear(val);
}
예제 #3
0
파일: value.c 프로젝트: 9drops/lighttpd2
void li_value_clear(liValue *val) {
	if (NULL == val) return;

	switch (val->type) {
	case LI_VALUE_ACTION:
		li_action_release(val->data.val_action.srv, val->data.val_action.action);
		_li_value_clear(val);
		break;
	case LI_VALUE_CONDITION:
		li_condition_release(val->data.val_cond.srv, val->data.val_cond.cond);
		_li_value_clear(val);
		break;
	default:
		li_common_value_clear_(val);
	}
}
예제 #4
0
GPtrArray* li_value_extract_list(liValue *val) {
	GPtrArray* result;
	if (NULL == val || val->type != LI_VALUE_LIST) return NULL;
	result = val->data.list;
	_li_value_clear(val);
	return result;
}
예제 #5
0
파일: value.c 프로젝트: 9drops/lighttpd2
liAction* li_value_extract_action(liValue *val) {
	liAction* result;
	if (NULL == val || val->type != LI_VALUE_ACTION) return NULL;
	result = val->data.val_action.action;
	_li_value_clear(val);
	return result;
}
예제 #6
0
GString* li_value_extract_string(liValue *val) {
	GString* result;
	if (NULL == val || val->type != LI_VALUE_STRING) return NULL;
	result = val->data.string;
	_li_value_clear(val);
	return result;
}
예제 #7
0
liValue* li_value_extract(liValue *val) {
	liValue *v;
	if (NULL == val) return NULL;
	v = li_value_new_none();
	*v = *val;
	_li_value_clear(val);
	return v;
}
예제 #8
0
파일: value.c 프로젝트: 9drops/lighttpd2
gpointer li_value_extract_ptr(liValue *val) {
	gpointer ptr;

	if (NULL == val) return NULL;

	switch (val->type) {
	case LI_VALUE_ACTION:
		ptr = val->data.val_action.action;
		_li_value_clear(val);
		return ptr;
	case LI_VALUE_CONDITION:
		ptr = val->data.val_action.action;
		_li_value_clear(val);
		return ptr;
	default:
		return li_common_value_extract_ptr_(val);
	}
}
예제 #9
0
void li_common_value_clear_(liValue *val) {
	if (NULL == val) return;

	switch (val->type) {
	case LI_VALUE_NONE:
	case LI_VALUE_BOOLEAN:
	case LI_VALUE_NUMBER:
		/* Nothing to free */
		break;
	case LI_VALUE_STRING:
		g_string_free(val->data.string, TRUE);
		break;
	case LI_VALUE_LIST:
		li_value_list_free(val->data.list);
		break;
	}
	_li_value_clear(val);
}
예제 #10
0
gpointer li_common_value_extract_ptr_(liValue *val) {
	gpointer ptr = NULL;

	if (NULL == val) return NULL;

	switch (val->type) {
	case LI_VALUE_NONE:
		break;
	case LI_VALUE_BOOLEAN:
		break;
	case LI_VALUE_NUMBER:
		break;
	case LI_VALUE_STRING:
		ptr = val->data.string;
		break;
	case LI_VALUE_LIST:
		ptr = val->data.list;
		break;
	}
	_li_value_clear(val);
	return ptr;
}
예제 #11
0
파일: value.c 프로젝트: presbrey/lighttpd2
void li_value_move(liValue *dest, liValue *src) {
    assert(NULL != dest && NULL != src && dest != src);
    li_value_clear(dest);
    *dest = *src;
    _li_value_clear(src);
}
예제 #12
0
void li_value_move(liValue *dest, liValue *src) {
	LI_FORCE_ASSERT(NULL != dest && NULL != src && dest != src);
	li_value_clear(dest);
	*dest = *src;
	_li_value_clear(src);
}