We put in order CSS properties. Fixed memory collision bug

This commit is contained in:
lexborisov 2016-10-23 16:09:32 +03:00
parent 221b3ae461
commit ca51a60b2a
69 changed files with 7207 additions and 5008 deletions

View File

@ -15,6 +15,10 @@ MODEST_OPTIMIZATION_LEVEL ?= -O2
CFLAGS ?= -Wall -Werror
CFLAGS += $(MODEST_OPTIMIZATION_LEVEL) -fPIC --std=c99 -I$(SRCDIR)
ifdef MODEST_BUILD_DEBUG
CFLAGS += -g
endif
MODEST_BUILD_WITHOUT_THREADS ?= NO
ifeq ($(MODEST_BUILD_WITHOUT_THREADS),YES)
$(info Build without POSIX Threads)

View File

@ -14,6 +14,9 @@
0E0C918C1DAECB56007A0501 /* serialization.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0C918A1DAECB56007A0501 /* serialization.c */; };
0E0C918F1DAED006007A0501 /* serialization.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0C918D1DAED006007A0501 /* serialization.c */; };
0E0C91921DAED0F5007A0501 /* serialization.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0C91901DAED0F5007A0501 /* serialization.c */; };
0E0C91961DB1064E007A0501 /* serialization.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0C91941DB1064E007A0501 /* serialization.c */; };
0E0C91991DB107E7007A0501 /* property.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0C91971DB107E7007A0501 /* property.c */; };
0E0C919C1DB10866007A0501 /* raw_property.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E0C919A1DB10866007A0501 /* raw_property.c */; };
0E5AA4BD1DA9689700FF5358 /* shared.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E5AA4BB1DA9689700FF5358 /* shared.c */; };
0E750EE31D9AF1D500337E9B /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E750EE21D9AF1D500337E9B /* main.c */; };
0E750EF81D9AF25300337E9B /* finder.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E750EEE1D9AF25300337E9B /* finder.c */; };
@ -100,6 +103,7 @@
0E7510041D9AF27F00337E9B /* mctree.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E750FE21D9AF27F00337E9B /* mctree.c */; };
0E7510051D9AF27F00337E9B /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E750FE51D9AF27F00337E9B /* utils.c */; };
0E818EF61DAE6F8F005B0C77 /* serialization.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E818EF41DAE6F8F005B0C77 /* serialization.c */; };
0EA033771DB6AFBA009CB2B9 /* raw.c in Sources */ = {isa = PBXBuildFile; fileRef = 0EA033751DB6AFBA009CB2B9 /* raw.c */; };
0EF808A31D9FF3BC001AF6EF /* sheet.c in Sources */ = {isa = PBXBuildFile; fileRef = 0EF808A11D9FF3BC001AF6EF /* sheet.c */; };
0EF808A61DA08BBE001AF6EF /* map.c in Sources */ = {isa = PBXBuildFile; fileRef = 0EF808A41DA08BBE001AF6EF /* map.c */; };
/* End PBXBuildFile section */
@ -132,6 +136,12 @@
0E0C91901DAED0F5007A0501 /* serialization.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = serialization.c; sourceTree = "<group>"; };
0E0C91911DAED0F5007A0501 /* serialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serialization.h; sourceTree = "<group>"; };
0E0C91931DAEEFC8007A0501 /* resources_name.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = resources_name.h; sourceTree = "<group>"; };
0E0C91941DB1064E007A0501 /* serialization.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = serialization.c; path = ../../../source/modest/node/serialization.c; sourceTree = "<group>"; };
0E0C91951DB1064E007A0501 /* serialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = serialization.h; path = ../../../source/modest/node/serialization.h; sourceTree = "<group>"; };
0E0C91971DB107E7007A0501 /* property.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = property.c; path = ../../../source/modest/node/property.c; sourceTree = "<group>"; };
0E0C91981DB107E7007A0501 /* property.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = property.h; path = ../../../source/modest/node/property.h; sourceTree = "<group>"; };
0E0C919A1DB10866007A0501 /* raw_property.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = raw_property.c; path = ../../../source/modest/node/raw_property.c; sourceTree = "<group>"; };
0E0C919B1DB10866007A0501 /* raw_property.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = raw_property.h; path = ../../../source/modest/node/raw_property.h; sourceTree = "<group>"; };
0E5AA4BB1DA9689700FF5358 /* shared.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shared.c; sourceTree = "<group>"; };
0E5AA4BC1DA9689700FF5358 /* shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shared.h; sourceTree = "<group>"; };
0E750EDF1D9AF1D500337E9B /* Modest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Modest; sourceTree = BUILT_PRODUCTS_DIR; };
@ -330,6 +340,8 @@
0E818EF41DAE6F8F005B0C77 /* serialization.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = serialization.c; sourceTree = "<group>"; };
0E818EF51DAE6F8F005B0C77 /* serialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serialization.h; sourceTree = "<group>"; };
0E818EF71DAE6FEE005B0C77 /* serialization_resources.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = serialization_resources.h; sourceTree = "<group>"; };
0EA033751DB6AFBA009CB2B9 /* raw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = raw.c; sourceTree = "<group>"; };
0EA033761DB6AFBA009CB2B9 /* raw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = raw.h; sourceTree = "<group>"; };
0EF808A11D9FF3BC001AF6EF /* sheet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sheet.c; sourceTree = "<group>"; };
0EF808A21D9FF3BC001AF6EF /* sheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sheet.h; sourceTree = "<group>"; };
0EF808A41DA08BBE001AF6EF /* map.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = map.c; sourceTree = "<group>"; };
@ -353,6 +365,8 @@
children = (
0EF808A21D9FF3BC001AF6EF /* sheet.h */,
0EF808A11D9FF3BC001AF6EF /* sheet.c */,
0EA033761DB6AFBA009CB2B9 /* raw.h */,
0EA033751DB6AFBA009CB2B9 /* raw.c */,
0E0239801D9FE8EC0084A81A /* type.h */,
0E02397F1D9FE8EC0084A81A /* type.c */,
0EF808A51DA08BBE001AF6EF /* map.h */,
@ -368,6 +382,12 @@
children = (
0E0239841D9FEAB90084A81A /* node.h */,
0E0239831D9FEAB90084A81A /* node.c */,
0E0C91981DB107E7007A0501 /* property.h */,
0E0C91971DB107E7007A0501 /* property.c */,
0E0C919B1DB10866007A0501 /* raw_property.h */,
0E0C919A1DB10866007A0501 /* raw_property.c */,
0E0C91951DB1064E007A0501 /* serialization.h */,
0E0C91941DB1064E007A0501 /* serialization.c */,
);
name = node;
sourceTree = "<group>";
@ -477,8 +497,8 @@
0E750F2A1D9AF27200337E9B /* check.h */,
0E750F2B1D9AF27200337E9B /* convert.c */,
0E750F2C1D9AF27200337E9B /* convert.h */,
0E750F371D9AF27200337E9B /* entry.c */,
0E750F381D9AF27200337E9B /* entry.h */,
0E750F371D9AF27200337E9B /* entry.c */,
0E750F3F1D9AF27200337E9B /* mycss.c */,
0E750F401D9AF27200337E9B /* mycss.h */,
0E750F421D9AF27200337E9B /* mystring.c */,
@ -683,8 +703,8 @@
0E750FD71D9AF27F00337E9B /* utils */ = {
isa = PBXGroup;
children = (
0E750FD81D9AF27F00337E9B /* mchar_async.c */,
0E750FD91D9AF27F00337E9B /* mchar_async.h */,
0E750FD81D9AF27F00337E9B /* mchar_async.c */,
0E750FDA1D9AF27F00337E9B /* mcobject.c */,
0E750FDB1D9AF27F00337E9B /* mcobject.h */,
0E750FDC1D9AF27F00337E9B /* mcobject_async.c */,
@ -758,6 +778,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
0EA033771DB6AFBA009CB2B9 /* raw.c in Sources */,
0E750FF71D9AF27F00337E9B /* tag.c in Sources */,
0E750FF21D9AF27F00337E9B /* perf.c in Sources */,
0E750FFF1D9AF27F00337E9B /* mchar_async.c in Sources */,
@ -775,6 +796,7 @@
0E750F891D9AF27200337E9B /* state.c in Sources */,
0E750F1A1D9AF26300337E9B /* head.c in Sources */,
0E750F1B1D9AF26300337E9B /* hhea.c in Sources */,
0E0C91991DB107E7007A0501 /* property.c in Sources */,
0E750EFB1D9AF25300337E9B /* type.c in Sources */,
0E750F191D9AF26300337E9B /* glyf.c in Sources */,
0E750F8B1D9AF27200337E9B /* mystring.c in Sources */,
@ -788,6 +810,7 @@
0E750F971D9AF27200337E9B /* pseudo.c in Sources */,
0E750FEA1D9AF27F00337E9B /* encoding_detect.c in Sources */,
0E750EFA1D9AF25300337E9B /* pseudo_class.c in Sources */,
0E0C91961DB1064E007A0501 /* serialization.c in Sources */,
0E750F901D9AF27200337E9B /* init.c in Sources */,
0E750F921D9AF27200337E9B /* function.c in Sources */,
0E750FFA1D9AF27F00337E9B /* tokenizer_doctype.c in Sources */,
@ -815,6 +838,7 @@
0E750FF11D9AF27F00337E9B /* parser.c in Sources */,
0E750F221D9AF26300337E9B /* os_2.c in Sources */,
0E750F991D9AF27200337E9B /* value.c in Sources */,
0E0C919C1DB10866007A0501 /* raw_property.c in Sources */,
0E750FF01D9AF27F00337E9B /* mystring.c in Sources */,
0E750F961D9AF27200337E9B /* parser.c in Sources */,
0E5AA4BD1DA9689700FF5358 /* shared.c in Sources */,

View File

@ -28,6 +28,7 @@
#include "modest/finder/thread.h"
#include "myhtml/encoding.h"
#include "myfont/myfont.h"
#include "modest/node/serialization.h"
struct res_data {
char *data;
@ -154,9 +155,7 @@ void print_tree_after_all(modest_t* modest, myhtml_tree_t* myhtml_tree, myhtml_t
if(m_node) {
printf("\tstyles: ");
if(m_node->stylesheet->width.raw.declaration) {
mycss_declaration_serialization_entry(mycss_entry, m_node->stylesheet->width.raw.declaration, serialization_callback, NULL);
}
modest_node_raw_serialization(mycss_entry, m_node, serialization_callback, NULL);
printf("\n");
}
@ -175,8 +174,14 @@ void print_tree_after_all(modest_t* modest, myhtml_tree_t* myhtml_tree, myhtml_t
}
}
size_t count = 0;
void modest_callback_for_create_mnode(myhtml_tree_t* tree, myhtml_tree_node_t* node, void* ctx)
{
if(node->tag_id == MyHTML_TAG__TEXT) {
return;
}
modest_t *modest = (modest_t*)ctx;
/* create modest node */
@ -197,18 +202,21 @@ int main(int argc, const char * argv[]) {
//char *css_f = "/new/C-git/bootstrap.css";
char *html = "<fff>sdsd<aaaa id=hash class=best><div a1><menu class=\"lalala\" id=\"menu-id\" b1><span span1><div a2></div></div><menu class=\"be\" id=\"menu\" b1><span span2></aaaa><a href=\"\" sec></a><div div1><div div2></div><div div3></div><div div4></div></div><p p1><p p2><p p3><p p4>";
char *css = "div {padding: 10px 10 3em 0 !important; padding-bottom: 130px !important; padding-top: 18888pt !important; padding-left: 1em !important; padding-right: !important 20%;} div {width: 20px;}";
char *css = "div {width: 0;} div[div2] {border-top-style: none;}";
char *selector = "menu";
modest_t *modest = modest_create();
modest_status_t status = modest_init(modest);
// myhtml_tree_t *myhtml_tree = myhtml(html_f, strlen(html_f), true, false, modest_callback_for_create_mnode, (void*)modest);
// mycss_entry_t *mycss_entry = mycss(css_f, strlen(css_f), true, true);
myhtml_tree_t *myhtml_tree = myhtml(html_f, strlen(html_f), true, false, modest_callback_for_create_mnode, (void*)modest);
mycss_entry_t *mycss_entry = mycss(css_f, strlen(css_f), true, true);
myhtml_tree_t *myhtml_tree = myhtml(html, strlen(html), false, true, modest_callback_for_create_mnode, (void*)modest);
mycss_entry_t *mycss_entry = mycss(css, strlen(css), false, true);
// myhtml_tree_t *myhtml_tree = myhtml(html, strlen(html), false, true, modest_callback_for_create_mnode, (void*)modest);
// mycss_entry_t *mycss_entry = mycss(css, strlen(css), false, true);
modest->myhtml_tree = myhtml_tree;
modest->mycss_entry = mycss_entry;
mycss_stylesheet_t *stylesheet = mycss_entry_stylesheet(mycss_entry);
@ -216,13 +224,16 @@ int main(int argc, const char * argv[]) {
uint64_t parse_simple_start = myhtml_hperf_clock(NULL);
uint64_t parse_simple_stop = myhtml_hperf_clock(NULL);
/* full api */
uint64_t parse_start = myhtml_hperf_clock(NULL);
modest_finder_t* finder = modest_finder_create();
status = modest_finder_init(finder, myhtml_tree, stylesheet);
@ -232,17 +243,20 @@ int main(int argc, const char * argv[]) {
status = modest_finder_thread_process(modest, finder_thread, myhtml_tree, myhtml_tree->node_html, stylesheet->sel_list_first);
finder_thread = modest_finder_thread_destroy(finder_thread, true);
finder = modest_finder_destroy(finder, true);
//finder_thread = modest_finder_thread_destroy(finder_thread, true);
//finder = modest_finder_destroy(finder, true);
uint64_t parse_stop = myhtml_hperf_clock(NULL);
//print_tree_after_all(modest, myhtml_tree, myhtml_tree->node_html, mycss_entry);
uint64_t parse_stop = myhtml_hperf_clock(NULL);
printf("\n\n------------\nInformation:\n");
printf("\tTicks/sec: %llu\n", (unsigned long long) myhtml_hperf_res(NULL));
@ -274,3 +288,5 @@ int main(int argc, const char * argv[]) {
}

View File

@ -20,10 +20,19 @@ else
CFLAGS += -pthread
endif
ifeq ($(OS),Windows_NT)
else
UNAM := $(shell uname -s)
ifeq ($(UNAM),Darwin)
else
CFLAGS += -D_POSIX_C_SOURCE=199309L
endif
endif
find_files_h = $(wildcard $(dir)/*.h)
find_files_c = $(wildcard $(dir)/*.c)
SUBDIRS := selectors declarations font
SUBDIRS := selectors declarations font modest
HDRS += $(foreach dir,$(SUBDIRS),$(find_files_h))
SRCS += $(foreach dir,$(SUBDIRS),$(find_files_c))

View File

@ -0,0 +1,204 @@
/*
Copyright (C) 2016 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 <modest/modest.h>
#include <modest/finder/finder.h>
#include <modest/finder/thread.h>
#include <modest/node/serialization.h>
#include <myhtml/serialization.h>
myhtml_tree_t * parse_html(const char* data, size_t data_size, myhtml_callback_tree_node_f cai, void* cai_ctx)
{
myhtml_t* myhtml = myhtml_create();
myhtml_init(myhtml, MyHTML_OPTIONS_DEFAULT, 1, 0);
myhtml_tree_t* tree = myhtml_tree_create();
myhtml_tree_init(tree, myhtml);
myhtml_callback_tree_node_insert_set(tree, cai, cai_ctx);
myhtml_parse(tree, MyHTML_ENCODING_UTF_8, data, data_size);
return tree;
}
void destroy_html(myhtml_tree_t* myhtml_tree)
{
myhtml_t* myhtml = myhtml_tree->myhtml;
myhtml_tree_destroy(myhtml_tree);
myhtml_destroy(myhtml);
}
mycss_entry_t * parse_css(const char* data, size_t data_size)
{
// base init
mycss_t *mycss = mycss_create();
mycss_status_t status = mycss_init(mycss);
if(status) {
fprintf(stderr, "Can't init CSS Parser\n");
exit(EXIT_FAILURE);
}
// currenr entry work init
mycss_entry_t *entry = mycss_entry_create();
status = mycss_entry_init(mycss, entry);
if(status) {
fprintf(stderr, "Can't init CSS Entry\n");
exit(EXIT_FAILURE);
}
mycss_parse(entry, MyHTML_ENCODING_UTF_8, data, data_size);
return entry;
}
void destroy_css(mycss_entry_t *mycss_entry)
{
mycss_t* mycss = mycss_entry->mycss;
mycss_entry_destroy(mycss_entry, true);
mycss_destroy(mycss, true);
}
void serialization_callback(const char* data, size_t len, void* ctx)
{
printf("%.*s", (int)len, data);
}
void callback_for_create_mnode(myhtml_tree_t* tree, myhtml_tree_node_t* node, void* ctx)
{
if(node->data)
return;
modest_t *modest = (modest_t*)ctx;
/* create modest node */
modest_node_t *m_node = modest_node_create(modest);
if(m_node == NULL)
return;
modest_node_init(modest, m_node);
node->data = (void*)m_node;
}
void print_tree(modest_t* modest, myhtml_tree_t* myhtml_tree, myhtml_tree_node_t* scope_node, mycss_entry_t *mycss_entry)
{
myhtml_tree_node_t* node = scope_node;
while(node) {
modest_node_t *m_node = (modest_node_t*)node->data;
myhtml_serialization_node_callback(myhtml_tree, node, serialization_callback, NULL);
if(m_node) {
printf(" {");
modest_node_raw_serialization(mycss_entry, m_node, serialization_callback, NULL);
printf("}\n");
}
if(node->child)
node = node->child;
else {
while(node != scope_node && node->next == NULL)
node = node->parent;
if(node == scope_node)
break;
node = node->next;
}
}
}
int main(int argc, const char * argv[])
{
char *html = "<div id=div1>a</div><div id=div2>b</div><div id=div3>c</div><div id=div4>c</div>";
char *css = "div {padding: 0;} div[id=div2], div[id=div4] {padding-left: 130px;}";
/*
Init Modest
*/
modest_t *modest = modest_create();
modest_status_t status = modest_init(modest);
if(status) {
fprintf(stderr, "Can't init Modest\n");
exit(EXIT_FAILURE);
}
/*
Parse HTML, CSS
*/
modest->myhtml_tree = parse_html(html, strlen(html), callback_for_create_mnode, (void*)modest);
modest->mycss_entry = parse_css(css, strlen(css));
mycss_stylesheet_t *stylesheet = mycss_entry_stylesheet(modest->mycss_entry);
/*
Init Finder for comparison selectors and tree nodes
*/
modest_finder_t* finder = modest_finder_create();
status = modest_finder_init(finder, modest->myhtml_tree, stylesheet);
modest_finder_thread_t *finder_thread = modest_finder_thread_create();
modest_finder_thread_init(finder, finder_thread, 2);
/*
Comparison selectors and tree nodes with two threads
*/
status = modest_finder_thread_process(modest, finder_thread, modest->myhtml_tree,
modest->myhtml_tree->node_html, stylesheet->sel_list_first);
/*
Print
*/
print_tree(modest, modest->myhtml_tree, modest->myhtml_tree->node_html, modest->mycss_entry);
/*
Destroy Finder and Threads
*/
finder_thread = modest_finder_thread_destroy(finder_thread, true);
finder = modest_finder_destroy(finder, true);
/*
Destroy Stylesheet
*/
mycss_stylesheet_destroy(stylesheet, true);
/*
Destroy other
*/
destroy_css(modest->mycss_entry);
destroy_html(modest->myhtml_tree);
/*
Destroy Modest
*/
modest = modest_destroy(modest, true);
return 0;
}

View File

@ -34,6 +34,10 @@
#include <mycss/declaration/myosi.h>
#ifdef __cplusplus
extern "C" {
#endif
struct modest_finder_thread_declaration {
mycss_declaration_entry_t* entry;
modest_style_raw_specificity_t raw_spec;
@ -90,4 +94,8 @@ modest_status_t modest_finder_thread_process(modest_t* modest, modest_finder_thr
void modest_finder_thread_wait_for_all_done(modest_finder_thread_t* finder_thread);
bool modest_finder_thread_spec_is_up(modest_style_raw_specificity_t* spec_f, modest_style_raw_specificity_t* spec_t);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* thread_h */

View File

@ -23,8 +23,13 @@
#pragma once
#include <modest/myosi.h>
#include <modest/node/node.h>
#include <myhtml/utils/mcobject.h>
#include <myhtml/utils/mcobject_async.h>
#include <myhtml/utils/mchar_async.h>
#ifdef __cplusplus
extern "C" {
#endif
struct modest {
mcobject_async_t* mnode_obj;
@ -32,6 +37,18 @@ struct modest {
mcobject_async_t* mstylesheet_obj;
size_t mstylesheet_node_id;
mchar_async_t* mstyle_type_obj;
size_t mstyle_type_node_id;
mcobject_async_t* mraw_style_obj;
size_t mraw_style_node_id;
mcobject_t* mraw_style_declaration_obj;
/* refs */
myhtml_tree_t* myhtml_tree;
mycss_entry_t* mycss_entry;
};
@ -40,5 +57,8 @@ modest_status_t modest_init(modest_t* modest);
void modest_clean(modest_t* modest);
modest_t * modest_destroy(modest_t* modest, bool self_destroy);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_H */

View File

@ -22,7 +22,8 @@
#define MODEST_MYOSI_H
#pragma once
#include <myhtml/myosi.h>
#include <myhtml/myhtml.h>
#include <mycss/mycss.h>
#ifdef __cplusplus
extern "C" {

View File

@ -24,13 +24,22 @@
#include <modest/myosi.h>
#include <modest/modest.h>
#include <modest/style/sheet.h>
#include <modest/style/raw.h>
#ifdef __cplusplus
extern "C" {
#endif
struct modest_node {
modest_style_sheet_t* stylesheet;
modest_style_raw_t* raw_style;
};
modest_node_t * modest_node_create(modest_t* modest);
modest_status_t modest_node_init(modest_t* modest, modest_node_t *mnode);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_NODE_NODE_H */

View File

@ -0,0 +1,35 @@
/*
Copyright (C) 2016 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)
*/
#ifndef MODEST_NODE_PROPERTY_H
#define MODEST_NODE_PROPERTY_H
#pragma once
#include <modest/node/node.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_NODE_PROPERTY_H */

View File

@ -0,0 +1,38 @@
/*
Copyright (C) 2016 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)
*/
#ifndef MODEST_NODE_RAW_PROPERTY_H
#define MODEST_NODE_RAW_PROPERTY_H
#pragma once
#include <modest/node/node.h>
#ifdef __cplusplus
extern "C" {
#endif
#define modest_node_raw_property(mnode, property) (mnode->raw_style == NULL || mnode->raw_style->property == NULL ? NULL : mnode->raw_style->property->declaration)
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_NODE_RAW_PROPERTY_H */

View File

@ -0,0 +1,41 @@
/*
Copyright (C) 2016 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)
*/
#ifndef MODEST_NODE_SERIALIZATION_H
#define MODEST_NODE_SERIALIZATION_H
#pragma once
#include <modest/myosi.h>
#include <modest/node/node.h>
#include <modest/node/raw_property.h>
#include <mycss/myosi.h>
#include <mycss/declaration/serialization.h>
#ifdef __cplusplus
extern "C" {
#endif
bool modest_node_raw_serialization(mycss_entry_t* mycss_entry, modest_node_t* mnode, mycss_callback_serialization_f callback, void* context);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_NODE_SERIALIZATION_H */

View File

@ -23,293 +23,302 @@
#pragma once
#include <modest/myosi.h>
#include <modest/modest.h>
#include <modest/finder/myosi.h>
#include <modest/finder/thread.h>
typedef void (*modest_style_map_collate_f)(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
#ifdef __cplusplus
extern "C" {
#endif
void modest_style_map_collate_declaration(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
typedef void (*modest_style_map_collate_f)(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_undef(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_align_content(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_align_items(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_align_self(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_delay(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_direction(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_duration(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_fill_mode(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_iteration_count(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_name(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_play_state(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_timing_function(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_appearance(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_backface_visibility(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_attachment(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_clip(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_image(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_origin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_repeat(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_size(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_bookmark_label(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_bookmark_level(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_bookmark_state(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom_left_radius(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom_right_radius(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_collapse(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_image(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_image_outset(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_image_repeat(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_image_slice(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_image_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_left(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_left_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_left_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_left_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_radius(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_right(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_right_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_right_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_right_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_spacing(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top_left_radius(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top_right_radius(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_bottom(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_box_decoration_break(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_box_shadow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_box_sizing(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_box_suppress(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_break_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_break_before(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_break_inside(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_caption_side(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_caret(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_caret_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_caret_shape(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_clear(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_clear_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_color_adjust(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_color_interpolation(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_color_interpolation_filters(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_color_rendering(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_count(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_fill(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_gap(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_rule(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_rule_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_rule_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_rule_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_span(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_columns(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_contain(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_content(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_continue(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_counter_increment(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_cue(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_cue_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_cue_before(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_cursor(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_direction(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_display(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_empty_cells(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_fill(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_fill_opacity(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_fill_rule(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_basis(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_direction(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_flow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_grow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_shrink(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_wrap(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_float(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_float_displace(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_family(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_feature_settings(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_kerning(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_language_override(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_size(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_size_adjust(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_stretch(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_synthesis(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_alternates(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_caps(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_east_asian(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_ligatures(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_numeric(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_weight(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_glyph_orientation_vertical(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_hanging_punctuation(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_height(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_hyphens(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_image_rendering(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_indent_edge_reset(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_inline_size_step(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_justify_content(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_left(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_letter_spacing(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_line_break(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_line_height(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_line_height_step(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_list_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_list_style_image(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_list_style_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_list_style_type(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_margin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_margin_bottom(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_margin_left(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_margin_right(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_margin_top(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_marker(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_marker_end(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_marker_mid(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_marker_side(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_marker_start(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_max_height(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_max_lines(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_max_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_min_height(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_min_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_nav_down(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_nav_left(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_nav_right(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_nav_up(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_offset_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_offset_before(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_offset_end(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_offset_start(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_opacity(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_order(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_orphans(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_outline(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_outline_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_outline_offset(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_outline_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_outline_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_overflow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_overflow_wrap(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_overflow_x(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_overflow_y(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_padding(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_padding_bottom(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_padding_left(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_padding_right(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_padding_top(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_pause(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_pause_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_pause_before(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_perspective(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_perspective_origin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_presentation_level(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_quotes(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_region_fragment(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_resize(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_rest(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_rest_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_rest_before(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_right(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_ruby_align(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_ruby_merge(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_ruby_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_scroll_padding(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_scroll_snap_align(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_scroll_snap_margin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_scroll_snap_stop(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_scroll_snap_type(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_shape_image_threshold(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_shape_margin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_shape_outside(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_shape_rendering(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_speak(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_speak_as(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_string_set(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_dasharray(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_dashoffset(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_linecap(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_linejoin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_miterlimit(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_opacity(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_tab_size(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_table_layout(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_align(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_align_all(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_align_last(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_combine_upright(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_decoration(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_decoration_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_decoration_line(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_decoration_skip(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_decoration_styl(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_emphasis(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_emphasis_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_emphasis_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_emphasis_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_indent(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_justify(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_orientation(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_overflow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_rendering(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_shadow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_size_adjust(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_transform(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_underline_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_top(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_touch_action(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transform(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transform_box(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transform_origin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transform_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transition(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transition_delay(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transition_duration(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transition_property(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transition_timing_function(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_unicode_bidi(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_user_select(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_vertical_align(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_visibility(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_balance(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_duration(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_family(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_pitch(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_range(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_rate(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_stress(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_volume(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_white_space(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_widows(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_will_change(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_word_break(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_word_spacing(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_word_wrap(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_wrap_flow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_wrap_through(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_writing_mode(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_z_index(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_undef(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_align_content(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_align_items(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_align_self(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_delay(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_direction(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_duration(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_fill_mode(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_iteration_count(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_name(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_play_state(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_timing_function(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_appearance(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_backface_visibility(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_attachment(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_clip(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_image(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_origin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_repeat(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_size(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_bookmark_label(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_bookmark_level(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_bookmark_state(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom_left_radius(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom_right_radius(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_collapse(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_image(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_image_outset(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_image_repeat(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_image_slice(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_image_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_left(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_left_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_left_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_left_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_radius(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_right(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_right_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_right_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_right_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_spacing(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top_left_radius(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top_right_radius(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_bottom(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_box_decoration_break(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_box_shadow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_box_sizing(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_box_suppress(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_break_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_break_before(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_break_inside(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_caption_side(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_caret(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_caret_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_caret_shape(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_clear(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_clear_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_color_adjust(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_color_interpolation(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_color_interpolation_filters(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_color_rendering(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_count(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_fill(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_gap(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_rule(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_rule_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_rule_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_rule_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_span(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_columns(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_contain(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_content(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_continue(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_counter_increment(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_cue(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_cue_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_cue_before(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_cursor(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_direction(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_display(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_empty_cells(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_fill(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_fill_opacity(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_fill_rule(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_basis(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_direction(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_flow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_grow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_shrink(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_wrap(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_float(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_float_displace(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_family(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_feature_settings(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_kerning(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_language_override(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_size(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_size_adjust(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_stretch(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_synthesis(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_alternates(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_caps(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_east_asian(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_ligatures(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_numeric(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_weight(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_glyph_orientation_vertical(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_hanging_punctuation(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_height(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_hyphens(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_image_rendering(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_indent_edge_reset(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_inline_size_step(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_justify_content(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_left(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_letter_spacing(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_line_break(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_line_height(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_line_height_step(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_list_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_list_style_image(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_list_style_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_list_style_type(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_margin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_margin_bottom(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_margin_left(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_margin_right(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_margin_top(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_marker(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_marker_end(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_marker_mid(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_marker_side(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_marker_start(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_max_height(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_max_lines(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_max_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_min_height(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_min_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_nav_down(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_nav_left(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_nav_right(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_nav_up(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_offset_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_offset_before(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_offset_end(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_offset_start(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_opacity(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_order(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_orphans(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_outline(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_outline_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_outline_offset(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_outline_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_outline_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_overflow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_overflow_wrap(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_overflow_x(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_overflow_y(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_padding(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_padding_bottom(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_padding_left(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_padding_right(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_padding_top(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_pause(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_pause_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_pause_before(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_perspective(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_perspective_origin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_presentation_level(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_quotes(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_region_fragment(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_resize(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_rest(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_rest_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_rest_before(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_right(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_ruby_align(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_ruby_merge(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_ruby_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_scroll_padding(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_scroll_snap_align(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_scroll_snap_margin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_scroll_snap_stop(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_scroll_snap_type(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_shape_image_threshold(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_shape_margin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_shape_outside(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_shape_rendering(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_speak(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_speak_as(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_string_set(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_dasharray(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_dashoffset(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_linecap(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_linejoin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_miterlimit(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_opacity(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_tab_size(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_table_layout(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_align(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_align_all(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_align_last(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_combine_upright(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_decoration(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_decoration_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_decoration_line(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_decoration_skip(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_decoration_styl(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_emphasis(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_emphasis_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_emphasis_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_emphasis_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_indent(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_justify(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_orientation(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_overflow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_rendering(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_shadow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_size_adjust(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_transform(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_underline_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_top(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_touch_action(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transform(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transform_box(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transform_origin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transform_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transition(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transition_delay(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transition_duration(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transition_property(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transition_timing_function(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_unicode_bidi(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_user_select(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_vertical_align(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_visibility(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_balance(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_duration(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_family(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_pitch(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_range(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_rate(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_stress(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_volume(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_white_space(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_widows(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_will_change(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_word_break(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_word_spacing(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_word_wrap(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_wrap_flow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_wrap_through(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_writing_mode(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_z_index(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_STYLE_MAP_H */

View File

@ -0,0 +1,89 @@
/*
Copyright (C) 2016 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)
*/
#ifndef MODEST_STYLE_RAW_H
#define MODEST_STYLE_RAW_H
#pragma once
#include <modest/myosi.h>
#include <modest/modest.h>
#include <myhtml/utils/mcobject.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct modest_style_raw modest_style_raw_t;
typedef struct modest_style_raw_declaration modest_style_raw_declaration_t;
typedef struct modest_style_raw_specificity modest_style_raw_specificity_t;
struct modest_style_raw_specificity {
unsigned int x;
unsigned int a;
unsigned int b;
unsigned int c;
};
struct modest_style_raw_declaration {
mycss_declaration_entry_t* declaration;
modest_style_raw_specificity_t spec;
};
struct modest_style_raw {
modest_style_raw_declaration_t* width;
modest_style_raw_declaration_t* height;
modest_style_raw_declaration_t* padding_top;
modest_style_raw_declaration_t* padding_right;
modest_style_raw_declaration_t* padding_bottom;
modest_style_raw_declaration_t* padding_left;
modest_style_raw_declaration_t* margin_top;
modest_style_raw_declaration_t* margin_right;
modest_style_raw_declaration_t* margin_bottom;
modest_style_raw_declaration_t* margin_left;
modest_style_raw_declaration_t* display;
modest_style_raw_declaration_t* border_top_width;
modest_style_raw_declaration_t* border_right_width;
modest_style_raw_declaration_t* border_bottom_width;
modest_style_raw_declaration_t* border_left_width;
modest_style_raw_declaration_t* border_top_style;
modest_style_raw_declaration_t* border_right_style;
modest_style_raw_declaration_t* border_bottom_style;
modest_style_raw_declaration_t* border_left_style;
modest_style_raw_declaration_t* box_sizing;
modest_style_raw_declaration_t* vertical_align;
modest_style_raw_declaration_t* line_height;
};
modest_style_raw_t * modest_style_raw_create(modest_t* modest);
modest_status_t modest_style_raw_init(modest_t* modest, modest_style_raw_t* raw_style);
modest_style_raw_declaration_t * modest_style_raw_declaration_create(modest_t* modest);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_STYLE_RAW_H */

View File

@ -26,12 +26,37 @@
#include <modest/modest.h>
#include <modest/style/type.h>
#ifdef __cplusplus
extern "C" {
#endif
struct modest_style_sheet {
modest_style_type_length_t width;
modest_style_type_length_t height;
modest_style_type_length_t padding_top;
modest_style_type_length_t padding_right;
modest_style_type_length_t padding_bottom;
modest_style_type_length_t padding_left;
modest_style_type_length_t margin_top;
modest_style_type_length_t margin_right;
modest_style_type_length_t margin_bottom;
modest_style_type_length_t margin_left;
modest_style_type_display_t display;
modest_style_type_length_t border_top_width;
modest_style_type_length_t border_right_width;
modest_style_type_length_t border_bottom_width;
modest_style_type_length_t border_left_width;
};
modest_style_sheet_t * modest_style_sheet_create(modest_t* modest);
modest_status_t modest_style_sheet_init(modest_t* modest, modest_style_sheet_t* m_stylesheet);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_STYLE_SHEET_H */

View File

@ -23,28 +23,31 @@
#pragma once
#include <modest/myosi.h>
#include <modest/modest.h>
#include <mycss/declaration/myosi.h>
#include <myhtml/utils/mchar_async.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct modest_style_type_length modest_style_type_length_t;
typedef struct modest_style_raw modest_style_raw_t;
typedef struct modest_style_raw_specificity modest_style_raw_specificity_t;
struct modest_style_raw_specificity {
unsigned int x;
unsigned int a;
unsigned int b;
unsigned int c;
};
struct modest_style_raw {
mycss_declaration_entry_t* declaration;
modest_style_raw_specificity_t spec;
};
typedef struct modest_style_type_display modest_style_type_display_t;
struct modest_style_type_length {
float value;
modest_style_raw_t raw;
};
struct modest_style_type_display {
mycss_property_display_t value;
};
void * modest_style_type_create(modest_t* modest, size_t size);
modest_status_t modest_style_type_init(modest_t* modest, void *data);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_STYLE_TYPE_H */

View File

@ -37,6 +37,9 @@ void mycss_declaration_entry_destroy(mycss_declaration_t* declaration, mycss_dec
mycss_declaration_entry_t * mycss_declaration_entry(mycss_declaration_t* declaration);
mycss_declaration_entry_t * mycss_declaration_entry_last(mycss_declaration_t* declaration);
mycss_declaration_entry_t * mycss_declaration_entry_clone(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry, bool with_value);
void mycss_declaration_entry_type_set(mycss_declaration_entry_t* dec_entry, mycss_property_type_t type);
void mycss_declaration_entry_important_set(mycss_declaration_entry_t* dec_entry, bool is_important);
void mycss_declaration_entry_append_to_current(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry);
void mycss_declaration_entry_remove(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry);

View File

@ -38,8 +38,9 @@ bool mycss_declaration_serialization_entry(mycss_entry_t* entry, mycss_declarati
void mycss_declaration_serialization_entries(mycss_entry_t* entry, mycss_declaration_entry_t* first_dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_undef(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_padding(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_padding_x(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_shorthand_four(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_shorthand_two(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_shorthand_two_type(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
#ifdef __cplusplus
} /* extern "C" */

View File

@ -205,11 +205,11 @@ static mycss_declaration_serialization_f mycss_declaration_serialization_map_by_
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_padding,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_padding_x,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,

File diff suppressed because it is too large Load Diff

View File

@ -265,7 +265,7 @@ bool mycss_property_parser_text_decoration(mycss_entry_t* entry, mycss_token_t*
bool mycss_property_parser_text_decoration_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_decoration_line(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_decoration_skip(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_decoration_styl(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_decoration_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_emphasis(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_emphasis_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_emphasis_position(mycss_entry_t* entry, mycss_token_t* token, bool last_response);

File diff suppressed because it is too large Load Diff

View File

@ -257,7 +257,7 @@ static const char * mycss_property_index_type_name[] =
"text-decoration-color",
"text-decoration-line",
"text-decoration-skip",
"text-decoration-styl",
"text-decoration-style",
"text-emphasis",
"text-emphasis-color",
"text-emphasis-position",
@ -327,40 +327,40 @@ static const char * mycss_property_index_type_value[] =
"absolute",
"alias",
"all",
"all-petite-caps",
"all-scroll",
"all-small-caps",
"allow-end",
"allow_end",
"all_petite_caps",
"all_scroll",
"all_small_caps",
"alternate",
"alternate-reverse",
"alternate_reverse",
"always",
"auto",
"available",
"avoid",
"avoid-column",
"avoid-page",
"avoid-region",
"avoid_column",
"avoid_page",
"avoid_region",
"backwards",
"balance",
"balance-all",
"balance_all",
"bar",
"baseline",
"bevel",
"bidi-override",
"bidi_override",
"blink",
"block",
"block-within-page",
"block_within_page",
"bold",
"bolder",
"border-box",
"border-edge",
"border_box",
"border_edge",
"both",
"bottom",
"box-decoration",
"box_decoration",
"break",
"break-all",
"break-spaces",
"break-word",
"break_all",
"break_spaces",
"break_word",
"butt",
"capitalize",
"caption",
@ -371,20 +371,20 @@ static const char * mycss_property_index_type_value[] =
"clip",
"clone",
"closed",
"col-resize",
"collapse",
"column",
"column-reverse",
"common-ligatures",
"column_reverse",
"col_resize",
"common_ligatures",
"complex",
"condensed",
"contain",
"content",
"content-box",
"content-edge",
"contents",
"context-menu",
"content_box",
"content_edge",
"contextual",
"context_menu",
"copy",
"cover",
"crispedges",
@ -394,48 +394,48 @@ static const char * mycss_property_index_type_value[] =
"dashed",
"default",
"descendants",
"diagonal-fractions",
"diagonal_fractions",
"digits",
"discard",
"discretionary-ligatures",
"discretionary_ligatures",
"dot",
"dotted",
"double",
"double-circle",
"e-resize",
"each-line",
"double_circle",
"each_line",
"ease",
"ease-in",
"ease-in-out",
"ease-out",
"ease_in",
"ease_in_out",
"ease_out",
"economy",
"edges",
"ellipsis",
"embed",
"end",
"evenodd",
"ew-resize",
"ew_resize",
"exact",
"expanded",
"extra-condensed",
"extra-expanded",
"extra_condensed",
"extra_expanded",
"e_resize",
"fast",
"fill",
"fill-box",
"filled",
"fill_box",
"first",
"fit-content",
"fit_content",
"fixed",
"flat",
"flex",
"flex-end",
"flex-start",
"flex_end",
"flex_start",
"flow",
"flow-root",
"force-end",
"flow_root",
"force_end",
"forwards",
"fragments",
"full-width",
"full_width",
"geometricprecision",
"grab",
"grabbing",
@ -446,10 +446,10 @@ static const char * mycss_property_index_type_value[] =
"hidden",
"hide",
"high",
"historical-forms",
"historical-ligatures",
"historical_forms",
"historical_ligatures",
"horizontal",
"horizontal-tb",
"horizontal_tb",
"icon",
"increment",
"indent",
@ -457,42 +457,41 @@ static const char * mycss_property_index_type_value[] =
"initial",
"ink",
"inline",
"inline-block",
"inline-flex",
"inline-grid",
"inline-list-item",
"inline-table",
"inline_block",
"inline_flex",
"inline_grid",
"inline_list_item",
"inline_table",
"inset",
"inside",
"inter-character",
"inter-word",
"inter_character",
"inter_word",
"invert",
"isolate",
"isolate-override",
"isolate_override",
"italic",
"jis04",
"jis78",
"jis83",
"jis90",
"justify",
"justify-all",
"keep-all",
"justify_all",
"keep_all",
"large",
"larger",
"last",
"layout",
"left",
"leftwards",
"length",
"lighter",
"line",
"line-through",
"linear",
"linearrgb",
"lining-nums",
"list-container",
"list-item",
"literal-punctuation",
"line_through",
"lining_nums",
"list_container",
"list_item",
"literal_punctuation",
"local",
"loose",
"loud",
@ -502,44 +501,44 @@ static const char * mycss_property_index_type_value[] =
"mandatory",
"manipulation",
"manual",
"margin-edge",
"match-parent",
"max-content",
"margin_edge",
"match_parent",
"maximum",
"max_content",
"medium",
"menu",
"message-box",
"message_box",
"middle",
"min-content",
"minimum",
"min_content",
"miter",
"mixed",
"moderate",
"move",
"n-resize",
"ne-resize",
"nesw-resize",
"no-common-ligatures",
"no-content",
"no-contextual",
"no-discretionary-ligatures",
"no-display",
"no-drop",
"no-historical-ligatures",
"no-punctuation",
"no-repeat",
"nesw_resize",
"ne_resize",
"none",
"nonzero",
"normal",
"not-allowed",
"not_allowed",
"nowrap",
"ns-resize",
"nw-resize",
"nwse-resize",
"no_common_ligatures",
"no_content",
"no_contextual",
"no_discretionary_ligatures",
"no_display",
"no_drop",
"no_historical_ligatures",
"no_punctuation",
"no_repeat",
"ns_resize",
"nwse_resize",
"nw_resize",
"n_resize",
"objects",
"oblique",
"off",
"oldstyle-nums",
"oldstyle_nums",
"on",
"open",
"optimizelegibility",
@ -551,38 +550,37 @@ static const char * mycss_property_index_type_value[] =
"over",
"overflow",
"overline",
"padding-box",
"padding-edge",
"padding_box",
"padding_edge",
"page",
"paginate",
"paint",
"pan-down",
"pan-left",
"pan-right",
"pan-up",
"pan-x",
"pan-y",
"pan_down",
"pan_left",
"pan_right",
"pan_up",
"pan_x",
"pan_y",
"paused",
"percentage",
"petite-caps",
"petite_caps",
"plaintext",
"pointer",
"pre",
"pre-line",
"pre-wrap",
"preserve",
"preserve-3d",
"preserve_3d",
"pre_line",
"pre_wrap",
"progress",
"proportional-nums",
"proportional-width",
"proportional_nums",
"proportional_width",
"proximity",
"recto",
"reduced",
"region",
"relative",
"repeat",
"repeat-x",
"repeat-y",
"repeat_x",
"repeat_y",
"reverse",
"ridge",
"right",
@ -590,54 +588,53 @@ static const char * mycss_property_index_type_value[] =
"root",
"round",
"row",
"row-resize",
"row-reverse",
"row_resize",
"row_reverse",
"rtl",
"ruby",
"ruby-base",
"ruby-base-container",
"ruby-text",
"ruby-text-container",
"run-in",
"ruby_base",
"ruby_base_container",
"ruby_text",
"ruby_text_container",
"running",
"s-resize",
"run_in",
"same",
"scroll",
"scroll-position",
"se-resize",
"semi-condensed",
"semi-expanded",
"scroll_position",
"semi_condensed",
"semi_expanded",
"separate",
"sesame",
"sesameinitial",
"se_resize",
"show",
"sideways",
"sideways-lr",
"sideways-rl",
"sideways_lr",
"sideways_rl",
"silent",
"simplified",
"size",
"slashed-zero",
"slashed_zero",
"slice",
"slow",
"small",
"small-caps",
"small-caption",
"smaller",
"small_caps",
"small_caption",
"soft",
"solid",
"space",
"space-around",
"space-between",
"spaces",
"spell-out",
"space_around",
"space_between",
"spell_out",
"square",
"srgb",
"stacked-fractions",
"stacked_fractions",
"start",
"static",
"status-bar",
"step-end",
"step-start",
"status_bar",
"step_end",
"step_start",
"sticky",
"stretch",
"strict",
@ -645,62 +642,70 @@ static const char * mycss_property_index_type_value[] =
"style",
"sub",
"super",
"sw-resize",
"sw_resize",
"s_resize",
"table",
"table-caption",
"table-cell",
"table-column",
"table-column-group",
"table-footer-group",
"table-header-group",
"table-row",
"table-row-group",
"tabular-nums",
"table_caption",
"table_cell",
"table_column",
"table_column_group",
"table_footer_group",
"table_header_group",
"table_row",
"table_row_group",
"tabular_nums",
"text",
"text-bottom",
"text-top",
"titling-caps",
"text_bottom",
"text_top",
"thick",
"thin",
"titling_caps",
"top",
"traditional",
"triangle",
"ultra-condensed",
"ultra-expanded",
"ultra_condensed",
"ultra_expanded",
"under",
"underline",
"underscore",
"unicase",
"unset",
"uppercase",
"upright",
"verso",
"vertical",
"vertical-lr",
"vertical-rl",
"vertical-text",
"view-box",
"vertical_lr",
"vertical_rl",
"vertical_text",
"view_box",
"visible",
"w-resize",
"wait",
"wavy",
"weak",
"weight",
"wrap",
"wrap-reverse",
"wrap_reverse",
"w_resize",
"x",
"x-fast",
"x-high",
"x-large",
"x-loud",
"x-low",
"x-slow",
"x-small",
"x-soft",
"x-strong",
"x-weak",
"xx-large",
"xx-small",
"xx_large",
"xx_small",
"x_fast",
"x_high",
"x_large",
"x_loud",
"x_low",
"x_slow",
"x_small",
"x_soft",
"x_strong",
"x_weak",
"y",
"zoom-in",
"zoom-out",
"zoom_in",
"zoom_out",
"<color>",
"<length>",
"<number>",
"<percentage>",
""
};

View File

@ -33,7 +33,20 @@ extern "C" {
bool mycss_property_shared_switch_to_find_important(mycss_entry_t* entry);
bool mycss_property_shared_switch_to_parse_error(mycss_entry_t* entry);
bool mycss_property_shared_check_declaration_end(mycss_entry_t* entry, mycss_token_t* token);
bool mycss_property_shared_length(mycss_entry_t* entry, mycss_token_t* token, mycss_declaration_entry_t* dec_entry);
bool mycss_property_shared_number(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_length(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_percentage(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_length_percentage(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_default(mycss_entry_t* entry, mycss_token_t* token, unsigned int* value_type, myhtml_string_t* str);
unsigned int mycss_property_shared_get_value_type(mycss_entry_t* entry, mycss_token_t* token, myhtml_string_t* str);
bool mycss_property_shared_by_value_type(mycss_entry_t* entry, mycss_token_t* token, unsigned int* value_type, unsigned int check_type, myhtml_string_t* str);
bool mycss_property_shared_width(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_height(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_line_width(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_line_style(mycss_entry_t* entry, mycss_token_t* token, unsigned int* value_type, myhtml_string_t* str);
void mycss_property_shared_destroy_string(myhtml_string_t* str);
#ifdef __cplusplus
} /* extern "C" */

View File

@ -30,10 +30,20 @@
extern "C" {
#endif
typedef struct mycss_values_shorthand_two_type mycss_values_shorthand_two_type_t;
typedef struct mycss_values_shorthand_four mycss_values_shorthand_four_t;
typedef struct mycss_values_shorthand_two mycss_values_shorthand_two_t;
typedef struct mycss_values_percentage mycss_values_percentage_t;
typedef struct mycss_values_length mycss_values_length_t;
struct mycss_values_shorthand_two_type {
void* one;
void* two;
unsigned int type_one;
unsigned int type_two;
};
struct mycss_values_shorthand_four {
void* one;
void* two;
@ -41,6 +51,11 @@ struct mycss_values_shorthand_four {
void* four;
};
struct mycss_values_shorthand_two {
void* one;
void* two;
};
struct mycss_values_length {
union {
int i;
@ -60,10 +75,11 @@ struct mycss_values_percentage {
bool is_float;
};
void * mycss_values_create(mycss_entry_t* entry, size_t size);
void * mycss_values_destroy(mycss_entry_t* entry, void* value);
void * mycss_values_clone(mycss_entry_t* entry, void* value);
void * mycss_values_entry(mycss_entry_t* entry);
void mycss_values_entry_set(mycss_entry_t* entry, void** value);

View File

@ -26,23 +26,21 @@
#include <myhtml/mystring.h>
#include <myhtml/tree.h>
#define myhtml_serialization_realloc_if_need(len) \
if((len + str->length) >= str->size) { \
size_t size = (len + str->length) + 4096; \
char *data = (char*)myhtml_realloc(str->data, size * sizeof(char)); \
\
if(data) { \
str->data = data; \
str->size = size; \
} \
else \
return false; \
}
#ifdef __cplusplus
extern "C" {
#endif
// callback to be implemented by the user
typedef void (*myhtml_callback_serialize_f)(const char* buffer, size_t size, void* ctx);
// the serialization functions
bool myhtml_serialization_tree_buffer(myhtml_tree_t* tree, myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str);
bool myhtml_serialization_node_buffer(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str);
bool myhtml_serialization_tree_callback(myhtml_tree_t* tree, myhtml_tree_node_t* scope_node, myhtml_callback_serialize_f callback, void* ptr);
bool myhtml_serialization_node_callback(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void* ptr);
// in versuon 1.0.3 this is in public api.
// Need to set deprecated?
bool myhtml_serialization(myhtml_tree_t* tree, myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str);
bool myhtml_serialization_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str);

View File

@ -113,6 +113,8 @@ mchar_async_chunk_t * mchar_async_chunk_malloc(mchar_async_t *mchar_async, mchar
char * mchar_async_crop_first_chars(mchar_async_t *mchar_async, size_t node_idx, char *data, size_t crop_len);
char * mchar_async_crop_first_chars_without_cache(char *data, size_t crop_len);
size_t mchar_async_get_size_by_data(const char *data);
// cache
void mchar_async_cache_init(mchar_async_cache_t *cache);
mchar_async_cache_t * mchar_async_cache_destroy(mchar_async_cache_t *cache, bool self_destroy);

View File

@ -23,8 +23,8 @@
/* private functions */
static void modest_finder_thread_stream(mythread_id_t thread_id, void* arg);
static modest_finder_thread_context_t * modest_finder_thread_create_context(modest_finder_thread_t* finder_thread, size_t count);
static void modest_finder_thread_callback_found(modest_finder_t* finder, myhtml_tree_node_t* node, mycss_selectors_list_t* selector_list,
mycss_selectors_entry_t* selector, mycss_selectors_specificity_t* spec, void* ctx);
//static void modest_finder_thread_callback_found(modest_finder_t* finder, myhtml_tree_node_t* node, mycss_selectors_list_t* selector_list,
// mycss_selectors_entry_t* selector, mycss_selectors_specificity_t* spec, void* ctx);
/* basic functions */
modest_finder_thread_t * modest_finder_thread_create(void)
@ -126,7 +126,7 @@ void modest_finder_thread_collate_node(modest_t* modest, myhtml_tree_node_t* nod
modest_finder_thread_declaration_t* dec = entry->declaration;
while(dec) {
modest_style_map_collate_declaration(node, dec);
modest_style_map_collate_declaration(modest, node, dec->entry, &dec->raw_spec);
dec = dec->next;
}
}
@ -377,7 +377,6 @@ void modest_finder_thread_stream(mythread_id_t thread_id, void* arg)
while(selector_list) {
for(size_t i = 0; i < selector_list->entries_list_length; i++) {
/* split selectors by thread id */
if(count == counnt_done) {
mycss_selectors_entries_list_t *entries = &selector_list->entries_list[i];

View File

@ -34,6 +34,10 @@
#include "mycss/declaration/myosi.h"
#ifdef __cplusplus
extern "C" {
#endif
struct modest_finder_thread_declaration {
mycss_declaration_entry_t* entry;
modest_style_raw_specificity_t raw_spec;
@ -90,4 +94,8 @@ modest_status_t modest_finder_thread_process(modest_t* modest, modest_finder_thr
void modest_finder_thread_wait_for_all_done(modest_finder_thread_t* finder_thread);
bool modest_finder_thread_spec_is_up(modest_style_raw_specificity_t* spec_f, modest_style_raw_specificity_t* spec_t);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* thread_h */

View File

@ -19,6 +19,9 @@
*/
#include "modest/modest.h"
#include "modest/style/sheet.h"
#include "modest/style/raw.h"
#include "modest/node/node.h"
modest_t * modest_create(void)
{
@ -58,6 +61,40 @@ modest_status_t modest_init(modest_t* modest)
if(mcstatus)
return MODEST_STATUS_OK;
/* Modest style type */
modest->mstyle_type_obj = mchar_async_create(12, (4096 * 5));
if(modest->mstyle_type_obj == NULL)
return MODEST_STATUS_OK;
modest->mstyle_type_node_id = mchar_async_node_add(modest->mstyle_type_obj);
/* Modest raw style */
modest->mraw_style_obj = mcobject_async_create();
if(modest->mraw_style_obj == NULL)
return MODEST_STATUS_OK;
mcstatus = mcobject_async_init(modest->mraw_style_obj, 128, 1024, sizeof(modest_style_raw_t));
if(mcstatus)
return MODEST_STATUS_OK;
/* base object node for all modest raw style objects */
modest->mraw_style_node_id = mcobject_async_node_add(modest->mraw_style_obj, &mcstatus);
if(mcstatus)
return MODEST_STATUS_OK;
/* for raw declaration style */
modest->mraw_style_declaration_obj = mcobject_create();
if(modest->mraw_style_declaration_obj == NULL)
return MODEST_STATUS_OK;
myhtml_status_t myhtml_status = mcobject_init(modest->mraw_style_declaration_obj, 256, sizeof(modest_style_raw_declaration_t));
if(myhtml_status)
return MODEST_STATUS_OK;
return MODEST_STATUS_OK;
}

View File

@ -23,8 +23,13 @@
#pragma once
#include "modest/myosi.h"
#include "modest/node/node.h"
#include "myhtml/utils/mcobject.h"
#include "myhtml/utils/mcobject_async.h"
#include "myhtml/utils/mchar_async.h"
#ifdef __cplusplus
extern "C" {
#endif
struct modest {
mcobject_async_t* mnode_obj;
@ -32,6 +37,18 @@ struct modest {
mcobject_async_t* mstylesheet_obj;
size_t mstylesheet_node_id;
mchar_async_t* mstyle_type_obj;
size_t mstyle_type_node_id;
mcobject_async_t* mraw_style_obj;
size_t mraw_style_node_id;
mcobject_t* mraw_style_declaration_obj;
/* refs */
myhtml_tree_t* myhtml_tree;
mycss_entry_t* mycss_entry;
};
@ -40,5 +57,8 @@ modest_status_t modest_init(modest_t* modest);
void modest_clean(modest_t* modest);
modest_t * modest_destroy(modest_t* modest, bool self_destroy);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_H */

View File

@ -22,7 +22,8 @@
#define MODEST_MYOSI_H
#pragma once
#include "myhtml/myosi.h"
#include "myhtml/myhtml.h"
#include "mycss/mycss.h"
#ifdef __cplusplus
extern "C" {

View File

@ -19,6 +19,7 @@
*/
#include "modest/node/node.h"
#include "modest/style/sheet.h"
modest_node_t * modest_node_create(modest_t* modest)
{
@ -42,5 +43,15 @@ modest_status_t modest_node_init(modest_t* modest, modest_node_t *mnode)
if(status)
return MODEST_STATUS_OK;
mnode->raw_style = modest_style_raw_create(modest);
if(mnode->raw_style == NULL)
return MODEST_STATUS_OK;
status = modest_style_raw_init(modest, mnode->raw_style);
if(status)
return MODEST_STATUS_OK;
return MODEST_STATUS_OK;
}

View File

@ -24,13 +24,22 @@
#include "modest/myosi.h"
#include "modest/modest.h"
#include "modest/style/sheet.h"
#include "modest/style/raw.h"
#ifdef __cplusplus
extern "C" {
#endif
struct modest_node {
modest_style_sheet_t* stylesheet;
modest_style_raw_t* raw_style;
};
modest_node_t * modest_node_create(modest_t* modest);
modest_status_t modest_node_init(modest_t* modest, modest_node_t *mnode);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_NODE_NODE_H */

View File

@ -0,0 +1,23 @@
/*
Copyright (C) 2016 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 "modest/node/property.h"

View File

@ -0,0 +1,35 @@
/*
Copyright (C) 2016 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)
*/
#ifndef MODEST_NODE_PROPERTY_H
#define MODEST_NODE_PROPERTY_H
#pragma once
#include "modest/node/node.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_NODE_PROPERTY_H */

View File

@ -0,0 +1,23 @@
/*
Copyright (C) 2016 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 "modest/node/raw_property.h"

View File

@ -0,0 +1,38 @@
/*
Copyright (C) 2016 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)
*/
#ifndef MODEST_NODE_RAW_PROPERTY_H
#define MODEST_NODE_RAW_PROPERTY_H
#pragma once
#include "modest/node/node.h"
#ifdef __cplusplus
extern "C" {
#endif
#define modest_node_raw_property(mnode, property) (mnode->raw_style == NULL || mnode->raw_style->property == NULL ? NULL : mnode->raw_style->property->declaration)
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_NODE_RAW_PROPERTY_H */

View File

@ -0,0 +1,76 @@
/*
Copyright (C) 2016 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 "modest/node/serialization.h"
void modest_node_raw_serialization_declaration(mycss_entry_t* mycss_entry, mycss_declaration_entry_t* decl, mycss_callback_serialization_f callback, void* context, bool* is_use)
{
if(decl) {
if(is_use && *is_use) {
callback(" ", 1, context);
}
mycss_declaration_serialization_entry(mycss_entry, decl, callback, context);
callback(";", 1, context);
if(is_use && *is_use == false) {
*is_use = true;
}
}
}
bool modest_node_raw_serialization(mycss_entry_t* mycss_entry, modest_node_t* mnode, mycss_callback_serialization_f callback, void* context)
{
bool is_use = false;
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, width), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, height), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, padding_top), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, padding_right), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, padding_bottom), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, padding_left), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, margin_top), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, margin_right), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, margin_bottom), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, margin_left), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, display), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, border_top_width), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, border_right_width), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, border_bottom_width), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, border_left_width), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, border_top_style), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, border_right_style), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, border_bottom_style), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, border_left_style), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, box_sizing), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, vertical_align), callback, context, &is_use);
modest_node_raw_serialization_declaration(mycss_entry, modest_node_raw_property(mnode, line_height), callback, context, &is_use);
return true;
}

View File

@ -0,0 +1,41 @@
/*
Copyright (C) 2016 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)
*/
#ifndef MODEST_NODE_SERIALIZATION_H
#define MODEST_NODE_SERIALIZATION_H
#pragma once
#include "modest/myosi.h"
#include "modest/node/node.h"
#include "modest/node/raw_property.h"
#include "mycss/myosi.h"
#include "mycss/declaration/serialization.h"
#ifdef __cplusplus
extern "C" {
#endif
bool modest_node_raw_serialization(mycss_entry_t* mycss_entry, modest_node_t* mnode, mycss_callback_serialization_f callback, void* context);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_NODE_SERIALIZATION_H */

File diff suppressed because it is too large Load Diff

View File

@ -23,293 +23,302 @@
#pragma once
#include "modest/myosi.h"
#include "modest/modest.h"
#include "modest/finder/myosi.h"
#include "modest/finder/thread.h"
typedef void (*modest_style_map_collate_f)(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
#ifdef __cplusplus
extern "C" {
#endif
void modest_style_map_collate_declaration(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
typedef void (*modest_style_map_collate_f)(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_undef(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_align_content(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_align_items(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_align_self(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_delay(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_direction(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_duration(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_fill_mode(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_iteration_count(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_name(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_play_state(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_animation_timing_function(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_appearance(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_backface_visibility(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_attachment(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_clip(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_image(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_origin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_repeat(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_background_size(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_bookmark_label(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_bookmark_level(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_bookmark_state(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom_left_radius(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom_right_radius(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_bottom_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_collapse(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_image(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_image_outset(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_image_repeat(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_image_slice(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_image_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_left(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_left_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_left_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_left_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_radius(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_right(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_right_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_right_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_right_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_spacing(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top_left_radius(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top_right_radius(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_top_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_border_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_bottom(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_box_decoration_break(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_box_shadow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_box_sizing(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_box_suppress(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_break_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_break_before(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_break_inside(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_caption_side(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_caret(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_caret_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_caret_shape(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_clear(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_clear_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_color_adjust(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_color_interpolation(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_color_interpolation_filters(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_color_rendering(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_count(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_fill(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_gap(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_rule(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_rule_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_rule_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_rule_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_span(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_column_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_columns(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_contain(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_content(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_continue(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_counter_increment(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_cue(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_cue_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_cue_before(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_cursor(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_direction(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_display(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_empty_cells(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_fill(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_fill_opacity(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_fill_rule(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_basis(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_direction(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_flow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_grow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_shrink(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_flex_wrap(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_float(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_float_displace(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_family(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_feature_settings(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_kerning(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_language_override(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_size(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_size_adjust(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_stretch(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_synthesis(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_alternates(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_caps(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_east_asian(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_ligatures(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_numeric(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_variant_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_font_weight(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_glyph_orientation_vertical(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_hanging_punctuation(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_height(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_hyphens(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_image_rendering(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_indent_edge_reset(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_inline_size_step(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_justify_content(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_left(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_letter_spacing(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_line_break(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_line_height(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_line_height_step(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_list_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_list_style_image(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_list_style_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_list_style_type(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_margin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_margin_bottom(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_margin_left(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_margin_right(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_margin_top(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_marker(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_marker_end(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_marker_mid(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_marker_side(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_marker_start(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_max_height(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_max_lines(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_max_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_min_height(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_min_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_nav_down(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_nav_left(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_nav_right(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_nav_up(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_offset_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_offset_before(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_offset_end(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_offset_start(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_opacity(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_order(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_orphans(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_outline(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_outline_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_outline_offset(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_outline_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_outline_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_overflow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_overflow_wrap(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_overflow_x(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_overflow_y(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_padding(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_padding_bottom(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_padding_left(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_padding_right(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_padding_top(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_pause(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_pause_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_pause_before(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_perspective(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_perspective_origin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_presentation_level(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_quotes(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_region_fragment(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_resize(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_rest(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_rest_after(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_rest_before(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_right(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_ruby_align(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_ruby_merge(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_ruby_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_scroll_padding(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_scroll_snap_align(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_scroll_snap_margin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_scroll_snap_stop(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_scroll_snap_type(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_shape_image_threshold(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_shape_margin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_shape_outside(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_shape_rendering(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_speak(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_speak_as(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_string_set(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_dasharray(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_dashoffset(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_linecap(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_linejoin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_miterlimit(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_opacity(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_stroke_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_tab_size(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_table_layout(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_align(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_align_all(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_align_last(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_combine_upright(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_decoration(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_decoration_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_decoration_line(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_decoration_skip(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_decoration_styl(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_emphasis(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_emphasis_color(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_emphasis_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_emphasis_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_indent(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_justify(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_orientation(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_overflow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_rendering(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_shadow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_size_adjust(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_transform(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_text_underline_position(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_top(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_touch_action(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transform(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transform_box(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transform_origin(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transform_style(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transition(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transition_delay(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transition_duration(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transition_property(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_transition_timing_function(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_unicode_bidi(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_user_select(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_vertical_align(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_visibility(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_balance(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_duration(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_family(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_pitch(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_range(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_rate(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_stress(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_voice_volume(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_white_space(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_widows(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_width(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_will_change(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_word_break(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_word_spacing(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_word_wrap(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_wrap_flow(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_wrap_through(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_writing_mode(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration_z_index(myhtml_tree_node_t* node, modest_finder_thread_declaration_t* thr_dec);
void modest_style_map_collate_declaration(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_undef(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_align_content(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_align_items(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_align_self(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_delay(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_direction(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_duration(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_fill_mode(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_iteration_count(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_name(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_play_state(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_animation_timing_function(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_appearance(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_backface_visibility(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_attachment(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_clip(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_image(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_origin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_repeat(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_background_size(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_bookmark_label(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_bookmark_level(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_bookmark_state(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom_left_radius(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom_right_radius(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_bottom_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_collapse(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_image(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_image_outset(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_image_repeat(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_image_slice(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_image_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_left(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_left_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_left_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_left_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_radius(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_right(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_right_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_right_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_right_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_spacing(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top_left_radius(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top_right_radius(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_top_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_border_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_bottom(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_box_decoration_break(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_box_shadow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_box_sizing(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_box_suppress(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_break_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_break_before(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_break_inside(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_caption_side(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_caret(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_caret_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_caret_shape(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_clear(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_clear_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_color_adjust(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_color_interpolation(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_color_interpolation_filters(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_color_rendering(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_count(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_fill(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_gap(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_rule(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_rule_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_rule_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_rule_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_span(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_column_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_columns(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_contain(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_content(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_continue(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_counter_increment(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_cue(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_cue_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_cue_before(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_cursor(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_direction(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_display(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_empty_cells(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_fill(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_fill_opacity(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_fill_rule(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_basis(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_direction(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_flow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_grow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_shrink(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_flex_wrap(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_float(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_float_displace(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_family(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_feature_settings(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_kerning(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_language_override(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_size(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_size_adjust(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_stretch(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_synthesis(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_alternates(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_caps(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_east_asian(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_ligatures(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_numeric(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_variant_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_font_weight(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_glyph_orientation_vertical(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_hanging_punctuation(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_height(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_hyphens(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_image_rendering(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_indent_edge_reset(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_inline_size_step(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_justify_content(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_left(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_letter_spacing(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_line_break(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_line_height(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_line_height_step(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_list_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_list_style_image(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_list_style_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_list_style_type(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_margin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_margin_bottom(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_margin_left(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_margin_right(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_margin_top(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_marker(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_marker_end(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_marker_mid(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_marker_side(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_marker_start(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_max_height(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_max_lines(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_max_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_min_height(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_min_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_nav_down(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_nav_left(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_nav_right(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_nav_up(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_offset_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_offset_before(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_offset_end(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_offset_start(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_opacity(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_order(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_orphans(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_outline(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_outline_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_outline_offset(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_outline_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_outline_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_overflow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_overflow_wrap(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_overflow_x(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_overflow_y(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_padding(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_padding_bottom(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_padding_left(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_padding_right(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_padding_top(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_pause(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_pause_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_pause_before(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_perspective(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_perspective_origin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_presentation_level(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_quotes(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_region_fragment(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_resize(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_rest(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_rest_after(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_rest_before(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_right(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_ruby_align(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_ruby_merge(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_ruby_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_scroll_padding(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_scroll_snap_align(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_scroll_snap_margin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_scroll_snap_stop(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_scroll_snap_type(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_shape_image_threshold(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_shape_margin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_shape_outside(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_shape_rendering(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_speak(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_speak_as(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_string_set(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_dasharray(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_dashoffset(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_linecap(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_linejoin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_miterlimit(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_opacity(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_stroke_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_tab_size(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_table_layout(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_align(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_align_all(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_align_last(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_combine_upright(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_decoration(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_decoration_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_decoration_line(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_decoration_skip(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_decoration_styl(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_emphasis(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_emphasis_color(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_emphasis_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_emphasis_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_indent(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_justify(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_orientation(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_overflow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_rendering(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_shadow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_size_adjust(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_transform(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_text_underline_position(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_top(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_touch_action(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transform(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transform_box(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transform_origin(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transform_style(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transition(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transition_delay(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transition_duration(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transition_property(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_transition_timing_function(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_unicode_bidi(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_user_select(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_vertical_align(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_visibility(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_balance(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_duration(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_family(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_pitch(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_range(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_rate(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_stress(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_voice_volume(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_white_space(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_widows(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_width(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_will_change(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_word_break(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_word_spacing(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_word_wrap(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_wrap_flow(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_wrap_through(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_writing_mode(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
void modest_style_map_collate_declaration_z_index(modest_t* modest, myhtml_tree_node_t* node, mycss_declaration_entry_t* decl, modest_style_raw_specificity_t* spec);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_STYLE_MAP_H */

51
source/modest/style/raw.c Normal file
View File

@ -0,0 +1,51 @@
/*
Copyright (C) 2016 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 "modest/style/raw.h"
modest_style_raw_t * modest_style_raw_create(modest_t* modest)
{
modest_style_raw_t* raw_style = (modest_style_raw_t*)mcobject_async_malloc(modest->mraw_style_obj, modest->mraw_style_node_id, NULL);
if(raw_style == NULL)
return NULL;
memset(raw_style, 0, sizeof(modest_style_raw_t));
return raw_style;
}
modest_status_t modest_style_raw_init(modest_t* modest, modest_style_raw_t* raw_style)
{
return MODEST_STATUS_OK;
}
modest_style_raw_declaration_t * modest_style_raw_declaration_create(modest_t* modest)
{
modest_style_raw_declaration_t* raw_decl = (modest_style_raw_declaration_t*)mcobject_malloc(modest->mraw_style_declaration_obj, NULL);
if(raw_decl == NULL)
return NULL;
memset(raw_decl, 0, sizeof(modest_style_raw_declaration_t));
return raw_decl;
}

89
source/modest/style/raw.h Normal file
View File

@ -0,0 +1,89 @@
/*
Copyright (C) 2016 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)
*/
#ifndef MODEST_STYLE_RAW_H
#define MODEST_STYLE_RAW_H
#pragma once
#include "modest/myosi.h"
#include "modest/modest.h"
#include "myhtml/utils/mcobject.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct modest_style_raw modest_style_raw_t;
typedef struct modest_style_raw_declaration modest_style_raw_declaration_t;
typedef struct modest_style_raw_specificity modest_style_raw_specificity_t;
struct modest_style_raw_specificity {
unsigned int x;
unsigned int a;
unsigned int b;
unsigned int c;
};
struct modest_style_raw_declaration {
mycss_declaration_entry_t* declaration;
modest_style_raw_specificity_t spec;
};
struct modest_style_raw {
modest_style_raw_declaration_t* width;
modest_style_raw_declaration_t* height;
modest_style_raw_declaration_t* padding_top;
modest_style_raw_declaration_t* padding_right;
modest_style_raw_declaration_t* padding_bottom;
modest_style_raw_declaration_t* padding_left;
modest_style_raw_declaration_t* margin_top;
modest_style_raw_declaration_t* margin_right;
modest_style_raw_declaration_t* margin_bottom;
modest_style_raw_declaration_t* margin_left;
modest_style_raw_declaration_t* display;
modest_style_raw_declaration_t* border_top_width;
modest_style_raw_declaration_t* border_right_width;
modest_style_raw_declaration_t* border_bottom_width;
modest_style_raw_declaration_t* border_left_width;
modest_style_raw_declaration_t* border_top_style;
modest_style_raw_declaration_t* border_right_style;
modest_style_raw_declaration_t* border_bottom_style;
modest_style_raw_declaration_t* border_left_style;
modest_style_raw_declaration_t* box_sizing;
modest_style_raw_declaration_t* vertical_align;
modest_style_raw_declaration_t* line_height;
};
modest_style_raw_t * modest_style_raw_create(modest_t* modest);
modest_status_t modest_style_raw_init(modest_t* modest, modest_style_raw_t* raw_style);
modest_style_raw_declaration_t * modest_style_raw_declaration_create(modest_t* modest);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_STYLE_RAW_H */

View File

@ -26,12 +26,37 @@
#include "modest/modest.h"
#include "modest/style/type.h"
#ifdef __cplusplus
extern "C" {
#endif
struct modest_style_sheet {
modest_style_type_length_t width;
modest_style_type_length_t height;
modest_style_type_length_t padding_top;
modest_style_type_length_t padding_right;
modest_style_type_length_t padding_bottom;
modest_style_type_length_t padding_left;
modest_style_type_length_t margin_top;
modest_style_type_length_t margin_right;
modest_style_type_length_t margin_bottom;
modest_style_type_length_t margin_left;
modest_style_type_display_t display;
modest_style_type_length_t border_top_width;
modest_style_type_length_t border_right_width;
modest_style_type_length_t border_bottom_width;
modest_style_type_length_t border_left_width;
};
modest_style_sheet_t * modest_style_sheet_create(modest_t* modest);
modest_status_t modest_style_sheet_init(modest_t* modest, modest_style_sheet_t* m_stylesheet);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_STYLE_SHEET_H */

View File

@ -20,5 +20,19 @@
#include "modest/style/type.h"
void * modest_style_type_create(modest_t* modest, size_t size)
{
void* data = (void*)mchar_async_malloc(modest->mstyle_type_obj, modest->mstyle_type_node_id, size);
if(data == NULL)
return NULL;
memset(data, 0, size);
return data;
}
modest_status_t modest_style_type_init(modest_t* modest, void *data)
{
return MODEST_STATUS_OK;
}

View File

@ -23,28 +23,31 @@
#pragma once
#include "modest/myosi.h"
#include "modest/modest.h"
#include "mycss/declaration/myosi.h"
#include "myhtml/utils/mchar_async.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct modest_style_type_length modest_style_type_length_t;
typedef struct modest_style_raw modest_style_raw_t;
typedef struct modest_style_raw_specificity modest_style_raw_specificity_t;
struct modest_style_raw_specificity {
unsigned int x;
unsigned int a;
unsigned int b;
unsigned int c;
};
struct modest_style_raw {
mycss_declaration_entry_t* declaration;
modest_style_raw_specificity_t spec;
};
typedef struct modest_style_type_display modest_style_type_display_t;
struct modest_style_type_length {
float value;
modest_style_raw_t raw;
};
struct modest_style_type_display {
mycss_property_display_t value;
};
void * modest_style_type_create(modest_t* modest, size_t size);
modest_status_t modest_style_type_init(modest_t* modest, void *data);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* MODEST_STYLE_TYPE_H */

View File

@ -44,8 +44,11 @@ void mycss_declaration_entry_clean_all(mycss_declaration_entry_t* dec_entry)
void mycss_declaration_entry_destroy(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry)
{
if(dec_entry == NULL)
return;
if(dec_entry->value)
mycss_values_destroy(declaration->ref_entry, dec_entry);
mycss_values_destroy(declaration->ref_entry, dec_entry->value);
mcobject_free(declaration->mcobject_entries, dec_entry);
}
@ -63,6 +66,18 @@ void mycss_declaration_entry_append_to_current(mycss_declaration_t* declaration,
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) {
@ -95,4 +110,14 @@ mycss_declaration_entry_t * mycss_declaration_entry_last(mycss_declaration_t* de
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;
}

View File

@ -37,6 +37,9 @@ void mycss_declaration_entry_destroy(mycss_declaration_t* declaration, mycss_dec
mycss_declaration_entry_t * mycss_declaration_entry(mycss_declaration_t* declaration);
mycss_declaration_entry_t * mycss_declaration_entry_last(mycss_declaration_t* declaration);
mycss_declaration_entry_t * mycss_declaration_entry_clone(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry, bool with_value);
void mycss_declaration_entry_type_set(mycss_declaration_entry_t* dec_entry, mycss_property_type_t type);
void mycss_declaration_entry_important_set(mycss_declaration_entry_t* dec_entry, bool is_important);
void mycss_declaration_entry_append_to_current(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry);
void mycss_declaration_entry_remove(mycss_declaration_t* declaration, mycss_declaration_entry_t* dec_entry);

View File

@ -31,6 +31,9 @@ static void mycss_declaration_serialization_important_if_need(mycss_declaration_
bool mycss_declaration_serialization_entry(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry,
mycss_callback_serialization_f callback, void* context)
{
if(dec_entry == NULL)
return false;
mycss_property_serialization_type_name(dec_entry->type, callback, context);
callback(": ", 2, context);
@ -41,6 +44,9 @@ bool mycss_declaration_serialization_entry(mycss_entry_t* entry, mycss_declarati
void mycss_declaration_serialization_entries(mycss_entry_t* entry, mycss_declaration_entry_t* first_dec_entry,
mycss_callback_serialization_f callback, void* context)
{
if(first_dec_entry == NULL)
return;
while(first_dec_entry) {
mycss_declaration_serialization_entry(entry, first_dec_entry, callback, context);
@ -56,7 +62,7 @@ void mycss_declaration_serialization_entries(mycss_entry_t* entry, mycss_declara
bool mycss_declaration_serialization_undef(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry,
mycss_callback_serialization_f callback, void* context)
{
if(dec_entry->value == NULL)
if(dec_entry == NULL)
return false;
mycss_property_serialization_value(dec_entry->value_type, dec_entry->value, callback, context);
@ -65,10 +71,10 @@ bool mycss_declaration_serialization_undef(mycss_entry_t* entry, mycss_declarati
return true;
}
bool mycss_declaration_serialization_padding(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry,
bool mycss_declaration_serialization_shorthand_four(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry,
mycss_callback_serialization_f callback, void* context)
{
if(dec_entry->value == NULL)
if(dec_entry == NULL || dec_entry->value == NULL)
return false;
mycss_values_shorthand_four_t *value = (mycss_values_shorthand_four_t*)dec_entry->value;
@ -105,14 +111,52 @@ bool mycss_declaration_serialization_padding(mycss_entry_t* entry, mycss_declara
return true;
}
bool mycss_declaration_serialization_padding_x(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry,
mycss_callback_serialization_f callback, void* context)
bool mycss_declaration_serialization_shorthand_two(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry,
mycss_callback_serialization_f callback, void* context)
{
if(dec_entry->value == NULL)
if(dec_entry == NULL || dec_entry->value == NULL)
return false;
mycss_property_serialization_value(dec_entry->value_type, dec_entry->value, callback, context);
mycss_values_shorthand_two_t *shorthand_two = (mycss_values_shorthand_two_t*)dec_entry->value;
mycss_declaration_entry_t *tmp;
if(shorthand_two->one) {
tmp = (mycss_declaration_entry_t*)shorthand_two->one;
mycss_property_serialization_value(tmp->value_type, tmp->value, callback, context);
}
if(shorthand_two->two) {
callback(" ", 1, context);
tmp = (mycss_declaration_entry_t*)shorthand_two->two;
mycss_property_serialization_value(tmp->value_type, tmp->value, callback, context);
}
mycss_declaration_serialization_important_if_need(dec_entry, callback, context);
return true;
}
bool mycss_declaration_serialization_shorthand_two_type(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry,
mycss_callback_serialization_f callback, void* context)
{
if(dec_entry == NULL || dec_entry->value == NULL)
return false;
mycss_values_shorthand_two_type_t *short_two_type = (mycss_values_shorthand_two_type_t*)dec_entry->value;
if(short_two_type->one) {
mycss_property_serialization_value(short_two_type->type_one, short_two_type->one, callback, context);
}
if(short_two_type->two) {
callback(" ", 1, context);
mycss_property_serialization_value(short_two_type->type_two, short_two_type->two, callback, context);
}
mycss_declaration_serialization_important_if_need(dec_entry, callback, context);
return true;
}

View File

@ -38,8 +38,9 @@ bool mycss_declaration_serialization_entry(mycss_entry_t* entry, mycss_declarati
void mycss_declaration_serialization_entries(mycss_entry_t* entry, mycss_declaration_entry_t* first_dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_undef(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_padding(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_padding_x(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_shorthand_four(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_shorthand_two(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
bool mycss_declaration_serialization_shorthand_two_type(mycss_entry_t* entry, mycss_declaration_entry_t* dec_entry, mycss_callback_serialization_f callback, void* context);
#ifdef __cplusplus
} /* extern "C" */

View File

@ -205,11 +205,11 @@ static mycss_declaration_serialization_f mycss_declaration_serialization_map_by_
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_padding,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_padding_x,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,
mycss_declaration_serialization_undef,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -265,7 +265,7 @@ bool mycss_property_parser_text_decoration(mycss_entry_t* entry, mycss_token_t*
bool mycss_property_parser_text_decoration_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_decoration_line(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_decoration_skip(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_decoration_styl(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_decoration_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_emphasis(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_emphasis_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
bool mycss_property_parser_text_emphasis_position(mycss_entry_t* entry, mycss_token_t* token, bool last_response);

File diff suppressed because it is too large Load Diff

View File

@ -257,7 +257,7 @@ static const char * mycss_property_index_type_name[] =
"text-decoration-color",
"text-decoration-line",
"text-decoration-skip",
"text-decoration-styl",
"text-decoration-style",
"text-emphasis",
"text-emphasis-color",
"text-emphasis-position",
@ -327,40 +327,40 @@ static const char * mycss_property_index_type_value[] =
"absolute",
"alias",
"all",
"all-petite-caps",
"all-scroll",
"all-small-caps",
"allow-end",
"allow_end",
"all_petite_caps",
"all_scroll",
"all_small_caps",
"alternate",
"alternate-reverse",
"alternate_reverse",
"always",
"auto",
"available",
"avoid",
"avoid-column",
"avoid-page",
"avoid-region",
"avoid_column",
"avoid_page",
"avoid_region",
"backwards",
"balance",
"balance-all",
"balance_all",
"bar",
"baseline",
"bevel",
"bidi-override",
"bidi_override",
"blink",
"block",
"block-within-page",
"block_within_page",
"bold",
"bolder",
"border-box",
"border-edge",
"border_box",
"border_edge",
"both",
"bottom",
"box-decoration",
"box_decoration",
"break",
"break-all",
"break-spaces",
"break-word",
"break_all",
"break_spaces",
"break_word",
"butt",
"capitalize",
"caption",
@ -371,20 +371,20 @@ static const char * mycss_property_index_type_value[] =
"clip",
"clone",
"closed",
"col-resize",
"collapse",
"column",
"column-reverse",
"common-ligatures",
"column_reverse",
"col_resize",
"common_ligatures",
"complex",
"condensed",
"contain",
"content",
"content-box",
"content-edge",
"contents",
"context-menu",
"content_box",
"content_edge",
"contextual",
"context_menu",
"copy",
"cover",
"crispedges",
@ -394,48 +394,48 @@ static const char * mycss_property_index_type_value[] =
"dashed",
"default",
"descendants",
"diagonal-fractions",
"diagonal_fractions",
"digits",
"discard",
"discretionary-ligatures",
"discretionary_ligatures",
"dot",
"dotted",
"double",
"double-circle",
"e-resize",
"each-line",
"double_circle",
"each_line",
"ease",
"ease-in",
"ease-in-out",
"ease-out",
"ease_in",
"ease_in_out",
"ease_out",
"economy",
"edges",
"ellipsis",
"embed",
"end",
"evenodd",
"ew-resize",
"ew_resize",
"exact",
"expanded",
"extra-condensed",
"extra-expanded",
"extra_condensed",
"extra_expanded",
"e_resize",
"fast",
"fill",
"fill-box",
"filled",
"fill_box",
"first",
"fit-content",
"fit_content",
"fixed",
"flat",
"flex",
"flex-end",
"flex-start",
"flex_end",
"flex_start",
"flow",
"flow-root",
"force-end",
"flow_root",
"force_end",
"forwards",
"fragments",
"full-width",
"full_width",
"geometricprecision",
"grab",
"grabbing",
@ -446,10 +446,10 @@ static const char * mycss_property_index_type_value[] =
"hidden",
"hide",
"high",
"historical-forms",
"historical-ligatures",
"historical_forms",
"historical_ligatures",
"horizontal",
"horizontal-tb",
"horizontal_tb",
"icon",
"increment",
"indent",
@ -457,42 +457,41 @@ static const char * mycss_property_index_type_value[] =
"initial",
"ink",
"inline",
"inline-block",
"inline-flex",
"inline-grid",
"inline-list-item",
"inline-table",
"inline_block",
"inline_flex",
"inline_grid",
"inline_list_item",
"inline_table",
"inset",
"inside",
"inter-character",
"inter-word",
"inter_character",
"inter_word",
"invert",
"isolate",
"isolate-override",
"isolate_override",
"italic",
"jis04",
"jis78",
"jis83",
"jis90",
"justify",
"justify-all",
"keep-all",
"justify_all",
"keep_all",
"large",
"larger",
"last",
"layout",
"left",
"leftwards",
"length",
"lighter",
"line",
"line-through",
"linear",
"linearrgb",
"lining-nums",
"list-container",
"list-item",
"literal-punctuation",
"line_through",
"lining_nums",
"list_container",
"list_item",
"literal_punctuation",
"local",
"loose",
"loud",
@ -502,44 +501,44 @@ static const char * mycss_property_index_type_value[] =
"mandatory",
"manipulation",
"manual",
"margin-edge",
"match-parent",
"max-content",
"margin_edge",
"match_parent",
"maximum",
"max_content",
"medium",
"menu",
"message-box",
"message_box",
"middle",
"min-content",
"minimum",
"min_content",
"miter",
"mixed",
"moderate",
"move",
"n-resize",
"ne-resize",
"nesw-resize",
"no-common-ligatures",
"no-content",
"no-contextual",
"no-discretionary-ligatures",
"no-display",
"no-drop",
"no-historical-ligatures",
"no-punctuation",
"no-repeat",
"nesw_resize",
"ne_resize",
"none",
"nonzero",
"normal",
"not-allowed",
"not_allowed",
"nowrap",
"ns-resize",
"nw-resize",
"nwse-resize",
"no_common_ligatures",
"no_content",
"no_contextual",
"no_discretionary_ligatures",
"no_display",
"no_drop",
"no_historical_ligatures",
"no_punctuation",
"no_repeat",
"ns_resize",
"nwse_resize",
"nw_resize",
"n_resize",
"objects",
"oblique",
"off",
"oldstyle-nums",
"oldstyle_nums",
"on",
"open",
"optimizelegibility",
@ -551,38 +550,37 @@ static const char * mycss_property_index_type_value[] =
"over",
"overflow",
"overline",
"padding-box",
"padding-edge",
"padding_box",
"padding_edge",
"page",
"paginate",
"paint",
"pan-down",
"pan-left",
"pan-right",
"pan-up",
"pan-x",
"pan-y",
"pan_down",
"pan_left",
"pan_right",
"pan_up",
"pan_x",
"pan_y",
"paused",
"percentage",
"petite-caps",
"petite_caps",
"plaintext",
"pointer",
"pre",
"pre-line",
"pre-wrap",
"preserve",
"preserve-3d",
"preserve_3d",
"pre_line",
"pre_wrap",
"progress",
"proportional-nums",
"proportional-width",
"proportional_nums",
"proportional_width",
"proximity",
"recto",
"reduced",
"region",
"relative",
"repeat",
"repeat-x",
"repeat-y",
"repeat_x",
"repeat_y",
"reverse",
"ridge",
"right",
@ -590,54 +588,53 @@ static const char * mycss_property_index_type_value[] =
"root",
"round",
"row",
"row-resize",
"row-reverse",
"row_resize",
"row_reverse",
"rtl",
"ruby",
"ruby-base",
"ruby-base-container",
"ruby-text",
"ruby-text-container",
"run-in",
"ruby_base",
"ruby_base_container",
"ruby_text",
"ruby_text_container",
"running",
"s-resize",
"run_in",
"same",
"scroll",
"scroll-position",
"se-resize",
"semi-condensed",
"semi-expanded",
"scroll_position",
"semi_condensed",
"semi_expanded",
"separate",
"sesame",
"sesameinitial",
"se_resize",
"show",
"sideways",
"sideways-lr",
"sideways-rl",
"sideways_lr",
"sideways_rl",
"silent",
"simplified",
"size",
"slashed-zero",
"slashed_zero",
"slice",
"slow",
"small",
"small-caps",
"small-caption",
"smaller",
"small_caps",
"small_caption",
"soft",
"solid",
"space",
"space-around",
"space-between",
"spaces",
"spell-out",
"space_around",
"space_between",
"spell_out",
"square",
"srgb",
"stacked-fractions",
"stacked_fractions",
"start",
"static",
"status-bar",
"step-end",
"step-start",
"status_bar",
"step_end",
"step_start",
"sticky",
"stretch",
"strict",
@ -645,62 +642,70 @@ static const char * mycss_property_index_type_value[] =
"style",
"sub",
"super",
"sw-resize",
"sw_resize",
"s_resize",
"table",
"table-caption",
"table-cell",
"table-column",
"table-column-group",
"table-footer-group",
"table-header-group",
"table-row",
"table-row-group",
"tabular-nums",
"table_caption",
"table_cell",
"table_column",
"table_column_group",
"table_footer_group",
"table_header_group",
"table_row",
"table_row_group",
"tabular_nums",
"text",
"text-bottom",
"text-top",
"titling-caps",
"text_bottom",
"text_top",
"thick",
"thin",
"titling_caps",
"top",
"traditional",
"triangle",
"ultra-condensed",
"ultra-expanded",
"ultra_condensed",
"ultra_expanded",
"under",
"underline",
"underscore",
"unicase",
"unset",
"uppercase",
"upright",
"verso",
"vertical",
"vertical-lr",
"vertical-rl",
"vertical-text",
"view-box",
"vertical_lr",
"vertical_rl",
"vertical_text",
"view_box",
"visible",
"w-resize",
"wait",
"wavy",
"weak",
"weight",
"wrap",
"wrap-reverse",
"wrap_reverse",
"w_resize",
"x",
"x-fast",
"x-high",
"x-large",
"x-loud",
"x-low",
"x-slow",
"x-small",
"x-soft",
"x-strong",
"x-weak",
"xx-large",
"xx-small",
"xx_large",
"xx_small",
"x_fast",
"x_high",
"x_large",
"x_loud",
"x_low",
"x_slow",
"x_small",
"x_soft",
"x_strong",
"x_weak",
"y",
"zoom-in",
"zoom-out",
"zoom_in",
"zoom_out",
"<color>",
"<length>",
"<number>",
"<percentage>",
""
};

View File

@ -33,11 +33,11 @@ void mycss_property_serialization_type_name(mycss_property_type_t prop_type, myc
void mycss_property_serialization_value(unsigned int value_type, void* value, mycss_callback_serialization_f callback, void* context)
{
switch (value_type) {
case MyCSS_PROPERTY_VALUE_LENGTH:
case MyCSS_PROPERTY_VALUE__LENGTH:
mycss_values_serialization_length(value, callback, context);
break;
case MyCSS_PROPERTY_VALUE_PERCENTAGE:
case MyCSS_PROPERTY_VALUE__PERCENTAGE:
mycss_values_serialization_percentage(value, callback, context);
break;

View File

@ -52,43 +52,282 @@ bool mycss_property_shared_check_declaration_end(mycss_entry_t* entry, mycss_tok
return false;
}
bool mycss_property_shared_length(mycss_entry_t* entry, mycss_token_t* token, mycss_declaration_entry_t* dec_entry)
bool mycss_property_shared_number(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str)
{
void *value = NULL;
mycss_values_entry_set(entry, &value);
if(mycss_values_consume_length(entry, token)) {
dec_entry->value = value;
dec_entry->value_type = MyCSS_PROPERTY_WIDTH_LENGTH;
}
else if(mycss_values_consume_percentage(entry, token)) {
dec_entry->value = value;
dec_entry->value_type = MyCSS_PROPERTY_WIDTH_PERCENTAGE;
}
else if(token->type == MyCSS_TOKEN_TYPE_IDENT)
{
myhtml_string_t str;
mycss_token_data_to_string(entry, token, &str, true, false);
dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
myhtml_string_destroy(&str, false);
if(dec_entry->value_type != MyCSS_PROPERTY_WIDTH_AUTO &&
dec_entry->value_type != MyCSS_PROPERTY_WIDTH_INHERIT)
{
return false;
}
}
else {
if(token->type != MyCSS_TOKEN_TYPE_NUMBER)
return false;
mycss_values_length_t *length = mycss_values_create(entry, sizeof(mycss_values_length_t));
if(str->data == NULL)
mycss_token_data_to_string(entry, token, str, true, false);
double return_num;
mycss_convert_data_to_double(str->data, str->length, &return_num, &length->is_float);
if(length->is_float)
length->f = (float)return_num;
else
length->i = (int)return_num;
*value = length;
*value_type = MyCSS_PROPERTY_VALUE__NUMBER;
return true;
}
bool mycss_property_shared_length(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str)
{
if(token->type != MyCSS_TOKEN_TYPE_DIMENSION && token->type != MyCSS_TOKEN_TYPE_NUMBER)
return false;
if(str->data == NULL)
mycss_token_data_to_string(entry, token, str, true, false);
double return_num; bool is_float;
size_t consume_length = mycss_convert_data_to_double(str->data, str->length, &return_num, &is_float);
mycss_units_type_t type = mycss_units_type_by_name(&str->data[consume_length], (str->length - consume_length));
if(type == MyCSS_UNIT_TYPE_UNDEF)
if(is_float == true || (long)return_num != 0)
return false;
mycss_values_length_t *length = mycss_values_create(entry, sizeof(mycss_values_length_t));
if(is_float)
length->f = (float)return_num;
else
length->i = (int)return_num;
length->is_float = is_float;
length->type = type;
*value = length;
*value_type = MyCSS_PROPERTY_VALUE__LENGTH;
return true;
}
bool mycss_property_shared_percentage(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str)
{
if(token->type != MyCSS_TOKEN_TYPE_PERCENTAGE)
return false;
mycss_values_percentage_t *length = mycss_values_create(entry, sizeof(mycss_values_length_t));
if(str->data == NULL)
mycss_token_data_to_string(entry, token, str, true, false);
double return_num;
mycss_convert_data_to_double(str->data, str->length, &return_num, &length->is_float);
if(length->is_float)
length->f = (float)return_num;
else
length->i = (int)return_num;
*value = length;
*value_type = MyCSS_PROPERTY_VALUE__PERCENTAGE;
return true;
}
bool mycss_property_shared_length_percentage(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str)
{
return mycss_property_shared_length(entry, token, value, value_type, str) ||
mycss_property_shared_percentage(entry, token, value, value_type, str);
}
bool mycss_property_shared_default(mycss_entry_t* entry, mycss_token_t* token, unsigned int* value_type, myhtml_string_t* str)
{
if(token->type != MyCSS_TOKEN_TYPE_IDENT)
return false;
if(str->data == NULL)
mycss_token_data_to_string(entry, token, str, true, false);
*value_type = mycss_property_value_type_by_name(str->data, str->length);
switch (*value_type) {
case MyCSS_PROPERTY_VALUE_INHERIT:
case MyCSS_PROPERTY_VALUE_INITIAL:
case MyCSS_PROPERTY_VALUE_UNSET:
break;
default:
*value_type = MyCSS_PROPERTY_TYPE_UNDEF;
return false;
}
return true;
}
bool mycss_property_shared_line_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
unsigned int mycss_property_shared_get_value_type(mycss_entry_t* entry, mycss_token_t* token, myhtml_string_t* str)
{
if(token->type != MyCSS_TOKEN_TYPE_IDENT)
return MyCSS_PROPERTY_TYPE_UNDEF;
if(str->data == NULL)
mycss_token_data_to_string(entry, token, str, true, false);
return mycss_property_value_type_by_name(str->data, str->length);
}
bool mycss_property_shared_by_value_type(mycss_entry_t* entry, mycss_token_t* token, unsigned int* value_type, unsigned int check_type, myhtml_string_t* str)
{
if(token->type != MyCSS_TOKEN_TYPE_IDENT)
return false;
if(str->data == NULL)
mycss_token_data_to_string(entry, token, str, true, false);
if(check_type != mycss_property_value_type_by_name(str->data, str->length)) {
*value_type = check_type;
return true;
}
return false;
}
bool mycss_property_shared_width(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str)
{
if(mycss_property_shared_length_percentage(entry, token, value, value_type, str))
return true;
if(token->type != MyCSS_TOKEN_TYPE_IDENT)
return false;
if(str->data == NULL)
mycss_token_data_to_string(entry, token, str, true, false);
*value_type = mycss_property_value_type_by_name(str->data, str->length);
switch (*value_type) {
case MyCSS_PROPERTY_WIDTH_AVAILABLE:
case MyCSS_PROPERTY_WIDTH_MIN_CONTENT:
case MyCSS_PROPERTY_WIDTH_MAX_CONTENT:
case MyCSS_PROPERTY_WIDTH_FIT_CONTENT:
case MyCSS_PROPERTY_WIDTH_AUTO:
/* default values */
case MyCSS_PROPERTY_VALUE_INHERIT:
case MyCSS_PROPERTY_VALUE_INITIAL:
case MyCSS_PROPERTY_VALUE_UNSET:
break;
default:
*value_type = MyCSS_PROPERTY_TYPE_UNDEF;
return false;
}
return true;
}
bool mycss_property_shared_height(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str)
{
if(mycss_property_shared_length_percentage(entry, token, value, value_type, str))
return true;
if(token->type != MyCSS_TOKEN_TYPE_IDENT)
return false;
if(str->data == NULL)
mycss_token_data_to_string(entry, token, str, true, false);
*value_type = mycss_property_value_type_by_name(str->data, str->length);
switch (*value_type) {
case MyCSS_PROPERTY_HEIGHT_AVAILABLE:
case MyCSS_PROPERTY_HEIGHT_MIN_CONTENT:
case MyCSS_PROPERTY_HEIGHT_MAX_CONTENT:
case MyCSS_PROPERTY_HEIGHT_FIT_CONTENT:
case MyCSS_PROPERTY_HEIGHT_AUTO:
case MyCSS_PROPERTY_HEIGHT_COMPLEX:
/* default values */
case MyCSS_PROPERTY_VALUE_INHERIT:
case MyCSS_PROPERTY_VALUE_INITIAL:
case MyCSS_PROPERTY_VALUE_UNSET:
break;
default:
*value_type = MyCSS_PROPERTY_TYPE_UNDEF;
return false;
}
return true;
}
bool mycss_property_shared_line_width(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str)
{
if(mycss_property_shared_length(entry, token, value, value_type, str))
return true;
if(token->type != MyCSS_TOKEN_TYPE_IDENT)
return false;
if(str->data == NULL)
mycss_token_data_to_string(entry, token, str, true, false);
*value_type = mycss_property_value_type_by_name(str->data, str->length);
switch (*value_type) {
case MyCSS_PROPERTY_BORDER_WIDTH_THIN:
case MyCSS_PROPERTY_BORDER_WIDTH_MEDIUM:
case MyCSS_PROPERTY_BORDER_WIDTH_THICK:
/* default values */
case MyCSS_PROPERTY_VALUE_INHERIT:
case MyCSS_PROPERTY_VALUE_INITIAL:
case MyCSS_PROPERTY_VALUE_UNSET:
break;
default:
*value_type = MyCSS_PROPERTY_TYPE_UNDEF;
return false;
}
return true;
}
bool mycss_property_shared_line_style(mycss_entry_t* entry, mycss_token_t* token, unsigned int* value_type, myhtml_string_t* str)
{
if(token->type != MyCSS_TOKEN_TYPE_IDENT)
return false;
if(str->data == NULL)
mycss_token_data_to_string(entry, token, str, true, false);
*value_type = mycss_property_value_type_by_name(str->data, str->length);
switch (*value_type) {
case MyCSS_PROPERTY_BORDER_STYLE_NONE:
case MyCSS_PROPERTY_BORDER_STYLE_HIDDEN:
case MyCSS_PROPERTY_BORDER_STYLE_DOTTED:
case MyCSS_PROPERTY_BORDER_STYLE_DASHED:
case MyCSS_PROPERTY_BORDER_STYLE_SOLID:
case MyCSS_PROPERTY_BORDER_STYLE_DOUBLE:
case MyCSS_PROPERTY_BORDER_STYLE_GROOVE:
case MyCSS_PROPERTY_BORDER_STYLE_RIDGE:
case MyCSS_PROPERTY_BORDER_STYLE_INSET:
case MyCSS_PROPERTY_BORDER_STYLE_OUTSET:
/* default values */
case MyCSS_PROPERTY_VALUE_INHERIT:
case MyCSS_PROPERTY_VALUE_INITIAL:
case MyCSS_PROPERTY_VALUE_UNSET:
break;
default:
*value_type = MyCSS_PROPERTY_TYPE_UNDEF;
return false;
}
return true;
}
void mycss_property_shared_destroy_string(myhtml_string_t* str)
{
myhtml_string_destroy(str, false);
}

View File

@ -33,7 +33,20 @@ extern "C" {
bool mycss_property_shared_switch_to_find_important(mycss_entry_t* entry);
bool mycss_property_shared_switch_to_parse_error(mycss_entry_t* entry);
bool mycss_property_shared_check_declaration_end(mycss_entry_t* entry, mycss_token_t* token);
bool mycss_property_shared_length(mycss_entry_t* entry, mycss_token_t* token, mycss_declaration_entry_t* dec_entry);
bool mycss_property_shared_number(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_length(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_percentage(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_length_percentage(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_default(mycss_entry_t* entry, mycss_token_t* token, unsigned int* value_type, myhtml_string_t* str);
unsigned int mycss_property_shared_get_value_type(mycss_entry_t* entry, mycss_token_t* token, myhtml_string_t* str);
bool mycss_property_shared_by_value_type(mycss_entry_t* entry, mycss_token_t* token, unsigned int* value_type, unsigned int check_type, myhtml_string_t* str);
bool mycss_property_shared_width(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_height(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_line_width(mycss_entry_t* entry, mycss_token_t* token, void** value, unsigned int* value_type, myhtml_string_t* str);
bool mycss_property_shared_line_style(mycss_entry_t* entry, mycss_token_t* token, unsigned int* value_type, myhtml_string_t* str);
void mycss_property_shared_destroy_string(myhtml_string_t* str);
#ifdef __cplusplus
} /* extern "C" */

View File

@ -154,7 +154,8 @@ void mycss_selectors_function_begin_not(mycss_entry_t* entry, mycss_selectors_en
(*new_list)->parent = current_list;
mycss_entry_parser_list_push(entry, mycss_selectors_function_parser_not_or_matches_or_current_parser, entry->parser_switch, entry->parser_ending_token, false);
mycss_entry_parser_list_push(entry, mycss_selectors_function_parser_not_or_matches_or_current_parser,
entry->parser_switch, entry->parser_ending_token, false);
}
void mycss_selectors_function_begin_current(mycss_entry_t* entry, mycss_selectors_entry_t* selector)
@ -173,7 +174,8 @@ void mycss_selectors_function_begin_current(mycss_entry_t* entry, mycss_selector
(*new_list)->parent = current_list;
mycss_entry_parser_list_push(entry, mycss_selectors_function_parser_not_or_matches_or_current_parser, entry->parser_switch, entry->parser_ending_token, false);
mycss_entry_parser_list_push(entry, mycss_selectors_function_parser_not_or_matches_or_current_parser,
entry->parser_switch, entry->parser_ending_token, false);
}
void mycss_selectors_function_begin_nth_of_type(mycss_entry_t* entry, mycss_selectors_entry_t* selector)

View File

@ -77,9 +77,12 @@ mycss_selectors_list_t * mycss_selectors_list_append_selector(mycss_selectors_t*
current_list->entries_list = mycss_selectors_entries_list_add_one(selectors, current_list->entries_list, current_list->entries_list_length);
}
selectors->specificity = &current_list->entries_list[current_list->entries_list_length].specificity;
mycss_selectors_entries_list_t *entries_list = &current_list->entries_list[current_list->entries_list_length];
memset(entries_list, 0, sizeof(mycss_selectors_entries_list_t));
current_list->entries_list[current_list->entries_list_length].entry = selector;
selectors->specificity = &entries_list->specificity;
entries_list->entry = selector;
current_list->entries_list_length++;
return current_list;

View File

@ -31,18 +31,31 @@ void * mycss_values_create(mycss_entry_t* entry, size_t size)
void * mycss_values_destroy(mycss_entry_t* entry, void* value)
{
if(value == NULL)
return NULL;
mchar_async_free(entry->mchar, entry->mchar_value_node_id, value);
return NULL;
}
void * mycss_values_clone(mycss_entry_t* entry, void* value)
{
size_t size = mchar_async_get_size_by_data(value);
void *new_value = mycss_values_create(entry, size);
memcpy(new_value, value, size);
return new_value;
}
void mycss_values_entry_set(mycss_entry_t* entry, void** value)
{
entry->values = value;
}
void * mycss_values_entry(mycss_entry_t* entry)
{
return (*entry->values);
}

View File

@ -30,10 +30,20 @@
extern "C" {
#endif
typedef struct mycss_values_shorthand_two_type mycss_values_shorthand_two_type_t;
typedef struct mycss_values_shorthand_four mycss_values_shorthand_four_t;
typedef struct mycss_values_shorthand_two mycss_values_shorthand_two_t;
typedef struct mycss_values_percentage mycss_values_percentage_t;
typedef struct mycss_values_length mycss_values_length_t;
struct mycss_values_shorthand_two_type {
void* one;
void* two;
unsigned int type_one;
unsigned int type_two;
};
struct mycss_values_shorthand_four {
void* one;
void* two;
@ -41,6 +51,11 @@ struct mycss_values_shorthand_four {
void* four;
};
struct mycss_values_shorthand_two {
void* one;
void* two;
};
struct mycss_values_length {
union {
int i;
@ -60,10 +75,11 @@ struct mycss_values_percentage {
bool is_float;
};
void * mycss_values_create(mycss_entry_t* entry, size_t size);
void * mycss_values_destroy(mycss_entry_t* entry, void* value);
void * mycss_values_clone(mycss_entry_t* entry, void* value);
void * mycss_values_entry(mycss_entry_t* entry);
void mycss_values_entry_set(mycss_entry_t* entry, void** value);

View File

@ -16,23 +16,381 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Author: lex.borisov@gmail.com (Alexander Borisov)
Author: https://github.com/EmielBruijntjes (Emiel Bruijntjes)
*/
#include <setjmp.h>
#include "myhtml/serialization.h"
bool myhtml_serialization_append(myhtml_string_raw_t* str, const char* src_data, size_t length);
bool myhtml_serialization_append_attr(myhtml_string_raw_t* str, const char* src_data, size_t length);
bool myhtml_serialization_append_raw(myhtml_string_raw_t* str, const char* src_data, size_t length);
bool myhtml_serialization_attributes(myhtml_tree_t* tree, myhtml_tree_attr_t* attr, myhtml_string_raw_t* str);
bool myhtml_serialization_node_append_text_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str);
bool myhtml_serialization_node_append_close(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str);
/**
* Forward declaration of all the functions that are used inside this module
*/
static void myhtml_serialization_append(const char* str, size_t size, myhtml_callback_serialize_f callback, void *ptr);
static void myhtml_serialization_append_attr(const char* str, size_t length, myhtml_callback_serialize_f callback, void *ptr);
static void myhtml_serialization_attributes(myhtml_tree_t* tree, myhtml_tree_attr_t* attr, myhtml_callback_serialize_f callback, void *ptr);
static void myhtml_serialization_node_append_text_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void *ptr);
static void myhtml_serialization_node_append_close(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void *ptr);
/**
* See the function myhtml_serialization_tree_buffer
*/
bool myhtml_serialization(myhtml_tree_t* tree, myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str)
{
if(str == NULL)
return false;
return myhtml_serialization_tree_buffer(tree, scope_node, str);
}
/**
* See the function myhtml_serialization_node_buffer
*/
bool myhtml_serialization_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str)
{
return myhtml_serialization_node_buffer(tree, node, str);
}
/**
* The serialize function for an entire tree
* @param tree the tree to be serialized
* @param scope_node the scope_node
* @param callback function that will be called for all strings that have to be printed
* @param ptr user-supplied pointer
* @return bool
*/
bool myhtml_serialization_tree_callback(myhtml_tree_t* tree, myhtml_tree_node_t* scope_node, myhtml_callback_serialize_f callback, void *ptr)
{
myhtml_tree_node_t* node = scope_node;
if(node == tree->document) {
if (!tree->document) return false;
node = tree->document->child;
}
while(node) {
if(!myhtml_serialization_node_callback(tree, node, callback, ptr)) return false;
if(node->child)
node = node->child;
else {
while(node != scope_node && node->next == NULL) {
myhtml_serialization_node_append_close(tree, node, callback, ptr);
node = node->parent;
}
if(node == scope_node) {
if(node != tree->document) myhtml_serialization_node_append_close(tree, node, callback, ptr);
break;
}
myhtml_serialization_node_append_close(tree, node, callback, ptr);
node = node->next;
}
}
return true;
}
/**
* The serialize function for a single node
* @param tree the tree to be serialized
* @param node the node that is going to be serialized
* @param callback function that will be called for all strings that have to be printed
* @param ptr user-supplied pointer
* @return bool
*/
bool myhtml_serialization_node_callback(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void *ptr)
{
switch (node->tag_id) {
case MyHTML_TAG__TEXT: {
myhtml_serialization_node_append_text_node(tree, node, callback, ptr);
break;
}
case MyHTML_TAG__COMMENT: {
callback("<!--", 4, ptr);
if(node->token && node->token->str.data) callback(node->token->str.data, node->token->str.length, ptr);
callback("-->", 3, ptr);
break;
}
case MyHTML_TAG__DOCTYPE: {
callback("<!DOCTYPE", 9, ptr);
if(node->token) {
myhtml_tree_attr_t* attr = node->token->attr_first;
if(attr->key.data && attr->key.length) {
callback(" ", 1, ptr);
callback(attr->key.data, attr->key.length, ptr);
}
}
callback(">", 1, ptr);
break;
}
default: {
size_t length;
const char *tag = myhtml_tag_name_by_id(tree, node->tag_id, &length);
callback("<", 1, ptr);
callback(tag, length, ptr);
if(node->token) myhtml_serialization_attributes(tree, node->token->attr_first, callback, ptr);
callback(">", 1, ptr);
break;
}
}
return true;
}
/**
* Internal function to process attributes
* @param tree
* @param attr
* @param callback
* @param ptr
*/
void myhtml_serialization_attributes(myhtml_tree_t* tree, myhtml_tree_attr_t* attr, myhtml_callback_serialize_f callback, void* ptr)
{
while(attr) {
callback(" ", 1, ptr);
switch (attr->ns) {
case MyHTML_NAMESPACE_XML:
callback("xml:", 4, ptr);
break;
case MyHTML_NAMESPACE_XMLNS: {
/*
If the attribute is in the XMLNS namespace and the attribute's local name is not xmlns
The attribute's serialized name is the string "xmlns:" followed by the attribute's local name.
*/
if(attr->key.data && attr->key.length == 5 && myhtml_strcmp(attr->key.data, "xmlns")) {
callback("xmlns:", 6, callback);
}
break;
}
case MyHTML_NAMESPACE_XLINK: {
callback("xlink:", 6, callback);
break;
}
default:
break;
}
size_t length;
const char *data = myhtml_attribute_key(attr, &length);
if(data) callback(data, length, ptr);
callback("=\"", 2, ptr);
data = myhtml_attribute_value(attr, &length);
if(data) myhtml_serialization_append_attr(data, length, callback, ptr);
callback("\"", 1, ptr);
attr = attr->next;
}
}
/**
* Internal function to process a close tag
* @param tree
* @param node
* @param callback
* @param ptr
*/
void myhtml_serialization_node_append_close(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void* ptr)
{
if(node->tag_id != MyHTML_TAG__TEXT &&
node->tag_id != MyHTML_TAG__COMMENT &&
node->tag_id != MyHTML_TAG__DOCTYPE)
{
size_t length;
const char *tag = myhtml_tag_name_by_id(tree, node->tag_id, &length);
callback("</", 2, ptr);
callback(tag, length, ptr);
callback(">", 1, ptr);
}
}
/**
* Internal function to process a text node
* @param tree
* @param node
* @param callback
* @param ptr
*/
void myhtml_serialization_node_append_text_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void* ptr)
{
if(node->token == NULL || node->token->str.data == NULL) return;
if(node->parent == NULL) return myhtml_serialization_append(node->token->str.data, node->token->str.length, callback, ptr);
switch (node->parent->tag_id) {
case MyHTML_TAG_STYLE:
case MyHTML_TAG_SCRIPT:
case MyHTML_TAG_XMP:
case MyHTML_TAG_IFRAME:
case MyHTML_TAG_NOEMBED:
case MyHTML_TAG_NOFRAMES:
case MyHTML_TAG_PLAINTEXT:
callback(node->token->str.data, node->token->str.length, ptr);
break;
default:
myhtml_serialization_append(node->token->str.data, node->token->str.length, callback, ptr);
break;
}
}
/**
* Internal method to process a buffer that could contain to-be-quoted output
* @param data
* @param size
* @param callback
* @param ptr
*/
void myhtml_serialization_append(const char *data, size_t size, myhtml_callback_serialize_f callback, void* ptr)
{
// number of chars not yet displayed
size_t notwritten = 0;
// iterate over the buffer
for (size_t i = 0; i < size; ++i) {
switch ((unsigned char)data[i]) {
case '&':
if (notwritten) callback(data + i - notwritten, notwritten, ptr);
callback("&amp;", 5, ptr);
notwritten = 0;
break;
case '<':
if (notwritten) callback(data + i - notwritten, notwritten, ptr);
callback("&lt;", 4, ptr);
notwritten = 0;
break;
case '>':
if (notwritten) callback(data + i - notwritten, notwritten, ptr);
callback("&gt;", 4, ptr);
notwritten = 0;
break;
case 0xA0:
if (notwritten) callback(data + i - notwritten, notwritten, ptr);
callback("&nbsp;", 6, ptr);
notwritten = 0;
break;
default:
++notwritten;
break;
}
}
if (notwritten) callback(data + size - notwritten, notwritten, ptr);
}
/**
* Internal method to process an attribute
* @param data
* @param size
* @param callback
* @param ptr
*/
void myhtml_serialization_append_attr(const char* data, size_t size, myhtml_callback_serialize_f callback, void* ptr)
{
// number of chars not yet displayed
size_t notwritten = 0;
// iterate over the buffer
for (size_t i = 0; i < size; ++i) {
switch ((unsigned char)data[i]) {
case '&':
if (notwritten) callback(data + i - notwritten, notwritten, ptr);
callback("&amp;", 5, ptr);
notwritten = 0;
break;
case '"':
if (notwritten) callback(data + i - notwritten, notwritten, ptr);
callback("&quot;", 6, ptr);
notwritten = 0;
break;
case 0xA0:
if (notwritten) callback(data + i - notwritten, notwritten, ptr);
callback("&nbsp;", 6, NULL);
notwritten = 0;
break;
default:
++notwritten;
break;
}
}
if (notwritten) callback(data + size - notwritten, notwritten, ptr);
}
/**
* Because we want to leap out of the algorithm if we're halfway through
* serializing, we use a longjmp() call to jump back to the public APP
* @var jmp_buf
*/
static jmp_buf leap;
/**
* Reallocate the buffer
* @param str the buffer to reallocate
* @param size new size
*/
void myhtml_serialization_reallocate(myhtml_string_raw_t *str, size_t size)
{
// construct a buffer
char *data = (char*)myhtml_realloc(str->data, size * sizeof(char));
// was it ok?
if (data == NULL) {
// allocation failed, reset the string object
myhtml_free(str->data);
memset(str, 0, sizeof(myhtml_string_raw_t));
// leap back to the source of the serialization algorithm
longjmp(leap, 1);
}
else {
// reallocation succeeded
str->data = data;
str->size = size;
}
}
/**
* Implementation of the myhtml_callback_serialize_f function for internal
* use that concatenats everything to a string
* @param data
* @param size
*/
void myhtml_serialization_concatenate(const char* data, size_t length, void *ptr)
{
// get the string back
myhtml_string_raw_t* str = (myhtml_string_raw_t *)ptr;
// do we still have enough size in the output buffer?
if ((length + str->length) >= str->size) myhtml_serialization_reallocate(str, length + str->length + 4096);
// copy data
strncpy(&str->data[ str->length ], data, length);
// update counters
str->length += length;
str->data[ str->length ] = '\0';
}
/**
* Serialize tree to an output string
* @param tree
* @param scope_node
* @param str
* @return bool
*/
bool myhtml_serialization_tree_buffer(myhtml_tree_t* tree, myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str) {
// we need an output variable
if(str == NULL) return false;
// allocate space that is most likely enough for the output
if(str->data == NULL) {
str->size = 4098 * 5;
str->length = 0;
@ -44,63 +402,32 @@ bool myhtml_serialization(myhtml_tree_t* tree, myhtml_tree_node_t* scope_node, m
}
}
myhtml_tree_node_t* node = scope_node;
if(node == tree->document) {
if(tree->document)
node = tree->document->child;
else {
myhtml_free(str->data);
memset(str, 0, sizeof(myhtml_string_raw_t));
return false;
}
// if allocation halfway the algorithm fails, we want to leap back
if (setjmp(leap) == 0)
{
// serialize the entire tree
return myhtml_serialization_tree_callback(tree, scope_node, myhtml_serialization_concatenate, str);
}
while(node) {
if(myhtml_serialization_node(tree, node, str) == false) {
myhtml_free(str->data);
memset(str, 0, sizeof(myhtml_string_raw_t));
return false;
}
if(node->child)
node = node->child;
else {
while(node != scope_node && node->next == NULL) {
myhtml_serialization_node_append_close(tree, node, str);
node = node->parent;
}
if(node == scope_node) {
if(node != tree->document) {
if(myhtml_serialization_node_append_close(tree, node, str) == false) {
myhtml_free(str->data);
memset(str, 0, sizeof(myhtml_string_raw_t));
return false;
}
}
break;
}
if(myhtml_serialization_node_append_close(tree, node, str) == false) {
myhtml_free(str->data);
memset(str, 0, sizeof(myhtml_string_raw_t));
return false;
}
node = node->next;
}
else
{
// the serialization algorithm failed because of a memory-allocation failure
return false;
}
return true;
}
bool myhtml_serialization_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str)
{
if(str == NULL)
return false;
/**
* Serialize node to an output string
* @param tree
* @param node
* @param str
* @return bool
*/
bool myhtml_serialization_node_buffer(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str) {
// we need an output variable
if(str == NULL) return false;
// allocate space that is most likely enough for the output
if(str->data == NULL) {
str->size = 2048;
str->length = 0;
@ -111,312 +438,17 @@ bool myhtml_serialization_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, my
return false;
}
}
switch (node->tag_id) {
case MyHTML_TAG__TEXT: {
if(myhtml_serialization_node_append_text_node(tree, node, str) == false)
return false;
break;
}
case MyHTML_TAG__COMMENT: {
if(myhtml_serialization_append_raw(str, "<!--", 4) == false)
return false;
if(node->token && node->token->str.data) {
if(myhtml_serialization_append_raw(str, node->token->str.data, node->token->str.length) == false)
return false;
}
if(myhtml_serialization_append_raw(str, "-->", 3) == false)
return false;
break;
}
case MyHTML_TAG__DOCTYPE: {
if(myhtml_serialization_append_raw(str, "<!DOCTYPE", 9) == false)
return false;
if(node->token) {
myhtml_tree_attr_t* attr = node->token->attr_first;
if(attr->key.data && attr->key.length) {
if(myhtml_serialization_append_raw(str, " ", 1) == false)
return false;
if(myhtml_serialization_append_raw(str, attr->key.data, attr->key.length) == false)
return false;
}
}
if(myhtml_serialization_append_raw(str, ">", 1) == false)
return false;
break;
}
default: {
size_t length;
const char *tag = myhtml_tag_name_by_id(tree, node->tag_id, &length);
if(myhtml_serialization_append_raw(str, "<", 1) == false)
return false;
if(myhtml_serialization_append_raw(str, tag, length) == false)
return false;
if(node->token) {
if(myhtml_serialization_attributes(tree, node->token->attr_first, str) == false)
return false;
}
if(myhtml_serialization_append_raw(str, ">", 1) == false)
return false;
break;
}
}
return true;
}
bool myhtml_serialization_attributes(myhtml_tree_t* tree, myhtml_tree_attr_t* attr, myhtml_string_raw_t* str)
{
while(attr) {
if(myhtml_serialization_append_raw(str, " ", 1) == false)
return false;
switch (attr->ns) {
case MyHTML_NAMESPACE_XML: {
if(myhtml_serialization_append_raw(str, "xml:", 4) == false)
return false;
break;
}
case MyHTML_NAMESPACE_XMLNS: {
/*
If the attribute is in the XMLNS namespace and the attribute's local name is not xmlns
The attribute's serialized name is the string "xmlns:" followed by the attribute's local name.
*/
if(attr->key.data && attr->key.length == 5 && myhtml_strcmp(attr->key.data, "xmlns")) {
if(myhtml_serialization_append_raw(str, "xmlns:", 6) == false)
return false;
}
break;
}
case MyHTML_NAMESPACE_XLINK: {
if(myhtml_serialization_append_raw(str, "xlink:", 6) == false)
return false;
break;
}
default:
break;
}
size_t length;
const char *data = myhtml_attribute_key(attr, &length);
if(data) {
if(myhtml_serialization_append_raw(str, data, length) == false)
return false;
}
if(myhtml_serialization_append_raw(str, "=\"", 2) == false)
return false;
data = myhtml_attribute_value(attr, &length);
if(data) {
if(myhtml_serialization_append_attr(str, data, length) == false)
return false;
}
if(myhtml_serialization_append_raw(str, "\"", 1) == false)
return false;
attr = attr->next;
}
return true;
}
bool myhtml_serialization_node_append_close(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str)
{
if(node->tag_id != MyHTML_TAG__TEXT &&
node->tag_id != MyHTML_TAG__COMMENT &&
node->tag_id != MyHTML_TAG__DOCTYPE)
// if allocation halfway the algorithm fails, we want to leap back
if (setjmp(leap) == 0)
{
size_t length;
const char *tag = myhtml_tag_name_by_id(tree, node->tag_id, &length);
if(myhtml_serialization_append_raw(str, "</", 2) == false)
return false;
if(myhtml_serialization_append_raw(str, tag, length) == false)
return false;
if(myhtml_serialization_append_raw(str, ">", 1) == false)
return false;
// pass on
return myhtml_serialization_node_callback(tree, node, myhtml_serialization_concatenate, str);
}
return true;
}
bool myhtml_serialization_node_append_text_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str)
{
if(node->token == NULL || node->token->str.data == NULL)
return str;
if(node->parent == NULL)
return myhtml_serialization_append(str, node->token->str.data, node->token->str.length);
switch (node->parent->tag_id) {
case MyHTML_TAG_STYLE:
case MyHTML_TAG_SCRIPT:
case MyHTML_TAG_XMP:
case MyHTML_TAG_IFRAME:
case MyHTML_TAG_NOEMBED:
case MyHTML_TAG_NOFRAMES:
case MyHTML_TAG_PLAINTEXT:
if(myhtml_serialization_append_raw(str, node->token->str.data, node->token->str.length) == false)
return false;
break;
default:
if(myhtml_serialization_append(str, node->token->str.data, node->token->str.length) == false)
return false;
break;
else
{
// the serialization algorithm failed because of a memory-allocation failure
return false;
}
return true;
}
bool myhtml_serialization_append_raw(myhtml_string_raw_t* str, const char* src_data, size_t length)
{
myhtml_serialization_realloc_if_need((length + 1))
strncpy(&str->data[ str->length ], src_data, length);
str->length += length;
str->data[ str->length ] = '\0';
return true;
}
bool myhtml_serialization_append(myhtml_string_raw_t* str, const char* src_data, size_t length)
{
myhtml_serialization_realloc_if_need(length)
for(size_t i = 0; i < length; i++) {
if(src_data[i] == '&') {
myhtml_serialization_realloc_if_need(6)
strncpy(&str->data[str->length], "&amp;", 5);
str->length += 5;
}
else if(src_data[i] == '<') {
myhtml_serialization_realloc_if_need(5)
strncpy(&str->data[str->length], "&lt;", 4);
str->length += 4;
}
else if(src_data[i] == '>') {
myhtml_serialization_realloc_if_need(5)
strncpy(&str->data[str->length], "&gt;", 4);
str->length += 4;
}
else if((unsigned char)src_data[i] == 0xC2) {
i++;
if(i >= length) {
str->data[str->length] = (unsigned char)0xC2;
str->length++;
myhtml_serialization_realloc_if_need(1)
break;
}
if((unsigned char)src_data[i] == 0xA0) {
myhtml_serialization_realloc_if_need(7)
strncpy(&str->data[str->length], "&nbsp;", 6);
str->length += 6;
}
else {
str->data[str->length] = src_data[i];
str->length++;
myhtml_serialization_realloc_if_need(1)
}
}
else {
str->data[str->length] = src_data[i];
str->length++;
myhtml_serialization_realloc_if_need(1)
}
}
str->data[ str->length ] = '\0';
return true;
}
bool myhtml_serialization_append_attr(myhtml_string_raw_t* str, const char* src_data, size_t length)
{
myhtml_serialization_realloc_if_need(length)
for(size_t i = 0; i < length; i++) {
if(src_data[i] == '&') {
myhtml_serialization_realloc_if_need(6)
strncpy(&str->data[str->length], "&amp;", 5);
str->length += 5;
}
else if(src_data[i] == '"') {
myhtml_serialization_realloc_if_need(7)
strncpy(&str->data[str->length], "&quot;", 6);
str->length += 6;
}
else if((unsigned char)src_data[i] == 0xC2) {
i++;
if(i >= length) {
str->data[str->length] = (unsigned char)0xC2;
str->length++;
myhtml_serialization_realloc_if_need(1)
break;
}
if((unsigned char)src_data[i] == 0xA0) {
myhtml_serialization_realloc_if_need(7)
strncpy(&str->data[str->length], "&nbsp;", 6);
str->length += 6;
}
else {
str->data[str->length] = src_data[i];
str->length++;
myhtml_serialization_realloc_if_need(1)
}
}
else {
str->data[str->length] = src_data[i];
str->length++;
myhtml_serialization_realloc_if_need(1)
}
}
str->data[ str->length ] = '\0';
return true;
}

View File

@ -26,23 +26,21 @@
#include "myhtml/mystring.h"
#include "myhtml/tree.h"
#define myhtml_serialization_realloc_if_need(len) \
if((len + str->length) >= str->size) { \
size_t size = (len + str->length) + 4096; \
char *data = (char*)myhtml_realloc(str->data, size * sizeof(char)); \
\
if(data) { \
str->data = data; \
str->size = size; \
} \
else \
return false; \
}
#ifdef __cplusplus
extern "C" {
#endif
// callback to be implemented by the user
typedef void (*myhtml_callback_serialize_f)(const char* buffer, size_t size, void* ctx);
// the serialization functions
bool myhtml_serialization_tree_buffer(myhtml_tree_t* tree, myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str);
bool myhtml_serialization_node_buffer(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str);
bool myhtml_serialization_tree_callback(myhtml_tree_t* tree, myhtml_tree_node_t* scope_node, myhtml_callback_serialize_f callback, void* ptr);
bool myhtml_serialization_node_callback(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_callback_serialize_f callback, void* ptr);
// in versuon 1.0.3 this is in public api.
// Need to set deprecated?
bool myhtml_serialization(myhtml_tree_t* tree, myhtml_tree_node_t* scope_node, myhtml_string_raw_t* str);
bool myhtml_serialization_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, myhtml_string_raw_t* str);

View File

@ -472,9 +472,18 @@ char * mchar_async_crop_first_chars_without_cache(char *data, size_t crop_len)
return data;
}
size_t mchar_async_get_size_by_data(const char *data)
{
if(data == NULL)
return 0;
return *((size_t*)(data - sizeof(size_t)));
}
void mchar_async_free(mchar_async_t *mchar_async, size_t node_idx, char *entry)
{
mchar_async_cache_add(&mchar_async->nodes[node_idx].cache, entry, *(size_t*)(entry - sizeof(size_t)));
if(entry)
mchar_async_cache_add(&mchar_async->nodes[node_idx].cache, entry, *(size_t*)(entry - sizeof(size_t)));
}
void mchar_async_cache_init(mchar_async_cache_t *cache)

View File

@ -113,6 +113,8 @@ mchar_async_chunk_t * mchar_async_chunk_malloc(mchar_async_t *mchar_async, mchar
char * mchar_async_crop_first_chars(mchar_async_t *mchar_async, size_t node_idx, char *data, size_t crop_len);
char * mchar_async_crop_first_chars_without_cache(char *data, size_t crop_len);
size_t mchar_async_get_size_by_data(const char *data);
// cache
void mchar_async_cache_init(mchar_async_cache_t *cache);
mchar_async_cache_t * mchar_async_cache_destroy(mchar_async_cache_t *cache, bool self_destroy);