/
dzavalishin
/
Modest
Обзор
Документация
Войти
/
dzavalishin
/
Modest
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
source/mycss/declaration/entry.c
118 строк
4 KB
lexborisov
Changed (C)
14 мар 2017, 23:44
14 мар 2017, 23:44
455a853
Код
Авторство
О чём код?
/* Copyright (C) 2016-2017 Alexander Borisov This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Author: lex.borisov@gmail.com (Alexander Borisov) */ #include "mycss/declaration/entry.h" #include "mycss/declaration/entry_destroy_resources.h" mycss_declaration_entry_t * mycss_declaration_entry_create(mycss_declaration_t* declaration, mystatus_t* status) { mycss_declaration_entry_t *dec_entry = mcobject_malloc(declaration->mcobject_entries, status); memset(dec_entry, 0, sizeof(mycss_declaration_entry_t)); return dec_entry; } void mycss_declaration_entry_clean(mycss_declaration_entry_t* entry) { entry->value = NULL; entry->value_type = 0; entry->is_important = false; entry->type = MyCSS_PROPERTY_TYPE_UNDEF; entry->flags = MyCSS_DECLARATION_FLAGS_UNDEF; } void mycss_declaration_entry_clean_all(mycss_declaration_entry_t* dec_entry) { memset(dec_entry, 0, sizeof(mycss_declaration_entry_t)); } mycss_declaration_entry_t * mycss_declaration_entry_destroy(mycss_declaration_t* declaration, mycss_declaration_entry_t* decl_entry, bool self_destroy) { if(decl_entry == NULL) return NULL; return mycss_declaration_entry_destroy_map_by_type[ decl_entry->type ](declaration, decl_entry, self_destroy); } void mycss_declaration_entry_append_to_current(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry) { if(declaration->entry_last) { declaration->entry_last->next = dec_entry; dec_entry->prev = declaration->entry_last; } else { (*declaration->entry) = dec_entry; } declaration->entry_last = dec_entry; } mycss_declaration_entry_t * mycss_declaration_entry_clone(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry, bool with_value) { mycss_declaration_entry_t *new_decl = mycss_declaration_entry_create(declaration, NULL); memcpy(new_decl, dec_entry, sizeof(mycss_declaration_entry_t)); if(with_value && dec_entry->value) { new_decl->value = mycss_values_clone(declaration->ref_entry, dec_entry->value); } return new_decl; } void mycss_declaration_entry_remove(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry) { if(dec_entry->next) { dec_entry->next->prev = dec_entry->prev; } if(dec_entry->prev) { dec_entry->prev->next = dec_entry->next; } dec_entry->next = NULL; dec_entry->prev = NULL; } mycss_declaration_entry_t * mycss_declaration_entry_delete(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry) { mycss_declaration_entry_remove(declaration, dec_entry); mycss_declaration_entry_destroy(declaration, dec_entry, true); return NULL; } mycss_declaration_entry_t * mycss_declaration_entry(mycss_declaration_t* declaration) { return declaration->entry_last; } mycss_declaration_entry_t * mycss_declaration_entry_last(mycss_declaration_t* declaration) { return declaration->entry_last; } void mycss_declaration_entry_type_set(mycss_declaration_entry_t* dec_entry, mycss_property_type_t type) { dec_entry->type = type; } void mycss_declaration_entry_important_set(mycss_declaration_entry_t* dec_entry, bool is_important) { dec_entry->is_important = is_important; }