Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/lexborisov/perl-html-myhtml.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlex <lexinhell@gmail.com>2016-03-22 17:45:13 +0300
committerlex <lexinhell@gmail.com>2016-03-22 17:45:13 +0300
commitafbb56841f4a0ed5694a22d667ccdd47ecb7ae17 (patch)
tree33d479e69016f15ae6d837dcc7e4170e62d7c703
parent52c9cf7722b4b50d91b442a1df3a5ec6b4a391f8 (diff)
added MyHTML 0.5.2
-rw-r--r--Changes3
-rw-r--r--MANIFEST2
-rwxr-xr-xMakefile.PL49
-rwxr-xr-xMyHTML.pm2
-rwxr-xr-xMyHTML.xs39
-rw-r--r--README2
-rw-r--r--README.md2
-rw-r--r--source/Makefile25
-rw-r--r--source/myhtml/Makefile41
-rw-r--r--source/myhtml/api.h80
-rw-r--r--source/myhtml/encoding.h10
-rw-r--r--source/myhtml/encoding_detect.c64
-rw-r--r--source/myhtml/myhtml.c112
-rw-r--r--source/myhtml/myhtml.h11
-rw-r--r--source/myhtml/myosi.h26
-rw-r--r--source/myhtml/mystring.c196
-rw-r--r--source/myhtml/mystring.h6
-rw-r--r--source/myhtml/parser.c8
-rw-r--r--source/myhtml/perf.c12
-rw-r--r--source/myhtml/rules.c346
-rw-r--r--source/myhtml/rules.h8
-rwxr-xr-xsource/myhtml/tag.c153
-rw-r--r--source/myhtml/tag.h58
-rw-r--r--source/myhtml/tag_const.h25
-rwxr-xr-xsource/myhtml/tag_init.c3134
-rw-r--r--source/myhtml/thread.c66
-rw-r--r--source/myhtml/thread.h31
-rw-r--r--source/myhtml/token.c63
-rw-r--r--source/myhtml/token.h12
-rw-r--r--source/myhtml/tokenizer.c93
-rw-r--r--source/myhtml/tokenizer_end.c16
-rw-r--r--source/myhtml/tokenizer_end.h4
-rw-r--r--source/myhtml/tree.c247
-rw-r--r--source/myhtml/tree.h37
-rw-r--r--source/myhtml/utils/mchar_async.c16
-rw-r--r--source/myhtml/utils/mchar_async.h2
-rw-r--r--source/myhtml/utils/mctree.c1
-rw-r--r--source/myhtml/utils/mctree.h3
-rw-r--r--source/myhtml/utils/resources.h174
39 files changed, 3726 insertions, 1453 deletions
diff --git a/Changes b/Changes
index 5854dd3..1182e11 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,6 @@
+0.26 Tue Mar 22 2016 17:43:03 GMT+0300
+ Fixes for compile program. Add MyHTML 0.5.2
+
0.25 Tue Mar 01 2016 09:43:03 GMT+0300
And again, fixes for compile program
diff --git a/MANIFEST b/MANIFEST
index 2e86e50..4ee0743 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -14,7 +14,6 @@ xs/tree.xs
xs/tree_attr.xs
xs/tree_node.xs
-source/Makefile
source/myhtml/api.h
source/myhtml/api_encoding.h
source/myhtml/charef.c
@@ -23,7 +22,6 @@ source/myhtml/def.h
source/myhtml/encoding.c
source/myhtml/encoding.h
source/myhtml/encoding_detect.c
-source/myhtml/Makefile
source/myhtml/myhtml.c
source/myhtml/myhtml.h
source/myhtml/myosi.c
diff --git a/Makefile.PL b/Makefile.PL
index dc4546c..96652cf 100755
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -1,39 +1,12 @@
-package MYINSTALLER;
-
use strict;
use utf8;
use FindBin;
-use File::Find;
use ExtUtils::MakeMaker;
my $myhtml_source_dir = $FindBin::Bin ."/source";
-our ($LIST_COMPILE, $LIST_OBJECTS);
-
-sub find_all_obj_files {
- my ($dir_name) = @_;
-
- my @list;
- my @obj_list;
-
- my $search = sub {
- return unless $_ =~ /\.c$/;
-
- my $obj_name = $_; #$File::Find::name;
- $obj_name =~ s/\.c$/.o/;
-
- push @obj_list, "source/$obj_name";
- push @list, "-o source/$obj_name ". $File::Find::name;
- };
-
- find({ wanted => $search, follow => 1 }, "$dir_name/myhtml");
-
- return (\@list, \@obj_list);
-}
-($LIST_COMPILE, $LIST_OBJECTS) = find_all_obj_files($myhtml_source_dir);
-
-my $fdfdf = WriteMakefile(
+WriteMakefile(
AUTHOR => 'Alexander Borisov <lex.borisov@gmail.com>',
ABSTRACT => 'Fast HTML Parser using Threads with no outside dependencies',
VERSION_FROM => 'MyHTML.pm',
@@ -41,24 +14,6 @@ my $fdfdf = WriteMakefile(
LICENSE => 'Apache 2.0',
LINKTYPE => 'dynamic',
LIBS => ["-lpthread"],
- LDFROM => join(" ", @$LIST_OBJECTS, "MyHTML.o"),
+ CCFLAGS => "--std=c99",
INC => "-I$myhtml_source_dir",
- #MYEXTLIB => "$myhtml_source_dir/myhtml/myhtml.o",
- clean => {FILES => "$myhtml_source_dir/myhtml/*libmyhtml* $myhtml_source_dir/*.o $myhtml_source_dir/myhtml/*.o $myhtml_source_dir/myhtml/utils/*.o"}
);
-
-package MY;
-use Config;
-
-sub postamble {
- my $self = shift;
- my @list;
-
- foreach my $name (@{$MYINSTALLER::LIST_COMPILE}) {
- push @list, "\t". '$(CC) -Wall -Werror -O2 -fPIC --std=c99 -D_POSIX_C_SOURCE=199309L -pthread $(INC) -c '. $name;
- }
-
- return join "\n", @list;
-}
-
-
diff --git a/MyHTML.pm b/MyHTML.pm
index 826649a..ce00236 100755
--- a/MyHTML.pm
+++ b/MyHTML.pm
@@ -22,7 +22,7 @@ use strict;
use vars qw($AUTOLOAD $VERSION $ABSTRACT @ISA @EXPORT);
BEGIN {
- $VERSION = 0.25;
+ $VERSION = 0.26;
$ABSTRACT = "Fast HTML Parser using Threads with no outside dependencies";
@ISA = qw(Exporter DynaLoader);
diff --git a/MyHTML.xs b/MyHTML.xs
index 586177e..0db18c9 100755
--- a/MyHTML.xs
+++ b/MyHTML.xs
@@ -20,7 +20,29 @@
#include "perl.h"
#include "XSUB.h"
-#include <myhtml/api.h>
+#include "source/myhtml/charef.c"
+#include "source/myhtml/encoding.c"
+#include "source/myhtml/encoding_detect.c"
+#include "source/myhtml/myhtml.c"
+#include "source/myhtml/myosi.c"
+#include "source/myhtml/mystring.c"
+#include "source/myhtml/parser.c"
+#include "source/myhtml/perf.c"
+#include "source/myhtml/rules.c"
+#include "source/myhtml/tag.c"
+#include "source/myhtml/tag_init.c"
+#include "source/myhtml/thread.c"
+#include "source/myhtml/token.c"
+#include "source/myhtml/tokenizer.c"
+#include "source/myhtml/tokenizer_doctype.c"
+#include "source/myhtml/tokenizer_end.c"
+#include "source/myhtml/tokenizer_script.c"
+#include "source/myhtml/tree.c"
+#include "source/myhtml/utils/mchar_async.c"
+#include "source/myhtml/utils/mcobject_async.c"
+#include "source/myhtml/utils/mcsync.c"
+#include "source/myhtml/utils/mctree.c"
+#include "source/myhtml/utils.c"
typedef myhtml_t * HTML__MyHTML;
typedef myhtml_tree_t * HTML__MyHTML__Tree;
@@ -442,16 +464,6 @@ parse_chunk_end(myhtml, tree)
OUTPUT:
RETVAL
-HTML::MyHTML::Tag
-get_tag(myhtml)
- HTML::MyHTML myhtml;
-
- CODE:
- RETVAL = myhtml_get_tag(myhtml);
- OUTPUT:
- RETVAL
-
-
#************************************************************************************
#
# MyHTML_TREE
@@ -1067,11 +1079,10 @@ MODULE = HTML::MyHTML::Tag PACKAGE = HTML::MyHTML::Tag
PROTOTYPES: DISABLE
HTML::MyHTML::Tag::Index
-tag_index_create(tag)
- HTML::MyHTML::Tag tag;
+tag_index_create(void)
CODE:
- RETVAL = myhtml_tag_index_create(tag);
+ RETVAL = myhtml_tag_index_create();
OUTPUT:
RETVAL
diff --git a/README b/README
index d3895a3..5b05998 100644
--- a/README
+++ b/README
@@ -5,7 +5,7 @@ DESCRIPTION
Fast HTML Parser using Threads with no outside dependencies
-This Parser based on MyHTML library (it includes version 0.4.5)
+This Parser based on MyHTML library (it includes version 0.5.2)
See https://github.com/lexborisov/myhtml
diff --git a/README.md b/README.md
index 7b63d89..3c9bdd4 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ HTML::MyHTML is a fast HTML Parser using Threads with no outside dependencies
# DESCRIPTION
-This Parser based on [MyHTML library] (it includes version 0.4.5)
+This Parser based on [MyHTML library] (it includes version 0.5.2)
- Asynchronous Parsing, Build Tree and Indexation
- Fully conformant with the [HTML5 specification]
diff --git a/source/Makefile b/source/Makefile
deleted file mode 100644
index 0130f33..0000000
--- a/source/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-TARGET := myhtml
-SRCDIR := myhtml
-
-CC ?= gcc
-CFLAGS ?= -Wall -std=c99 -I. -pthread
-
-SRCS := $(wildcard $(SRCDIR)/*.c)
-HDRS := $(wildcard $(SRCDIR)/*.h)
-OBJS := $(patsubst %.c,%.o,$(SRCS))
-
-CFLAGS += -pthread
-LIBNAME := myhtml
-
-all: create
- $(MAKE) -C $(SRCDIR) all
- cp $(SRCDIR)/*lib$(LIBNAME).* lib/
-
-clean:
- $(MAKE) -C $(SRCDIR) clean
- rm -rf lib/*
-
-create:
- mkdir -p lib
-
-.PHONY:all clean \ No newline at end of file
diff --git a/source/myhtml/Makefile b/source/myhtml/Makefile
deleted file mode 100644
index fea345f..0000000
--- a/source/myhtml/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-TARGET := myhtml
-SRCDIR := myhtml
-
-CC ?= gcc
-
-LIBPOSTFIX := .so
-LIBNAME := myhtml
-LIBSTATIC_PREFIX := static_
-
-CFLAGS ?= -Wall -Werror -O2 -fPIC --std=c99 -pthread -I..
-
-ifeq ($(OS),Windows_NT)
-else
- UNAM := $(shell uname -s)
- ifeq ($(UNAM),Darwin)
- LIBPOSTFIX := .dylib
- else
- CFLAGS += -D_POSIX_C_SOURCE=199309L
- endif
-endif
-
-SRCS := $(wildcard *.c)
-SRCS += $(wildcard utils/*.c)
-HDRS := $(wildcard *.h)
-HDRS += $(wildcard utils/*.h)
-OBJS := $(patsubst %.c, %.o, $(SRCS))
-
-all: shared static
-
-shared: $(OBJS) $(HDRS)
- $(CC) -shared $(LDFLAGS) $(OBJS) -o lib$(LIBNAME)$(LIBPOSTFIX)
-
-static: shared
- $(AR) crus $(LIBSTATIC_PREFIX)lib$(LIBNAME).a $(OBJS)
-
-clean:
- rm -rf *.o
- rm -rf utils/*.o
- rm -rf *lib$(LIBNAME)*
-
-.PHONY: all clean
diff --git a/source/myhtml/api.h b/source/myhtml/api.h
index 0f5e25d..5875e6d 100644
--- a/source/myhtml/api.h
+++ b/source/myhtml/api.h
@@ -33,21 +33,30 @@
*/
#define MyHTML_VERSION_MAJOR 0
-#define MyHTML_VERSION_MINOR 4
-#define MyHTML_VERSION_PATCH 5
+#define MyHTML_VERSION_MINOR 5
+#define MyHTML_VERSION_PATCH 2
+#include <stdbool.h>
#include <stddef.h>
+#include <stdio.h>
+
+#if defined(_MSC_VER)
+# define MyHTML_DEPRECATED(func, message) __declspec(deprecated(message)) func
+#elif defined(__GNUC__) || defined(__INTEL_COMPILER)
+# define MyHTML_DEPRECATED(func, message) func __attribute__((deprecated(message)))
+#else
+# define MyHTML_DEPRECATED(func, message) func
+#endif
#ifdef __cplusplus
extern "C" {
#endif
-#include <stdio.h>
-/**
- * bool
- */
-typedef enum {myfalse = 0, mytrue = 1} mybool_t;
+typedef enum {
+ myfalse = 0,
+ mytrue = 1
+} MyHTML_DEPRECATED(mybool_t, "use bool");
/**
* encodings type
@@ -671,16 +680,6 @@ myhtml_parse_chunk_fragment_single(myhtml_tree_t* tree, const char* html, size_t
myhtml_status_t
myhtml_parse_chunk_end(myhtml_tree_t* tree);
-/**
- * Get myhtml_tag_t* from a myhtml_t*
- *
- * @param[in] myhtml_t*
- *
- * @return myhtml_tag_t* if exists, otherwise a NULL value
- */
-myhtml_tag_t*
-myhtml_get_tag(myhtml_t* myhtml);
-
/***********************************************************************************
*
* MyHTML_TREE
@@ -795,6 +794,26 @@ myhtml_tree_node_t*
myhtml_tree_get_document(myhtml_tree_t* tree);
/**
+ * Get node HTML (Document -> HTML, Root of HTML Document)
+ *
+ * @param[in] myhtml_tree_t*
+ *
+ * @return myhtml_tree_node_t* if successful, otherwise a NULL value
+ */
+myhtml_tree_node_t*
+myhtml_tree_get_node_html(myhtml_tree_t* tree);
+
+/**
+ * Get node BODY (Document -> HTML -> BODY)
+ *
+ * @param[in] myhtml_tree_t*
+ *
+ * @return myhtml_tree_node_t* if successful, otherwise a NULL value
+ */
+myhtml_tree_node_t*
+myhtml_tree_get_node_body(myhtml_tree_t* tree);
+
+/**
* Get mchar_async_t object
*
* @param[in] myhtml_tree_t*
@@ -1128,9 +1147,9 @@ myhtml_tag_id_by_name(myhtml_tree_t* tree,
*
* @param[in] myhtml_tree_node_t*
*
- * @return mytrue or myfalse (1 or 0)
+ * @return true or false (1 or 0)
*/
-mybool_t
+bool
myhtml_node_is_close_self(myhtml_tree_node_t *node);
/**
@@ -1294,7 +1313,6 @@ myhtml_attribute_remove_by_key(myhtml_tree_node_t *node, const char *key, size_t
* @param[in] myhtml_tree_node_t*
* @param[in] myhtml_tree_attr_t*
*
- * @return myhtml_tree_attr_t* if successful, otherwise a NULL value
*/
void
myhtml_attribute_delete(myhtml_tree_t *tree, myhtml_tree_node_t *node,
@@ -1325,7 +1343,7 @@ myhtml_attribute_free(myhtml_tree_t *tree, myhtml_tree_attr_t *attr);
* @return myhtml_tag_index_t* if successful, otherwise a NULL value
*/
myhtml_tag_index_t*
-myhtml_tag_index_create(myhtml_tag_t* tag);
+myhtml_tag_index_create(void);
/**
* Allocating and Initialization resources for a tag index structure
@@ -1555,9 +1573,9 @@ myhtml_encoding_codepoint_to_ascii_utf_16(size_t codepoint, char *data);
* @param[in] text length
* @param[out] detected encoding
*
- * @return mytrue if encoding found, otherwise myfalse
+ * @return true if encoding found, otherwise false
*/
-mybool_t
+bool
myhtml_encoding_detect(const char *text, size_t length, myhtml_encoding_t *encoding);
/**
@@ -1569,9 +1587,9 @@ myhtml_encoding_detect(const char *text, size_t length, myhtml_encoding_t *encod
* @param[in] text length
* @param[out] detected encoding
*
- * @return mytrue if encoding found, otherwise myfalse
+ * @return true if encoding found, otherwise false
*/
-mybool_t
+bool
myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_encoding_t *encoding);
/**
@@ -1583,9 +1601,9 @@ myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_encoding_
* @param[in] text length
* @param[out] detected encoding
*
- * @return mytrue if encoding found, otherwise myfalse
+ * @return true if encoding found, otherwise false
*/
-mybool_t
+bool
myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_encoding_t *encoding);
/**
@@ -1597,9 +1615,9 @@ myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_encoding_
* @param[in] text length
* @param[out] detected encoding
*
- * @return mytrue if encoding found, otherwise myfalse
+ * @return true if encoding found, otherwise false
*/
-mybool_t
+bool
myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_encoding_t *encoding);
/***********************************************************************************
@@ -1667,10 +1685,10 @@ myhtml_string_clean_all(myhtml_string_t* str);
* @param[in] myhtml_string_t*. See description for myhtml_string_init function
* @param[in] call free function for current object or not
*
- * @return NULL if destroy_obj set mytrue, otherwise a current myhtml_string_t object
+ * @return NULL if destroy_obj set true, otherwise a current myhtml_string_t object
*/
myhtml_string_t*
-myhtml_string_destroy(myhtml_string_t* str, mybool_t destroy_obj);
+myhtml_string_destroy(myhtml_string_t* str, bool destroy_obj);
/**
* Get data (char*) from a myhtml_string_t object
diff --git a/source/myhtml/encoding.h b/source/myhtml/encoding.h
index cd491c5..ad72b4f 100644
--- a/source/myhtml/encoding.h
+++ b/source/myhtml/encoding.h
@@ -45,7 +45,7 @@ struct myhtml_encoding_result {
typedef myhtml_encoding_result_t;
struct myhtml_encoding_trigram {
- const char trigram[3];
+ const unsigned char trigram[3];
size_t value;
}
typedef myhtml_encoding_trigram_t;
@@ -113,10 +113,10 @@ size_t myhtml_encoding_codepoint_to_ascii_utf_16(size_t codepoint, char *data);
void myhtml_encoding_result_clean(myhtml_encoding_result_t *res);
-mybool_t myhtml_encoding_detect(const char *text, size_t length, myhtml_encoding_t *encoding);
-mybool_t myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_encoding_t *encoding);
-mybool_t myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_encoding_t *encoding);
-mybool_t myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_encoding_t *encoding);
+bool myhtml_encoding_detect(const char *text, size_t length, myhtml_encoding_t *encoding);
+bool myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_encoding_t *encoding);
+bool myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_encoding_t *encoding);
+bool myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_encoding_t *encoding);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/source/myhtml/encoding_detect.c b/source/myhtml/encoding_detect.c
index ab540e2..221ba07 100644
--- a/source/myhtml/encoding_detect.c
+++ b/source/myhtml/encoding_detect.c
@@ -5091,30 +5091,30 @@ myhtml_encoding_trigram_result_t myhtml_encoding_detect_by_trigram(unsigned cons
return res;
}
-mybool_t myhtml_encoding_detect_russian_has_end(myhtml_encoding_trigram_result_t *res, size_t min_count, size_t min_value)
+bool myhtml_encoding_detect_russian_has_end(myhtml_encoding_trigram_result_t *res, size_t min_count, size_t min_value)
{
if(res->value >= min_value || res->count >= min_count)
- return mytrue;
+ return true;
- return myfalse;
+ return false;
}
-mybool_t myhtml_encoding_detect_unicode_has_end(myhtml_encoding_unicode_result_t *res, size_t max_bad_percent)
+bool myhtml_encoding_detect_unicode_has_end(myhtml_encoding_unicode_result_t *res, size_t max_bad_percent)
{
if(res->count_good == 0) {
if(res->count_bad)
- return myfalse;
+ return false;
- return mytrue;
+ return true;
}
else if(res->count_bad == 0)
- return mytrue;
+ return true;
size_t percent_bad = (res->count_bad * 100) / res->count_good;
if(percent_bad < max_bad_percent)
- return mytrue;
+ return true;
- return myfalse;
+ return false;
}
myhtml_encoding_unicode_result_t myhtml_encoding_detect_utf_8(unsigned const char *u_text, size_t length)
@@ -5203,7 +5203,7 @@ myhtml_encoding_unicode_result_t myhtml_encoding_detect_utf_16(unsigned const ch
return res;
}
-mybool_t myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_encoding_t *encoding)
+bool myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_encoding_t *encoding)
{
unsigned const char *u_text = (unsigned const char*)text;
@@ -5213,19 +5213,19 @@ mybool_t myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_enco
u_text[2] == 0xBF)
{
*encoding = MyHTML_ENCODING_UTF_8;
- return mytrue;
+ return true;
}
}
if(length > 1) {
if(u_text[0] == 0xFE && u_text[1] == 0xFF) {
*encoding = MyHTML_ENCODING_UTF_16BE;
- return mytrue;
+ return true;
}
if(u_text[0] == 0xFF && u_text[1] == 0xFE) {
*encoding = MyHTML_ENCODING_UTF_16LE;
- return mytrue;
+ return true;
}
}
@@ -5237,7 +5237,7 @@ mybool_t myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_enco
// u_text[3] == 0xFF)
// {
// *encoding = MyHTML_ENCODING_UTF_32BE;
-// return mytrue;
+// return true;
// }
//
// if(u_text[0] == 0xFF &&
@@ -5246,14 +5246,14 @@ mybool_t myhtml_encoding_detect_bom(const char *text, size_t length, myhtml_enco
// u_text[3] == 0x00)
// {
// *encoding = MyHTML_ENCODING_UTF_32LE;
-// return mytrue;
+// return true;
// }
// }
- return myfalse;
+ return false;
}
-mybool_t myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_encoding_t *encoding)
+bool myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_encoding_t *encoding)
{
unsigned const char *u_text = (unsigned const char*)text;
*encoding = MyHTML_ENCODING_DEFAULT;
@@ -5262,23 +5262,23 @@ mybool_t myhtml_encoding_detect_unicode(const char *text, size_t length, myhtml_
if(res.count_bad == 0 && res.count_good >= 3) {
*encoding = MyHTML_ENCODING_UTF_16LE;
- return mytrue;
+ return true;
}
else if(res.count_bad >= 3 && res.count_good == 0) {
*encoding = MyHTML_ENCODING_UTF_16BE;
- return mytrue;
+ return true;
}
res = myhtml_encoding_detect_utf_8(u_text, length);
if(myhtml_encoding_detect_unicode_has_end(&res, 10)) {
*encoding = MyHTML_ENCODING_UTF_8;
- return mytrue;
+ return true;
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_encoding_t *encoding)
+bool myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_encoding_t *encoding)
{
unsigned const char *u_text = (unsigned const char*)text;
@@ -5292,7 +5292,7 @@ mybool_t myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_
res = myhtml_encoding_detect_by_trigram(u_text, length, myhtml_encoding_detect_trigrams_index_windows_1251, 1000, min_value);
if(myhtml_encoding_detect_russian_has_end(&res, min_count, min_value)) {
*encoding = MyHTML_ENCODING_WINDOWS_1251;
- return mytrue;
+ return true;
}
max_value = res.value;
@@ -5303,7 +5303,7 @@ mybool_t myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_
res = myhtml_encoding_detect_by_trigram(u_text, length, myhtml_encoding_detect_trigrams_index_koi8_r, 1000, min_value);
if(myhtml_encoding_detect_russian_has_end(&res, min_count, min_value)) {
*encoding = MyHTML_ENCODING_KOI8_R;
- return mytrue;
+ return true;
}
if(max_value < res.value) {
@@ -5314,7 +5314,7 @@ mybool_t myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_
res = myhtml_encoding_detect_by_trigram(u_text, length, myhtml_encoding_detect_trigrams_index_iso_8859_5, 1000, min_value);
if(myhtml_encoding_detect_russian_has_end(&res, min_count, min_value)) {
*encoding = MyHTML_ENCODING_ISO_8859_5;
- return mytrue;
+ return true;
}
if(max_value < res.value) {
@@ -5325,7 +5325,7 @@ mybool_t myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_
res = myhtml_encoding_detect_by_trigram(u_text, length, myhtml_encoding_detect_trigrams_index_x_mac_cyrillic, 1000, min_value);
if(myhtml_encoding_detect_russian_has_end(&res, min_count, min_value)) {
*encoding = MyHTML_ENCODING_X_MAC_CYRILLIC;
- return mytrue;
+ return true;
}
if(max_value < res.value) {
@@ -5336,27 +5336,27 @@ mybool_t myhtml_encoding_detect_russian(const char *text, size_t length, myhtml_
res = myhtml_encoding_detect_by_trigram(u_text, length, myhtml_encoding_detect_trigrams_index_ibm866, 1000, min_value);
if(myhtml_encoding_detect_russian_has_end(&res, min_count, min_value)) {
*encoding = MyHTML_ENCODING_IBM866;
- return mytrue;
+ return true;
}
if(max_value < res.value) {
*encoding = MyHTML_ENCODING_IBM866;
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_encoding_detect(const char *text, size_t length, myhtml_encoding_t *encoding)
+bool myhtml_encoding_detect(const char *text, size_t length, myhtml_encoding_t *encoding)
{
*encoding = MyHTML_ENCODING_DEFAULT;
if(myhtml_encoding_detect_unicode(text, length, encoding))
- return mytrue;
+ return true;
if(myhtml_encoding_detect_russian(text, length, encoding))
- return mytrue;
+ return true;
- return myfalse;
+ return false;
}
diff --git a/source/myhtml/myhtml.c b/source/myhtml/myhtml.c
index 0a8e999..04bad25 100644
--- a/source/myhtml/myhtml.c
+++ b/source/myhtml/myhtml.c
@@ -51,23 +51,14 @@ myhtml_status_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t th
if(mcstatus != MCOBJECT_ASYNC_STATUS_OK)
return MyHTML_STATUS_ERROR_MEMORY_ALLOCATION;
- myhtml->tags = myhtml_tag_create();
- if(myhtml->tags == NULL) {
- myhtml->parse_state_func = NULL;
- myhtml->insertion_func = NULL;
- myhtml->thread = NULL;
-
- return MyHTML_STATUS_TAGS_ERROR_MEMORY_ALLOCATION;
- }
+ // for tags node and other
+ myhtml->mchar = mchar_async_create(64, 4096);
- status = myhtml_tag_init(myhtml->tags);
- if(status) {
- myhtml->parse_state_func = NULL;
- myhtml->insertion_func = NULL;
- myhtml->thread = NULL;
-
- return status;
- }
+ myhtml->tag_index = mcobject_async_create();
+ mcstatus = mcobject_async_init(myhtml->tag_index, 128, 1024, sizeof(myhtml_tag_index_node_t));
+
+ if(mcstatus != MCOBJECT_ASYNC_STATUS_OK)
+ return MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE;
status = myhtml_tokenizer_state_init(myhtml);
if(status) {
@@ -87,6 +78,14 @@ myhtml_status_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t th
myhtml->opt = opt;
myhtml->thread = mythread_create();
+#ifdef MyHTML_BUILD_WITHOUT_THREADS
+
+ status = mythread_init(myhtml->thread, NULL, thread_count, queue_size);
+
+ if(status)
+ return status;
+
+#else /* MyHTML_BUILD_WITHOUT_THREADS */
switch (opt) {
case MyHTML_OPTIONS_PARSE_MODE_SINGLE:
status = mythread_init(myhtml->thread, "lastmac", 0, queue_size);
@@ -148,6 +147,8 @@ myhtml_status_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t th
break;
}
+#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+
myhtml_clean(myhtml);
return status;
@@ -155,8 +156,8 @@ myhtml_status_t myhtml_init(myhtml_t* myhtml, enum myhtml_options opt, size_t th
void myhtml_clean(myhtml_t* myhtml)
{
- mythread_queue_clean(myhtml->thread->queue);
mythread_clean(myhtml->thread);
+
mcobject_async_node_all_clean(myhtml->async_incoming_buf);
}
@@ -167,11 +168,12 @@ myhtml_t* myhtml_destroy(myhtml_t* myhtml)
myhtml_destroy_marker(myhtml);
- mythread_destroy(myhtml->thread, mytrue);
+ mythread_destroy(myhtml->thread, true);
myhtml_tokenizer_state_destroy(myhtml);
- myhtml->async_incoming_buf = mcobject_async_destroy(myhtml->async_incoming_buf, mytrue);
- myhtml->tags = myhtml_tag_destroy(myhtml->tags);
+ myhtml->async_incoming_buf = mcobject_async_destroy(myhtml->async_incoming_buf, true);
+ myhtml->tag_index = mcobject_async_destroy(myhtml->tag_index, true);
+ myhtml->mchar = mchar_async_destroy(myhtml->mchar, true);
if(myhtml->insertion_func)
free(myhtml->insertion_func);
@@ -337,18 +339,6 @@ myhtml_encoding_t myhtml_encoding_get(myhtml_tree_t* tree)
return tree->encoding;
}
-
-/*
- * Helpers
- */
-myhtml_tag_t * myhtml_get_tag(myhtml_t* myhtml)
-{
- if(myhtml)
- return myhtml->tags;
-
- return NULL;
-}
-
/*
* Nodes
*/
@@ -402,9 +392,8 @@ myhtml_collection_t * myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_col
myhtml_collection_t * myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection, const char* html, size_t length, myhtml_status_t *status)
{
- mctree_index_t tag_ctx_idx = mctree_search_lowercase(tree->myhtml->tags->tree, html, length);
-
- return myhtml_get_nodes_by_tag_id(tree, collection, tag_ctx_idx, status);
+ const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_name(tree->tags, html, length);
+ return myhtml_get_nodes_by_tag_id(tree, collection, tag_ctx->id, status);
}
/*
@@ -517,9 +506,9 @@ myhtml_tree_node_t * myhtml_node_insert_to_appropriate_place(myhtml_tree_t* tree
enum myhtml_tree_insertion_mode mode;
- tree->foster_parenting = mytrue;
+ tree->foster_parenting = true;
target = myhtml_tree_appropriate_place_inserting_in_tree(tree, target, &mode);
- tree->foster_parenting = myfalse;
+ tree->foster_parenting = false;
myhtml_tree_node_insert_by_mode(tree, target, node, mode);
@@ -599,7 +588,7 @@ myhtml_string_t * myhtml_node_text_set_with_charef(myhtml_tree_t* tree, myhtml_t
node->token->my_str_tm.length = 0;
}
- myhtml_string_char_ref_chunk_t str_chunk = {0, 0, 0, {}, 0, encoding};
+ myhtml_string_char_ref_chunk_t str_chunk = {0, 0, 0, {0}, 0, encoding};
myhtml_encoding_result_clean(&str_chunk.res);
myhtml_string_append_charef(&str_chunk, &node->token->my_str_tm, text, length);
@@ -623,43 +612,42 @@ myhtml_tag_id_t myhtml_node_tag_id(myhtml_tree_node_t *node)
const char * myhtml_tag_name_by_id(myhtml_tree_t* tree, myhtml_tag_id_t tag_id, size_t *length)
{
- if(tree == NULL || tree->myhtml == NULL || tree->myhtml->tags == NULL ||
- tree->myhtml->tags->context_length <= tag_id)
- {
- if(length)
- *length = 0;
-
+ if(length)
+ *length = 0;
+
+ if(tree == NULL || tree->tags == NULL)
return NULL;
- }
- mctree_node_t* mctree_nodes = tree->myhtml->tags->tree->nodes;
- size_t mcid = tree->myhtml->tags->context[tag_id].mctree_id;
+ const myhtml_tag_context_t *ctx = myhtml_tag_get_by_id(tree->tags, tag_id);
+
+ if(ctx == NULL)
+ return NULL;
if(length)
- *length = mctree_nodes[mcid].str_size;
+ *length = ctx->name_length;
- return mctree_nodes[mcid].str;
+ return ctx->name;
}
myhtml_tag_id_t myhtml_tag_id_by_name(myhtml_tree_t* tree, const char *tag_name, size_t length)
{
- if(tree == NULL || tree->myhtml == NULL || tree->myhtml->tags == NULL)
+ if(tree == NULL || tree->tags == NULL)
return MyHTML_TAG__UNDEF;
- myhtml_tag_t* tags = tree->myhtml->tags;
- mctree_t* tags_tree = tags->tree;
+ const myhtml_tag_context_t *ctx = myhtml_tag_get_by_name(tree->tags, tag_name, length);
- mctree_index_t idx = mctree_search_lowercase(tree->myhtml->tags->tree, tag_name, length);
+ if(ctx == NULL)
+ return MyHTML_TAG__UNDEF;
- return (myhtml_tag_id_t)(tags_tree->nodes[idx].value);
+ return ctx->id;
}
-mybool_t myhtml_node_is_close_self(myhtml_tree_node_t *node)
+bool myhtml_node_is_close_self(myhtml_tree_node_t *node)
{
if(node->token)
return (node->token->type & MyHTML_TOKEN_TYPE_CLOSE_SELF);
- return myfalse;
+ return false;
}
myhtml_tree_attr_t * myhtml_node_attribute_first(myhtml_tree_node_t *node)
@@ -1003,30 +991,30 @@ const char * myhtml_tree_incomming_buf_make_data(myhtml_tree_t *tree, mythread_q
return tree->temp_tag_name.data;
}
-mybool_t myhtml_utils_strcmp(const char* ab, const char* to_lowercase, size_t size)
+bool myhtml_utils_strcmp(const char* ab, const char* to_lowercase, size_t size)
{
size_t i = 0;
for(;;) {
if(i == size)
- return mytrue;
+ return true;
if((const unsigned char)(to_lowercase[i] > 0x40 && to_lowercase[i] < 0x5b ?
(to_lowercase[i]|0x60) : to_lowercase[i]) != (const unsigned char)ab[i])
{
- return myfalse;
+ return false;
}
i++;
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_is_html_node(myhtml_tree_node_t *node, myhtml_tag_id_t tag_id)
+bool myhtml_is_html_node(myhtml_tree_node_t *node, myhtml_tag_id_t tag_id)
{
if(node == NULL)
- return myfalse;
+ return false;
return node->tag_idx == tag_id && node->my_namespace == MyHTML_NAMESPACE_HTML;
}
diff --git a/source/myhtml/myhtml.h b/source/myhtml/myhtml.h
index 6120212..e7e1d3d 100644
--- a/source/myhtml/myhtml.h
+++ b/source/myhtml/myhtml.h
@@ -104,9 +104,10 @@ extern "C" {
(__char__ < 'A' || __char__ > 'Z'))
struct myhtml {
- myhtml_tag_t *tags;
mythread_t *thread;
mcobject_async_t *async_incoming_buf;
+ mchar_async_t *mchar; // for all
+ mcobject_async_t *tag_index;
myhtml_tokenizer_state_f* parse_state_func;
myhtml_insertion_f* insertion_func;
@@ -155,8 +156,6 @@ myhtml_encoding_t myhtml_encoding_get(myhtml_tree_t* tree);
myhtml_collection_t * myhtml_get_nodes_by_tag_id(myhtml_tree_t* tree, myhtml_collection_t *collection, myhtml_tag_id_t tag_id, myhtml_status_t *status);
myhtml_collection_t * myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection, const char* html, size_t length, myhtml_status_t *status);
-myhtml_tag_t * myhtml_get_tag(myhtml_t* myhtml);
-
myhtml_tree_node_t * myhtml_node_first(myhtml_tree_t* tree);
myhtml_tree_node_t * myhtml_node_next(myhtml_tree_node_t *node);
myhtml_tree_node_t * myhtml_node_prev(myhtml_tree_node_t *node);
@@ -179,7 +178,7 @@ enum myhtml_namespace myhtml_node_namespace(myhtml_tree_node_t *node);
myhtml_tag_id_t myhtml_node_tag_id(myhtml_tree_node_t *node);
const char * myhtml_tag_name_by_id(myhtml_tree_t* tree, myhtml_tag_id_t tag_id, size_t *length);
myhtml_tag_id_t myhtml_tag_id_by_name(myhtml_tree_t* tree, const char *tag_name, size_t length);
-mybool_t myhtml_node_is_close_self(myhtml_tree_node_t *node);
+bool myhtml_node_is_close_self(myhtml_tree_node_t *node);
myhtml_tree_attr_t * myhtml_node_attribute_first(myhtml_tree_node_t *node);
myhtml_tree_attr_t * myhtml_node_attribute_last(myhtml_tree_node_t *node);
const char * myhtml_node_text(myhtml_tree_node_t *node, size_t *length);
@@ -212,8 +211,8 @@ void myhtml_incomming_buf_clean(myhtml_tree_t* tree, myhtml_incoming_buf_t *curr
const char * myhtml_tree_incomming_buf_get_last(myhtml_tree_t *tree, myhtml_incoming_buf_t *inc_buf, size_t current_offset, size_t len);
const char * myhtml_tree_incomming_buf_make_data(myhtml_tree_t *tree, mythread_queue_node_t *qnode, size_t len);
-mybool_t myhtml_utils_strcmp(const char* ab, const char* to_lowercase, size_t size);
-mybool_t myhtml_is_html_node(myhtml_tree_node_t *node, myhtml_tag_id_t tag_id);
+bool myhtml_utils_strcmp(const char* ab, const char* to_lowercase, size_t size);
+bool myhtml_is_html_node(myhtml_tree_node_t *node, myhtml_tag_id_t tag_id);
/**
* Platform-specific hdef performance clock queries.
diff --git a/source/myhtml/myosi.h b/source/myhtml/myosi.h
index 938be5c..db9a4da 100644
--- a/source/myhtml/myosi.h
+++ b/source/myhtml/myosi.h
@@ -20,10 +20,7 @@
#define MyHTML_MYOSI_H
#pragma once
-#ifdef __cplusplus
-extern "C" {
-#endif
-
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
@@ -35,6 +32,18 @@ extern "C" {
#include <windows.h>
#endif
+#if defined(_MSC_VER)
+# define MyHTML_DEPRECATED(func, message) __declspec(deprecated(message)) func
+#elif defined(__GNUC__) || defined(__INTEL_COMPILER)
+# define MyHTML_DEPRECATED(func, message) func __attribute__((deprecated(message)))
+#else
+# define MyHTML_DEPRECATED(func, message) func
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#ifdef DEBUG_MODE
#define MyHTML_DEBUG(__format__, ...) \
myhtml_print(stderr, "DEBUG: "__format__"\n", ##__VA_ARGS__)
@@ -57,7 +66,11 @@ extern "C" {
sizeof(__strcn__) * __myhtml__->__sizen__); \
}
-typedef enum {myfalse = 0, mytrue = 1} mybool_t;
+
+typedef enum {
+ myfalse = 0,
+ mytrue = 1
+} MyHTML_DEPRECATED(mybool_t, "use bool");
// encoding
// https://encoding.spec.whatwg.org/#the-encoding
@@ -371,7 +384,6 @@ typedef myhtml_token_attr_t myhtml_tree_attr_t;
typedef struct myhtml_collection myhtml_collection_t;
typedef struct myhtml myhtml_t;
-
// parser state function
typedef size_t (*myhtml_tokenizer_state_f)(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
@@ -379,7 +391,7 @@ typedef size_t (*myhtml_tokenizer_state_f)(myhtml_tree_t* tree, mythread_queue_n
typedef void (*mythread_f)(mythread_id_t thread_id, mythread_queue_node_t *qnode);
// parser insertion mode function
-typedef mybool_t (*myhtml_insertion_f)(myhtml_tree_t* tree, myhtml_token_node_t* token);
+typedef bool (*myhtml_insertion_f)(myhtml_tree_t* tree, myhtml_token_node_t* token);
void * mymalloc(size_t size);
void * myrealloc(void* dst, size_t size);
diff --git a/source/myhtml/mystring.c b/source/myhtml/mystring.c
index 7e21470..c30d22f 100644
--- a/source/myhtml/mystring.c
+++ b/source/myhtml/mystring.c
@@ -16,156 +16,9 @@
Author: lex.borisov@gmail.com (Alexander Borisov)
*/
+#include "myhtml/utils/resources.h"
#include "myhtml/mystring.h"
-static const unsigned char myhtml_string_chars_num_map[] = {
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
- 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff
-};
-
-static const unsigned char myhtml_string_chars_hex_map[] = {
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
- 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0x0b,
- 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff
-};
-
-static const unsigned char myhtml_string_chars_lowercase_map[] = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
- 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11,
- 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
- 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
- 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c,
- 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
- 0x3f, 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
- 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
- 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
- 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
- 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b,
- 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74,
- 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d,
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
- 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
- 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
- 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1,
- 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa,
- 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3,
- 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc,
- 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5,
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
- 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
- 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
- 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2,
- 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb,
- 0xfc, 0xfd, 0xfe, 0xff
-};
-
-static const size_t replacement_character[] = {
- 65533, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 8364, 129, 8218, 402, 8222, 8230, 8224,
- 8225, 710, 8240, 352, 8249, 338, 141, 381, 143,
- 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732,
- 8482, 353, 8250, 339, 157, 382, 376
-};
-
-static const size_t myhtml_string_alphanumeric_character[] = {
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
- 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a,
- 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d,
- 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a,
- 0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x0d,
- 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a,
- 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d,
- 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff
-};
char * myhtml_string_init(mchar_async_t *mchar, size_t node_idx, myhtml_string_t* str, size_t size)
{
@@ -189,7 +42,7 @@ void myhtml_string_clean_all(myhtml_string_t* str)
memset(str, 0, sizeof(myhtml_string_t));
}
-myhtml_string_t * myhtml_string_destroy(myhtml_string_t* str, mybool_t destroy_obj)
+myhtml_string_t * myhtml_string_destroy(myhtml_string_t* str, bool destroy_obj)
{
if(str == NULL)
return NULL;
@@ -296,7 +149,7 @@ char * myhtml_string_realloc(mchar_async_t *mchar, size_t node_id, myhtml_string
return str->data;
}
-mybool_t myhtml_string_release(myhtml_string_t* str, size_t size)
+bool myhtml_string_release(myhtml_string_t* str, size_t size)
{
char* tmp = mchar_async_realloc(str->mchar, str->node_idx, str->data, str->length, size);
@@ -305,14 +158,14 @@ mybool_t myhtml_string_release(myhtml_string_t* str, size_t size)
str->data = tmp;
}
else
- return myfalse;
+ return false;
- return mytrue;
+ return true;
}
void _myhtml_string_charef_append(myhtml_string_t* str, const char sm)
{
- MyHTML_STRING_REALLOC_IF_NEED(str, (str->length + 2), 32);
+ MyHTML_STRING_REALLOC_IF_NEED(str, 2, 32);
str->data[str->length] = sm;
str->length++;
@@ -423,7 +276,7 @@ size_t _myhtml_string_append_char_references_state_2(myhtml_string_char_ref_chun
if(current_entry->codepoints_len)
{
for (size_t i = 0; i < current_entry->codepoints_len; i++) {
- MyHTML_STRING_REALLOC_IF_NEED(str, (chunk->begin + 4), 32);
+ MyHTML_STRING_REALLOC_IF_NEED(str, 4, 32);
chunk->begin += myhtml_encoding_codepoint_to_ascii_utf_8(current_entry->codepoints[i], &str->data[chunk->begin]);
}
@@ -468,7 +321,7 @@ void _myhtml_string_append_char_references_state_end(myhtml_string_char_ref_chun
str->length = chunk->begin;
/* 4 is max utf8 byte + \0 */
- MyHTML_STRING_REALLOC_IF_NEED(str, (chunk->begin + 5), 12);
+ MyHTML_STRING_REALLOC_IF_NEED(str, 5, 12);
if(chunk->l_data <= 0x9F)
chunk->l_data = replacement_character[chunk->l_data];
@@ -507,7 +360,10 @@ size_t _myhtml_string_append_char_references_state_4(myhtml_string_char_ref_chun
return offset;
}
- chunk->l_data = myhtml_string_chars_num_map[ buff[offset] ] + chunk->l_data * 10;
+ if(chunk->l_data <= 0x10FFFF) {
+ chunk->l_data = myhtml_string_chars_num_map[ buff[offset] ] + chunk->l_data * 10;
+ }
+
offset++;
}
@@ -519,7 +375,7 @@ size_t _myhtml_string_append_char_references_state_4(myhtml_string_char_ref_chun
size_t _myhtml_string_append_char_references_state_5(myhtml_string_char_ref_chunk_t *chunk, myhtml_string_t* str, const char* buff, size_t offset, size_t size)
{
unsigned const char *u_buff = (unsigned const char*)buff;
- size_t start_pos = chunk->begin + 3;
+ size_t current_len = (str->length - (chunk->begin + 3));
size_t tmp_offset = offset, tmp_set_to = offset;
@@ -527,6 +383,10 @@ size_t _myhtml_string_append_char_references_state_5(myhtml_string_char_ref_chun
{
if(myhtml_string_chars_hex_map[ u_buff[offset] ] == 0xff)
{
+ if(((offset - tmp_offset) + current_len) > 6) {
+ chunk->l_data = 0xFFFFFF;
+ }
+
chunk->state = 0;
myhtml_string_append_with_preprocessing(str, &buff[tmp_offset], (tmp_set_to - tmp_offset));
@@ -541,7 +401,7 @@ size_t _myhtml_string_append_char_references_state_5(myhtml_string_char_ref_chun
return offset;
}
- if((str->length - start_pos) < 6) {
+ if(((offset - tmp_offset) + current_len) < 7) {
chunk->l_data <<= 4;
chunk->l_data |= myhtml_string_chars_hex_map[ u_buff[offset] ];
@@ -551,6 +411,10 @@ size_t _myhtml_string_append_char_references_state_5(myhtml_string_char_ref_chun
offset++;
}
+ if(((offset - tmp_offset) + current_len) > 6) {
+ chunk->l_data = 0xFFFFFF;
+ }
+
myhtml_string_append_with_preprocessing(str, &buff[tmp_offset], (offset - tmp_offset));
return offset;
@@ -592,7 +456,7 @@ void myhtml_string_append_charef_end(myhtml_string_char_ref_chunk_t *chunk, myht
const charef_entry_t *entry = chunk->charef_res.last_entry;
for (size_t i = 0; i < entry->codepoints_len; i++) {
- MyHTML_STRING_REALLOC_IF_NEED(str, (chunk->begin + 4), 32);
+ MyHTML_STRING_REALLOC_IF_NEED(str, 4, 32);
chunk->begin += myhtml_encoding_codepoint_to_ascii_utf_8(entry->codepoints[i], &str->data[chunk->begin]);
}
@@ -644,7 +508,10 @@ void myhtml_string_append_with_preprocessing(myhtml_string_t* str, const char* b
}
else if(u_buff[i] == 0x00)
{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 4), 32);
+ MyHTML_STRING_REALLOC_IF_NEED(str, 4, 32);
+
+ if((unsigned char *)str->data != data)
+ data = (unsigned char*)str->data;
// Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
data[str->length] = 0xEF; str->length++;
@@ -680,7 +547,10 @@ void myhtml_string_append_lowercase_with_preprocessing(myhtml_string_t* str, con
}
else if(u_buff[i] == 0x00)
{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 4), 32);
+ MyHTML_STRING_REALLOC_IF_NEED(str, 4, 32);
+
+ if((unsigned char *)str->data != data)
+ data = (unsigned char*)str->data;
// Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
data[str->length] = 0xEF; str->length++;
@@ -733,7 +603,7 @@ void myhtml_string_append_chunk_with_convert_encoding_with_preprocessing(myhtml_
if(str->data[str->length] == 0x00)
{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 4), 32);
+ MyHTML_STRING_REALLOC_IF_NEED(str, 4, 32);
// Unicode Character 'REPLACEMENT CHARACTER' (U+FFFD)
str->data[str->length] = 0xEF; str->length++;
@@ -794,7 +664,7 @@ void myhtml_string_append_one_with_convert_encoding(myhtml_string_t* str, myhtml
void myhtml_string_append_lowercase(myhtml_string_t* str, const char* data, size_t length)
{
- MyHTML_STRING_REALLOC_IF_NEED(str, (length + 1), (length + 32));
+ MyHTML_STRING_REALLOC_IF_NEED(str, (length + 1), 32);
unsigned char *ref = (unsigned char*)&str->data[str->length];
unsigned char *buf = (unsigned char*)data;
diff --git a/source/myhtml/mystring.h b/source/myhtml/mystring.h
index 9c09147..0542181 100644
--- a/source/myhtml/mystring.h
+++ b/source/myhtml/mystring.h
@@ -35,7 +35,7 @@ extern "C" {
#define MyHTML_STRING_REALLOC_IF_NEED(__str__, __count__, __upto__) \
if((__str__->length + __count__) >= __str__->size) { \
- myhtml_string_release(__str__, (str->size + __upto__)); \
+ myhtml_string_release(__str__, (__str__->length + __count__ + __upto__)); \
} \
#define MyHTML_STRING_APPEND_BYTE_WITHOUT_REALLOC(__byte__, __str__) \
@@ -77,7 +77,7 @@ struct myhtml_string_char_ref_chunk {
long l_data;
charef_entry_result_t charef_res;
- mybool_t is_attributes;
+ bool is_attributes;
myhtml_encoding_t encoding;
myhtml_encoding_result_t res;
@@ -91,7 +91,7 @@ char * myhtml_string_realloc(mchar_async_t *mchar, size_t node_id, myhtml_string
void myhtml_string_clean(myhtml_string_t* str);
void myhtml_string_clean_all(myhtml_string_t* str);
-myhtml_string_t * myhtml_string_destroy(myhtml_string_t* str, mybool_t destroy_obj);
+myhtml_string_t * myhtml_string_destroy(myhtml_string_t* str, bool destroy_obj);
char * myhtml_string_data_alloc(mchar_async_t *mchar, size_t node_id, size_t size);
char * myhtml_string_data_realloc(mchar_async_t *mchar, size_t node_id, char *data, size_t len_to_copy, size_t size);
diff --git a/source/myhtml/parser.c b/source/myhtml/parser.c
index 606cf94..8ee2e35 100644
--- a/source/myhtml/parser.c
+++ b/source/myhtml/parser.c
@@ -196,11 +196,11 @@ size_t myhtml_parser_add_text_lowercase(myhtml_tree_t *tree, myhtml_string_t* st
return (string->length - save_str_len);
}
-size_t myhtml_parser_add_text_with_charef(myhtml_tree_t *tree, myhtml_string_t* string, const char *text, size_t begin, size_t length, mybool_t is_attibutes)
+size_t myhtml_parser_add_text_with_charef(myhtml_tree_t *tree, myhtml_string_t* string, const char *text, size_t begin, size_t length, bool is_attibutes)
{
myhtml_incoming_buf_t *inc_buf = myhtml_parser_find_first_buf(tree, begin);
- myhtml_string_char_ref_chunk_t str_chunk = {0, 0, 0, {}, is_attibutes, tree->encoding};
+ myhtml_string_char_ref_chunk_t str_chunk = {0, 0, 0, {0}, is_attibutes, tree->encoding};
myhtml_encoding_result_clean(&str_chunk.res);
size_t current_buf_offset = begin - inc_buf->offset;
@@ -266,7 +266,7 @@ void myhtml_parser_worker(mythread_id_t thread_id, mythread_queue_node_t *qnode)
token->type & MyHTML_TOKEN_TYPE_RCDATA ||
token->type & MyHTML_TOKEN_TYPE_CDATA)
{
- token->length = myhtml_parser_add_text_with_charef(qnode->tree, &token->my_str_tm, qnode->text, qnode->begin, qnode->length, myfalse);
+ token->length = myhtml_parser_add_text_with_charef(qnode->tree, &token->my_str_tm, qnode->text, qnode->begin, qnode->length, false);
}
else
token->length = myhtml_parser_add_text(qnode->tree, &token->my_str_tm, qnode->text, qnode->begin, qnode->length);
@@ -301,7 +301,7 @@ void myhtml_parser_worker(mythread_id_t thread_id, mythread_queue_node_t *qnode)
size_t begin = attr->value_begin;
attr->value_begin = attr->entry.length;
- attr->value_length = myhtml_parser_add_text_with_charef(qnode->tree, &attr->entry, qnode->text, begin, attr->value_length, mytrue);
+ attr->value_length = myhtml_parser_add_text_with_charef(qnode->tree, &attr->entry, qnode->text, begin, attr->value_length, true);
}
attr->my_namespace = MyHTML_NAMESPACE_HTML;
diff --git a/source/myhtml/perf.c b/source/myhtml/perf.c
index c501dda..1d5e3d3 100644
--- a/source/myhtml/perf.c
+++ b/source/myhtml/perf.c
@@ -260,8 +260,10 @@ myhtml_status_t myhtml_hperf_print(const char *name, uint64_t x, uint64_t y, FIL
unsigned long long freq = myhtml_hperf_res(&status);
- _MyHTML_CHECK_STATUS_AND_PRINT_ERROR {
- fprintf(fh, "%s: %0.5f\n", name, (((float)(y - x) / (float)freq)));
+ if(freq) {
+ _MyHTML_CHECK_STATUS_AND_PRINT_ERROR {
+ fprintf(fh, "%s: %0.5f\n", name, (((float)(y - x) / (float)freq)));
+ }
}
return status;
@@ -272,8 +274,10 @@ myhtml_status_t myhtml_hperf_print_by_val(const char *name, uint64_t x, FILE *fh
unsigned long long freq = myhtml_hperf_res(&status);
- _MyHTML_CHECK_STATUS_AND_PRINT_ERROR {
- fprintf(fh, "%s: %0.5f\n", name, ((float)x / (float)freq));
+ if(freq) {
+ _MyHTML_CHECK_STATUS_AND_PRINT_ERROR {
+ fprintf(fh, "%s: %0.5f\n", name, ((float)x / (float)freq));
+ }
}
return status;
diff --git a/source/myhtml/rules.c b/source/myhtml/rules.c
index 48efb00..36e0ca4 100644
--- a/source/myhtml/rules.c
+++ b/source/myhtml/rules.c
@@ -57,14 +57,14 @@ myhtml_token_node_t * myhtml_insertion_fix_split_for_text_begin_ws(myhtml_tree_t
return new_token;
}
-mybool_t myhtml_insertion_mode_initial(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_initial(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
switch (token->tag_ctx_idx)
{
case MyHTML_TAG__TEXT:
{
if(token->type & MyHTML_TOKEN_TYPE_WHITESPACE) {
- return myfalse;
+ return false;
}
myhtml_insertion_fix_emit_for_text_begin_ws(token);
@@ -78,7 +78,7 @@ mybool_t myhtml_insertion_mode_initial(myhtml_tree_t* tree, myhtml_token_node_t*
case MyHTML_TAG__COMMENT:
{
myhtml_tree_node_insert_comment(tree, token, tree->document);
- return myfalse;
+ return false;
}
case MyHTML_TAG__DOCTYPE:
@@ -89,7 +89,7 @@ mybool_t myhtml_insertion_mode_initial(myhtml_tree_t* tree, myhtml_token_node_t*
myhtml_tree_node_insert_doctype(tree, token);
// fix for tokenizer
- if(tree->doctype.is_html == myfalse &&
+ if(tree->doctype.is_html == false &&
(tree->doctype.attr_public == NULL ||
tree->doctype.attr_system == NULL))
{
@@ -97,7 +97,7 @@ mybool_t myhtml_insertion_mode_initial(myhtml_tree_t* tree, myhtml_token_node_t*
}
tree->insert_mode = MyHTML_INSERTION_MODE_BEFORE_HTML;
- return myfalse;
+ return false;
}
default:
@@ -106,10 +106,10 @@ mybool_t myhtml_insertion_mode_initial(myhtml_tree_t* tree, myhtml_token_node_t*
break;
}
- return mytrue;
+ return true;
}
-mybool_t myhtml_insertion_mode_before_html(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_before_html(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -121,7 +121,7 @@ mybool_t myhtml_insertion_mode_before_html(myhtml_tree_t* tree, myhtml_token_nod
{
myhtml_tree_node_insert_root(tree, NULL, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_BEFORE_HEAD;
- return mytrue;
+ return true;
}
default:
@@ -151,7 +151,7 @@ mybool_t myhtml_insertion_mode_before_html(myhtml_tree_t* tree, myhtml_token_nod
// default, other token
myhtml_tree_node_insert_root(tree, NULL, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_BEFORE_HEAD;
- return mytrue;
+ return true;
}
case MyHTML_TAG_HTML:
@@ -165,15 +165,15 @@ mybool_t myhtml_insertion_mode_before_html(myhtml_tree_t* tree, myhtml_token_nod
{
myhtml_tree_node_insert_root(tree, NULL, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_BEFORE_HEAD;
- return mytrue;
+ return true;
}
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_before_head(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_before_head(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -185,7 +185,7 @@ mybool_t myhtml_insertion_mode_before_head(myhtml_tree_t* tree, myhtml_token_nod
{
tree->node_head = myhtml_tree_node_insert(tree, MyHTML_TAG_HEAD, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_HEAD;
- return mytrue;
+ return true;
}
default:
@@ -206,7 +206,7 @@ mybool_t myhtml_insertion_mode_before_head(myhtml_tree_t* tree, myhtml_token_nod
// default, other token
tree->node_head = myhtml_tree_node_insert(tree, MyHTML_TAG_HEAD, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_HEAD;
- return mytrue;
+ return true;
}
case MyHTML_TAG__COMMENT:
@@ -234,15 +234,15 @@ mybool_t myhtml_insertion_mode_before_head(myhtml_tree_t* tree, myhtml_token_nod
{
tree->node_head = myhtml_tree_node_insert(tree, MyHTML_TAG_HEAD, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_HEAD;
- return mytrue;
+ return true;
}
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_head(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_head(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -260,7 +260,7 @@ mybool_t myhtml_insertion_mode_in_head(myhtml_tree_t* tree, myhtml_token_node_t*
{
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_AFTER_HEAD;
- return mytrue;
+ return true;
}
case MyHTML_TAG_TEMPLATE:
@@ -270,7 +270,7 @@ mybool_t myhtml_insertion_mode_in_head(myhtml_tree_t* tree, myhtml_token_node_t*
// oh God...
myhtml_tree_generate_all_implied_end_tags(tree, 0, MyHTML_NAMESPACE_UNDEF);
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_TEMPLATE, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_TEMPLATE, MyHTML_NAMESPACE_HTML, false);
myhtml_tree_active_formatting_up_to_last_marker(tree);
myhtml_tree_template_insertion_pop(tree);
myhtml_tree_reset_insertion_mode_appropriately(tree);
@@ -300,7 +300,7 @@ mybool_t myhtml_insertion_mode_in_head(myhtml_tree_t* tree, myhtml_token_node_t*
// default, other token
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_AFTER_HEAD;
- return mytrue;
+ return true;
}
case MyHTML_TAG__COMMENT:
@@ -421,15 +421,15 @@ mybool_t myhtml_insertion_mode_in_head(myhtml_tree_t* tree, myhtml_token_node_t*
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_AFTER_HEAD;
- return mytrue;
+ return true;
}
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_head_noscript(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_head_noscript(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -445,7 +445,7 @@ mybool_t myhtml_insertion_mode_in_head_noscript(myhtml_tree_t* tree, myhtml_toke
{
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_HEAD;
- return mytrue;
+ return true;
}
default:
@@ -471,7 +471,7 @@ mybool_t myhtml_insertion_mode_in_head_noscript(myhtml_tree_t* tree, myhtml_toke
// default, other token
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_HEAD;
- return mytrue;
+ return true;
}
case MyHTML_TAG_BASEFONT:
@@ -491,15 +491,15 @@ mybool_t myhtml_insertion_mode_in_head_noscript(myhtml_tree_t* tree, myhtml_toke
{
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_HEAD;
- return mytrue;
+ return true;
}
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_after_head(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_after_head(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -508,9 +508,9 @@ mybool_t myhtml_insertion_mode_after_head(myhtml_tree_t* tree, myhtml_token_node
case MyHTML_TAG_HTML:
case MyHTML_TAG_BODY:
{
- myhtml_tree_node_insert(tree, MyHTML_TAG_BODY, MyHTML_NAMESPACE_HTML);
+ tree->node_body = myhtml_tree_node_insert(tree, MyHTML_TAG_BODY, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
- return mytrue;
+ return true;
}
case MyHTML_TAG_TEMPLATE:
@@ -538,9 +538,9 @@ mybool_t myhtml_insertion_mode_after_head(myhtml_tree_t* tree, myhtml_token_node
myhtml_tree_node_insert_text(tree, new_token);
// default, other token
- myhtml_tree_node_insert(tree, MyHTML_TAG_BODY, MyHTML_NAMESPACE_HTML);
+ tree->node_body = myhtml_tree_node_insert(tree, MyHTML_TAG_BODY, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
- return mytrue;
+ return true;
}
case MyHTML_TAG__COMMENT:
@@ -555,7 +555,7 @@ mybool_t myhtml_insertion_mode_after_head(myhtml_tree_t* tree, myhtml_token_node
case MyHTML_TAG_BODY:
{
- myhtml_tree_node_insert_html_element(tree, token);
+ tree->node_body = myhtml_tree_node_insert_html_element(tree, token);
tree->flags ^= (tree->flags & MyHTML_TREE_FLAGS_FRAMESET_OK);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
@@ -590,20 +590,18 @@ mybool_t myhtml_insertion_mode_after_head(myhtml_tree_t* tree, myhtml_token_node
default:
{
- myhtml_tree_node_insert(tree, MyHTML_TAG_BODY, MyHTML_NAMESPACE_HTML);
+ tree->node_body = myhtml_tree_node_insert(tree, MyHTML_TAG_BODY, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
- return mytrue;
+ return true;
}
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_body_other_end_tag(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_body_other_end_tag(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
- myhtml_tag_context_t* tags_context = tree->myhtml->tags->context;
-
// step 1
size_t i = tree->open_elements->length;
while(i) {
@@ -615,20 +613,21 @@ mybool_t myhtml_insertion_mode_in_body_other_end_tag(myhtml_tree_t* tree, myhtml
while (node->tag_idx == token->tag_ctx_idx && node->my_namespace == MyHTML_NAMESPACE_HTML)
{
myhtml_tree_generate_implied_end_tags(tree, token->tag_ctx_idx, MyHTML_NAMESPACE_HTML);
- myhtml_tree_open_elements_pop_until_by_node(tree, node, myfalse);
+ myhtml_tree_open_elements_pop_until_by_node(tree, node, false);
- return myfalse;
+ return false;
}
- if(tags_context[node->tag_idx].cats[node->my_namespace] & MyHTML_TAG_CATEGORIES_SPECIAL) {
+ const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_id(tree->tags, node->tag_idx);
+ if(tag_ctx->cats[node->my_namespace] & MyHTML_TAG_CATEGORIES_SPECIAL) {
break;
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -713,7 +712,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
}
tree->insert_mode = MyHTML_INSERTION_MODE_AFTER_BODY;
- return mytrue;
+ return true;
}
case MyHTML_TAG_ADDRESS:
@@ -755,7 +754,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
// parse error
// step 3
- myhtml_tree_open_elements_pop_until(tree, token->tag_ctx_idx, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, token->tag_ctx_idx, MyHTML_NAMESPACE_HTML, false);
break;
}
@@ -772,7 +771,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
tree->node_form = NULL;
// step 3
- if(node == NULL || myhtml_tree_element_in_scope_by_node(tree, node, MyHTML_TAG_CATEGORIES_SCOPE) == myfalse) {
+ if(node == NULL || myhtml_tree_element_in_scope_by_node(tree, node, MyHTML_TAG_CATEGORIES_SCOPE) == false) {
// parse error
break;
}
@@ -805,7 +804,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
// // parse error
// step 4
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_FORM, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_FORM, MyHTML_NAMESPACE_HTML, false);
}
break;
@@ -838,7 +837,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
// // parse error
// step 3
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_LI, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_LI, MyHTML_NAMESPACE_HTML, false);
break;
}
@@ -860,7 +859,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
// // parse error
// step 3
- myhtml_tree_open_elements_pop_until(tree, token->tag_ctx_idx, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, token->tag_ctx_idx, MyHTML_NAMESPACE_HTML, false);
break;
}
@@ -873,13 +872,14 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
case MyHTML_TAG_H6:
{
myhtml_tree_node_t** list = tree->open_elements->list;
- myhtml_tag_context_t* tags_context = tree->myhtml->tags->context;
myhtml_tree_node_t* node = NULL;
size_t i = tree->open_elements->length;
while(i) {
i--;
+ const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_id(tree->tags, list[i]->tag_idx);
+
if((list[i]->tag_idx == MyHTML_TAG_H1 ||
list[i]->tag_idx == MyHTML_TAG_H2 ||
list[i]->tag_idx == MyHTML_TAG_H3 ||
@@ -891,7 +891,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
break;
}
// TODO: This is wrong!!!
- else if(tags_context[list[i]->tag_idx].cats[list[i]->my_namespace] & MyHTML_TAG_CATEGORIES_SCOPE)
+ else if(tag_ctx->cats[list[i]->my_namespace] & MyHTML_TAG_CATEGORIES_SCOPE)
break;
}
@@ -966,7 +966,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
// // parse error
// step 3
- myhtml_tree_open_elements_pop_until(tree, token->tag_ctx_idx, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, token->tag_ctx_idx, MyHTML_NAMESPACE_HTML, false);
// step 4
myhtml_tree_active_formatting_up_to_last_marker(tree);
@@ -1108,7 +1108,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
myhtml_tree_node_t* node = tree->open_elements->list[1];
myhtml_tree_node_remove(node);
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_HTML, MyHTML_NAMESPACE_HTML, mytrue);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_HTML, MyHTML_NAMESPACE_HTML, true);
myhtml_tree_node_insert_html_element(tree, token);
@@ -1249,20 +1249,20 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
{
tree->flags ^= (tree->flags & MyHTML_TREE_FLAGS_FRAMESET_OK);
- myhtml_tag_context_t* tags_context = tree->myhtml->tags->context;
size_t oel_index = tree->open_elements->length;
while (oel_index) {
oel_index--;
myhtml_tree_node_t* node = tree->open_elements->list[oel_index];
+ const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_id(tree->tags, node->tag_idx);
if(myhtml_is_html_node(node, MyHTML_TAG_LI)) {
myhtml_tree_generate_implied_end_tags(tree, MyHTML_TAG_LI, MyHTML_NAMESPACE_HTML);
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_LI, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_LI, MyHTML_NAMESPACE_HTML, false);
break;
}
- else if(tags_context[node->tag_idx].cats[node->my_namespace] & MyHTML_TAG_CATEGORIES_SPECIAL)
+ else if(tag_ctx->cats[node->my_namespace] & MyHTML_TAG_CATEGORIES_SPECIAL)
{
if(!((node->tag_idx == MyHTML_TAG_ADDRESS || node->tag_idx == MyHTML_TAG_DIV ||
node->tag_idx == MyHTML_TAG_P) && node->my_namespace == MyHTML_NAMESPACE_HTML))
@@ -1284,25 +1284,25 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
// this is copy/past
tree->flags ^= (tree->flags & MyHTML_TREE_FLAGS_FRAMESET_OK);
- myhtml_tag_context_t* tags_context = tree->myhtml->tags->context;
size_t oel_index = tree->open_elements->length;
while (oel_index) {
oel_index--;
myhtml_tree_node_t* node = tree->open_elements->list[oel_index];
+ const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_id(tree->tags, node->tag_idx);
if(myhtml_is_html_node(node, MyHTML_TAG_DD)) {
myhtml_tree_generate_implied_end_tags(tree, MyHTML_TAG_DD, MyHTML_NAMESPACE_HTML);
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_DD, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_DD, MyHTML_NAMESPACE_HTML, false);
break;
}
else if(myhtml_is_html_node(node, MyHTML_TAG_DT)) {
myhtml_tree_generate_implied_end_tags(tree, MyHTML_TAG_DT, MyHTML_NAMESPACE_HTML);
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_DT, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_DT, MyHTML_NAMESPACE_HTML, false);
break;
}
- else if(tags_context[node->tag_idx].cats[node->my_namespace] & MyHTML_TAG_CATEGORIES_SPECIAL)
+ else if(tag_ctx->cats[node->my_namespace] & MyHTML_TAG_CATEGORIES_SPECIAL)
{
if(!((node->tag_idx == MyHTML_TAG_ADDRESS || node->tag_idx == MyHTML_TAG_DIV ||
node->tag_idx == MyHTML_TAG_P) && node->my_namespace == MyHTML_NAMESPACE_HTML))
@@ -1334,7 +1334,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
{
if(myhtml_tree_element_in_scope(tree, MyHTML_TAG_BUTTON, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SCOPE)) {
myhtml_tree_generate_implied_end_tags(tree, 0, MyHTML_NAMESPACE_UNDEF);
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_BUTTON, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_BUTTON, MyHTML_NAMESPACE_HTML, false);
}
myhtml_tree_active_formatting_reconstruction(tree);
@@ -1484,7 +1484,7 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
case MyHTML_TAG_IMAGE:
{
token->tag_ctx_idx = MyHTML_TAG_IMG;
- return mytrue;
+ return true;
}
case MyHTML_TAG_ISINDEX:
@@ -1792,10 +1792,10 @@ mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t*
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_text(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_text(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -1827,16 +1827,16 @@ mybool_t myhtml_insertion_mode_text(myhtml_tree_t* tree, myhtml_token_node_t* to
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = tree->orig_insert_mode;
- return mytrue;
+ return true;
}
myhtml_tree_node_insert_text(tree, token);
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -1849,7 +1849,7 @@ mybool_t myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t
// parse error
break;
- myhtml_tree_open_elements_pop_until_by_node(tree, table_node, myfalse);
+ myhtml_tree_open_elements_pop_until_by_node(tree, table_node, false);
myhtml_tree_reset_insertion_mode_appropriately(tree);
break;
@@ -1878,9 +1878,9 @@ mybool_t myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t
default: {
// parse error
- tree->foster_parenting = mytrue;
+ tree->foster_parenting = true;
myhtml_insertion_mode_in_body(tree, token);
- tree->foster_parenting = myfalse;
+ tree->foster_parenting = false;
break;
}
@@ -1905,12 +1905,12 @@ mybool_t myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t
tree->orig_insert_mode = tree->insert_mode;
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE_TEXT;
- return mytrue;
+ return true;
}
else {
- tree->foster_parenting = mytrue;
+ tree->foster_parenting = true;
myhtml_insertion_mode_in_body(tree, token);
- tree->foster_parenting = myfalse;
+ tree->foster_parenting = false;
break;
}
@@ -1950,7 +1950,7 @@ mybool_t myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t
myhtml_tree_node_insert(tree, MyHTML_TAG_COLGROUP, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_COLUMN_GROUP;
- return mytrue;
+ return true;
}
case MyHTML_TAG_TBODY:
@@ -1973,7 +1973,7 @@ mybool_t myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t
myhtml_tree_node_insert(tree, MyHTML_TAG_TBODY, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE_BODY;
- return mytrue;
+ return true;
}
case MyHTML_TAG_TABLE:
@@ -1984,10 +1984,10 @@ mybool_t myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t
if(table_node == NULL)
break;
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_TABLE, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_TABLE, MyHTML_NAMESPACE_HTML, false);
myhtml_tree_reset_insertion_mode_appropriately(tree);
- return mytrue;
+ return true;
}
case MyHTML_TAG_STYLE:
@@ -2001,9 +2001,9 @@ mybool_t myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t
{
myhtml_token_node_wait_for_done(token);
if(myhtml_token_attr_match_case(tree->token, token, "type", 4, "hidden", 6) == NULL) {
- tree->foster_parenting = mytrue;
+ tree->foster_parenting = true;
myhtml_insertion_mode_in_body(tree, token);
- tree->foster_parenting = myfalse;
+ tree->foster_parenting = false;
break;
}
@@ -2035,35 +2035,35 @@ mybool_t myhtml_insertion_mode_in_table(myhtml_tree_t* tree, myhtml_token_node_t
default:
{
// parse error
- tree->foster_parenting = mytrue;
+ tree->foster_parenting = true;
myhtml_insertion_mode_in_body(tree, token);
- tree->foster_parenting = myfalse;
+ tree->foster_parenting = false;
break;
}
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_table_text(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_table_text(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
// skip NULL, we replaced earlier
if(token->tag_ctx_idx == MyHTML_TAG__TEXT)
{
if(token->type & MyHTML_TOKEN_TYPE_NULL)
- return myfalse;
+ return false;
myhtml_tree_token_list_append(tree->token_list, token);
}
else {
myhtml_tree_token_list_t* token_list = tree->token_list;
- mybool_t is_not_ws = myfalse;
+ bool is_not_ws = false;
for(size_t i = 0; i < token_list->length; i++) {
if((token_list->list[i]->type & MyHTML_TOKEN_TYPE_WHITESPACE) == 0) {
- is_not_ws = mytrue;
+ is_not_ws = true;
break;
}
}
@@ -2071,9 +2071,9 @@ mybool_t myhtml_insertion_mode_in_table_text(myhtml_tree_t* tree, myhtml_token_n
if(is_not_ws)
{
for(size_t i = 0; i < token_list->length; i++) {
- tree->foster_parenting = mytrue;
+ tree->foster_parenting = true;
myhtml_insertion_mode_in_body(tree, token_list->list[i]);
- tree->foster_parenting = myfalse;
+ tree->foster_parenting = false;
}
}
else {
@@ -2083,13 +2083,13 @@ mybool_t myhtml_insertion_mode_in_table_text(myhtml_tree_t* tree, myhtml_token_n
}
tree->insert_mode = tree->orig_insert_mode;
- return mytrue;
+ return true;
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_caption(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_caption(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -2108,7 +2108,7 @@ mybool_t myhtml_insertion_mode_in_caption(myhtml_tree_t* tree, myhtml_token_node
// // parse error
//}
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_CAPTION, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_CAPTION, MyHTML_NAMESPACE_HTML, false);
myhtml_tree_active_formatting_up_to_last_marker(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE;
@@ -2129,11 +2129,11 @@ mybool_t myhtml_insertion_mode_in_caption(myhtml_tree_t* tree, myhtml_token_node
// // parse error
//}
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_CAPTION, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_CAPTION, MyHTML_NAMESPACE_HTML, false);
myhtml_tree_active_formatting_up_to_last_marker(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE;
- return mytrue;
+ return true;
}
case MyHTML_TAG_BODY:
@@ -2179,11 +2179,11 @@ mybool_t myhtml_insertion_mode_in_caption(myhtml_tree_t* tree, myhtml_token_node
// // parse error
//}
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_CAPTION, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_CAPTION, MyHTML_NAMESPACE_HTML, false);
myhtml_tree_active_formatting_up_to_last_marker(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE;
- return mytrue;
+ return true;
}
default:
@@ -2191,10 +2191,10 @@ mybool_t myhtml_insertion_mode_in_caption(myhtml_tree_t* tree, myhtml_token_node
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_column_group(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_column_group(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -2234,7 +2234,7 @@ mybool_t myhtml_insertion_mode_in_column_group(myhtml_tree_t* tree, myhtml_token
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE;
- return mytrue;
+ return true;
}
break;
@@ -2262,7 +2262,7 @@ mybool_t myhtml_insertion_mode_in_column_group(myhtml_tree_t* tree, myhtml_token
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE;
- return mytrue;
+ return true;
}
// parse error
@@ -2308,7 +2308,7 @@ mybool_t myhtml_insertion_mode_in_column_group(myhtml_tree_t* tree, myhtml_token
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE;
- return mytrue;
+ return true;
}
// parse error
@@ -2317,10 +2317,10 @@ mybool_t myhtml_insertion_mode_in_column_group(myhtml_tree_t* tree, myhtml_token
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_table_body(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_table_body(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -2356,7 +2356,7 @@ mybool_t myhtml_insertion_mode_in_table_body(myhtml_tree_t* tree, myhtml_token_n
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE;
- return mytrue;
+ return true;
}
case MyHTML_TAG_BODY:
@@ -2398,7 +2398,7 @@ mybool_t myhtml_insertion_mode_in_table_body(myhtml_tree_t* tree, myhtml_token_n
myhtml_tree_node_insert(tree, MyHTML_TAG_TR, MyHTML_NAMESPACE_HTML);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_ROW;
- return mytrue;
+ return true;
}
case MyHTML_TAG_CAPTION:
@@ -2420,7 +2420,7 @@ mybool_t myhtml_insertion_mode_in_table_body(myhtml_tree_t* tree, myhtml_token_n
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE;
- return mytrue;
+ return true;
}
default:
@@ -2428,10 +2428,10 @@ mybool_t myhtml_insertion_mode_in_table_body(myhtml_tree_t* tree, myhtml_token_n
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_row(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_row(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -2464,7 +2464,7 @@ mybool_t myhtml_insertion_mode_in_row(myhtml_tree_t* tree, myhtml_token_node_t*
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE_BODY;
- return mytrue;
+ return true;
}
case MyHTML_TAG_TBODY:
@@ -2484,7 +2484,7 @@ mybool_t myhtml_insertion_mode_in_row(myhtml_tree_t* tree, myhtml_token_node_t*
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE_BODY;
- return mytrue;
+ return true;
}
default:
@@ -2523,7 +2523,7 @@ mybool_t myhtml_insertion_mode_in_row(myhtml_tree_t* tree, myhtml_token_node_t*
myhtml_tree_open_elements_pop(tree);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE_BODY;
- return mytrue;
+ return true;
}
default:
@@ -2531,10 +2531,10 @@ mybool_t myhtml_insertion_mode_in_row(myhtml_tree_t* tree, myhtml_token_node_t*
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_cell(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_cell(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -2558,7 +2558,7 @@ mybool_t myhtml_insertion_mode_in_cell(myhtml_tree_t* tree, myhtml_token_node_t*
// parse error
}
- myhtml_tree_open_elements_pop_until(tree, token->tag_ctx_idx, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, token->tag_ctx_idx, MyHTML_NAMESPACE_HTML, false);
myhtml_tree_active_formatting_up_to_last_marker(tree);
@@ -2595,7 +2595,7 @@ mybool_t myhtml_insertion_mode_in_cell(myhtml_tree_t* tree, myhtml_token_node_t*
myhtml_tree_close_cell(tree, node);
}
- return mytrue;
+ return true;
}
default:
@@ -2624,7 +2624,7 @@ mybool_t myhtml_insertion_mode_in_cell(myhtml_tree_t* tree, myhtml_token_node_t*
myhtml_tree_close_cell(tree, (td_node == NULL ? th_node : td_node));
- return mytrue;
+ return true;
}
default:
@@ -2632,10 +2632,10 @@ mybool_t myhtml_insertion_mode_in_cell(myhtml_tree_t* tree, myhtml_token_node_t*
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_select(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_select(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -2696,7 +2696,7 @@ mybool_t myhtml_insertion_mode_in_select(myhtml_tree_t* tree, myhtml_token_node_
// parse error
break;
- myhtml_tree_open_elements_pop_until_by_node(tree, select_node, myfalse);
+ myhtml_tree_open_elements_pop_until_by_node(tree, select_node, false);
myhtml_tree_reset_insertion_mode_appropriately(tree);
break;
@@ -2768,7 +2768,7 @@ mybool_t myhtml_insertion_mode_in_select(myhtml_tree_t* tree, myhtml_token_node_
if(select_node == NULL)
break;
- myhtml_tree_open_elements_pop_until_by_node(tree, select_node, myfalse);
+ myhtml_tree_open_elements_pop_until_by_node(tree, select_node, false);
myhtml_tree_reset_insertion_mode_appropriately(tree);
break;
@@ -2784,10 +2784,10 @@ mybool_t myhtml_insertion_mode_in_select(myhtml_tree_t* tree, myhtml_token_node_
if(select_node == NULL)
break;
- myhtml_tree_open_elements_pop_until_by_node(tree, select_node, myfalse);
+ myhtml_tree_open_elements_pop_until_by_node(tree, select_node, false);
myhtml_tree_reset_insertion_mode_appropriately(tree);
- return mytrue;
+ return true;
}
case MyHTML_TAG_SCRIPT:
@@ -2803,10 +2803,10 @@ mybool_t myhtml_insertion_mode_in_select(myhtml_tree_t* tree, myhtml_token_node_
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_select_in_table(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_select_in_table(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -2826,10 +2826,10 @@ mybool_t myhtml_insertion_mode_in_select_in_table(myhtml_tree_t* tree, myhtml_to
if(some_node == NULL)
break;
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_SELECT, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_SELECT, MyHTML_NAMESPACE_HTML, false);
myhtml_tree_reset_insertion_mode_appropriately(tree);
- return mytrue;
+ return true;
}
default:
@@ -2849,10 +2849,10 @@ mybool_t myhtml_insertion_mode_in_select_in_table(myhtml_tree_t* tree, myhtml_to
case MyHTML_TAG_TH:
{
// parse error
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_SELECT, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_SELECT, MyHTML_NAMESPACE_HTML, false);
myhtml_tree_reset_insertion_mode_appropriately(tree);
- return mytrue;
+ return true;
}
default:
@@ -2860,10 +2860,10 @@ mybool_t myhtml_insertion_mode_in_select_in_table(myhtml_tree_t* tree, myhtml_to
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_template(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_template(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -2904,21 +2904,21 @@ mybool_t myhtml_insertion_mode_in_template(myhtml_tree_t* tree, myhtml_token_nod
myhtml_tree_template_insertion_append(tree, MyHTML_INSERTION_MODE_IN_TABLE);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE;
- return mytrue;
+ return true;
case MyHTML_TAG_COL:
myhtml_tree_template_insertion_pop(tree);
myhtml_tree_template_insertion_append(tree, MyHTML_INSERTION_MODE_IN_COLUMN_GROUP);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_COLUMN_GROUP;
- return mytrue;
+ return true;
case MyHTML_TAG_TR:
myhtml_tree_template_insertion_pop(tree);
myhtml_tree_template_insertion_append(tree, MyHTML_INSERTION_MODE_IN_TABLE_BODY);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_TABLE_BODY;
- return mytrue;
+ return true;
case MyHTML_TAG_TD:
case MyHTML_TAG_TH:
@@ -2926,7 +2926,7 @@ mybool_t myhtml_insertion_mode_in_template(myhtml_tree_t* tree, myhtml_token_nod
myhtml_tree_template_insertion_append(tree, MyHTML_INSERTION_MODE_IN_ROW);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_ROW;
- return mytrue;
+ return true;
case MyHTML_TAG__END_OF_FILE:
{
@@ -2938,12 +2938,12 @@ mybool_t myhtml_insertion_mode_in_template(myhtml_tree_t* tree, myhtml_token_nod
}
// parse error
- myhtml_tree_open_elements_pop_until_by_node(tree, node, myfalse);
+ myhtml_tree_open_elements_pop_until_by_node(tree, node, false);
myhtml_tree_active_formatting_up_to_last_marker(tree);
myhtml_tree_template_insertion_pop(tree);
myhtml_tree_reset_insertion_mode_appropriately(tree);
- return mytrue;
+ return true;
}
default:
@@ -2951,14 +2951,14 @@ mybool_t myhtml_insertion_mode_in_template(myhtml_tree_t* tree, myhtml_token_nod
myhtml_tree_template_insertion_append(tree, MyHTML_INSERTION_MODE_IN_BODY);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
- return mytrue;
+ return true;
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_after_body(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_after_body(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -2976,7 +2976,7 @@ mybool_t myhtml_insertion_mode_after_body(myhtml_tree_t* tree, myhtml_token_node
default:
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
- return mytrue;
+ return true;
}
}
else {
@@ -2988,7 +2988,7 @@ mybool_t myhtml_insertion_mode_after_body(myhtml_tree_t* tree, myhtml_token_node
return myhtml_insertion_mode_in_body(tree, token);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
- return mytrue;
+ return true;
}
case MyHTML_TAG__COMMENT:
@@ -3025,14 +3025,14 @@ mybool_t myhtml_insertion_mode_after_body(myhtml_tree_t* tree, myhtml_token_node
default:
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
- return mytrue;
+ return true;
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_frameset(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_frameset(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -3128,10 +3128,10 @@ mybool_t myhtml_insertion_mode_in_frameset(myhtml_tree_t* tree, myhtml_token_nod
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_after_frameset(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_after_frameset(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
@@ -3192,15 +3192,15 @@ mybool_t myhtml_insertion_mode_after_frameset(myhtml_tree_t* tree, myhtml_token_
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_after_after_body(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_after_after_body(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE)
{
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
- return mytrue;
+ return true;
}
else {
switch (token->tag_ctx_idx)
@@ -3224,7 +3224,7 @@ mybool_t myhtml_insertion_mode_after_after_body(myhtml_tree_t* tree, myhtml_toke
return myhtml_insertion_mode_in_body(tree, token);
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
- return mytrue;
+ return true;
}
case MyHTML_TAG_HTML:
@@ -3237,17 +3237,17 @@ mybool_t myhtml_insertion_mode_after_after_body(myhtml_tree_t* tree, myhtml_toke
default:
tree->insert_mode = MyHTML_INSERTION_MODE_IN_BODY;
- return mytrue;
+ return true;
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_after_after_frameset(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_after_after_frameset(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE) {
- return myfalse;
+ return false;
}
else {
switch (token->tag_ctx_idx)
@@ -3295,10 +3295,10 @@ mybool_t myhtml_insertion_mode_after_after_frameset(myhtml_tree_t* tree, myhtml_
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_foreign_content_end_other(myhtml_tree_t* tree, myhtml_tree_node_t* current_node, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_foreign_content_end_other(myhtml_tree_t* tree, myhtml_tree_node_t* current_node, myhtml_token_node_t* token)
{
if(current_node->tag_idx != token->tag_ctx_idx) {
// parse error
@@ -3314,8 +3314,8 @@ mybool_t myhtml_insertion_mode_in_foreign_content_end_other(myhtml_tree_t* tree,
current_node = list[i];
if(current_node->tag_idx == token->tag_ctx_idx) {
- myhtml_tree_open_elements_pop_until_by_node(tree, current_node, myfalse);
- return myfalse;
+ myhtml_tree_open_elements_pop_until_by_node(tree, current_node, false);
+ return false;
}
i--;
@@ -3328,7 +3328,7 @@ mybool_t myhtml_insertion_mode_in_foreign_content_end_other(myhtml_tree_t* tree,
return tree->myhtml->insertion_func[tree->insert_mode](tree, token);
}
-mybool_t myhtml_insertion_mode_in_foreign_content_start_other(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_foreign_content_start_other(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
myhtml_tree_node_t* adjusted_node = myhtml_tree_adjusted_current_node(tree);
@@ -3358,10 +3358,10 @@ mybool_t myhtml_insertion_mode_in_foreign_content_start_other(myhtml_tree_t* tre
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_insertion_mode_in_foreign_content(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_insertion_mode_in_foreign_content(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(token->type & MyHTML_TOKEN_TYPE_CLOSE) {
myhtml_tree_node_t* current_node = myhtml_tree_current_node(tree);
@@ -3372,7 +3372,7 @@ mybool_t myhtml_insertion_mode_in_foreign_content(myhtml_tree_t* tree, myhtml_to
{
myhtml_tree_open_elements_pop(tree);
// TODO: now script is disable, skip this
- return myfalse;
+ return false;
}
return myhtml_insertion_mode_in_foreign_content_end_other(tree, current_node, token);
@@ -3470,7 +3470,7 @@ mybool_t myhtml_insertion_mode_in_foreign_content(myhtml_tree_t* tree, myhtml_to
myhtml_tree_is_html_integration_point(tree, current_node) ||
current_node->my_namespace == MyHTML_NAMESPACE_HTML));
- return mytrue;
+ return true;
}
}
@@ -3479,7 +3479,7 @@ mybool_t myhtml_insertion_mode_in_foreign_content(myhtml_tree_t* tree, myhtml_to
}
}
- return myfalse;
+ return false;
}
void myhtml_rules_stop_parsing(myhtml_tree_t* tree)
@@ -3487,7 +3487,7 @@ void myhtml_rules_stop_parsing(myhtml_tree_t* tree)
// THIS! IS! -(SPARTA!)- STOP PARSING
}
-mybool_t myhtml_rules_check_for_first_newline(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_rules_check_for_first_newline(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
if(tree->flags & MyHTML_TREE_FLAGS_PARSE_FLAG) {
if(tree->flags &MyHTML_TREE_FLAGS_PARSE_FLAG_EMIT_NEWLINE)
@@ -3504,31 +3504,31 @@ mybool_t myhtml_rules_check_for_first_newline(myhtml_tree_t* tree, myhtml_token_
if(token->length == 0) {
tree->flags ^= (tree->flags & MyHTML_TREE_FLAGS_PARSE_FLAG);
- return mytrue;
+ return true;
}
}
}
else
- return mytrue;
+ return true;
}
}
tree->flags ^= (tree->flags & MyHTML_TREE_FLAGS_PARSE_FLAG);
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_rules_tree_dispatcher(myhtml_tree_t* tree, myhtml_token_node_t* token)
+bool myhtml_rules_tree_dispatcher(myhtml_tree_t* tree, myhtml_token_node_t* token)
{
// for textarea && pre && listen
if(myhtml_rules_check_for_first_newline(tree, token))
- return myfalse;
+ return false;
if(tree->state_of_builder != MyHTML_TOKENIZER_STATE_DATA)
tree->state_of_builder = MyHTML_TOKENIZER_STATE_DATA;
- mybool_t reprocess = myfalse;
+ bool reprocess = false;
myhtml_tree_node_t* adjusted_node = myhtml_tree_adjusted_current_node(tree);
if(tree->open_elements->length == 0 || adjusted_node->my_namespace == MyHTML_NAMESPACE_HTML) {
@@ -3557,7 +3557,7 @@ mybool_t myhtml_rules_tree_dispatcher(myhtml_tree_t* tree, myhtml_token_node_t*
else
reprocess = myhtml_insertion_mode_in_foreign_content(tree, token);
- if(reprocess == myfalse) {
+ if(reprocess == false) {
tree->token_last_done = token;
}
diff --git a/source/myhtml/rules.h b/source/myhtml/rules.h
index e260558..4526df3 100644
--- a/source/myhtml/rules.h
+++ b/source/myhtml/rules.h
@@ -32,10 +32,10 @@ extern "C" {
myhtml_status_t myhtml_rules_init(myhtml_t* myhtml);
void myhtml_rules_stop_parsing(myhtml_tree_t* tree);
-mybool_t myhtml_rules_tree_dispatcher(myhtml_tree_t* tree, myhtml_token_node_t* token);
-mybool_t myhtml_insertion_mode_in_body_other_end_tag(myhtml_tree_t* tree, myhtml_token_node_t* token);
-mybool_t myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t* token);
-mybool_t myhtml_insertion_mode_in_template(myhtml_tree_t* tree, myhtml_token_node_t* token);
+bool myhtml_rules_tree_dispatcher(myhtml_tree_t* tree, myhtml_token_node_t* token);
+bool myhtml_insertion_mode_in_body_other_end_tag(myhtml_tree_t* tree, myhtml_token_node_t* token);
+bool myhtml_insertion_mode_in_body(myhtml_tree_t* tree, myhtml_token_node_t* token);
+bool myhtml_insertion_mode_in_template(myhtml_tree_t* tree, myhtml_token_node_t* token);
#ifdef __cplusplus
diff --git a/source/myhtml/tag.c b/source/myhtml/tag.c
index 6b4ed04..89b5576 100755
--- a/source/myhtml/tag.c
+++ b/source/myhtml/tag.c
@@ -1,5 +1,5 @@
/*
- Copyright 2015 Alexander Borisov
+ Copyright 2015-2016 Alexander Borisov
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -24,38 +24,21 @@ myhtml_tag_t * myhtml_tag_create(void)
return (myhtml_tag_t*)mymalloc(sizeof(myhtml_tag_t));
}
-myhtml_status_t myhtml_tag_init(myhtml_tag_t *tags)
+myhtml_status_t myhtml_tag_init(myhtml_tree_t *tree, myhtml_tag_t *tags)
{
- tags->context_size = 4096 * 50;
+ tags->context_size = MyHTML_TAG_LAST_ENTRY + 128;
tags->context = (myhtml_tag_context_t*)mymalloc(sizeof(myhtml_tag_context_t) * tags->context_size);
- if(tags->context == NULL) {
- tags->cache_name = NULL;
- tags->index_nodes = NULL;
-
+ if(tags->context == NULL)
return MyHTML_STATUS_TAGS_ERROR_MEMORY_ALLOCATION;
- }
-
- tags->cache_name_size = tags->context_size * 12;
- tags->cache_name = (char*)mymalloc(sizeof(char) * tags->cache_name_size);
- if(tags->cache_name == NULL) {
- tags->index_nodes = NULL;
-
- return MyHTML_STATUS_TAGS_ERROR_CACHE_MEMORY_ALLOCATION;
- }
+ tags->mchar_node = mchar_async_node_add(tree->myhtml->mchar);
+ tags->tree = mctree_create(32);
- tags->tree = mctree_create(32);
+ tags->mchar = tree->myhtml->mchar;
+ tags->tag_index = tree->myhtml->tag_index;
myhtml_tag_clean(tags);
- myhtml_tag_init_tags(tags);
- myhtml_tag_init_tags_categories(tags);
-
- tags->index_nodes = mcobject_async_create();
- mcobject_async_status_t mcstatus = mcobject_async_init(tags->index_nodes, 128, 4096, sizeof(myhtml_tag_index_node_t));
-
- if(mcstatus != MCOBJECT_ASYNC_STATUS_OK)
- return MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE;
return MyHTML_STATUS_OK;
}
@@ -66,7 +49,7 @@ void myhtml_tag_clean(myhtml_tag_t* tags)
myhtml_tag_context_clean(tags, tags->context_length);
myhtml_tag_context_add(tags);
- tags->cache_name_length = 0;
+ mchar_async_node_clean(tags->mchar, tags->mchar_node);
}
myhtml_tag_t * myhtml_tag_destroy(myhtml_tag_t* tags)
@@ -77,11 +60,9 @@ myhtml_tag_t * myhtml_tag_destroy(myhtml_tag_t* tags)
if(tags->context)
free(tags->context);
- if(tags->cache_name)
- free(tags->cache_name);
-
tags->tree = mctree_destroy(tags->tree);
- tags->index_nodes = mcobject_async_destroy(tags->index_nodes, mytrue);
+
+ mchar_async_node_delete(tags->mchar, tags->mchar_node);
free(tags);
@@ -96,13 +77,10 @@ myhtml_tag_index_t * myhtml_tag_index_create(void)
myhtml_status_t myhtml_tag_index_init(myhtml_tag_t* tags, myhtml_tag_index_t* idx_tags)
{
mcobject_async_status_t mcstatus;
- idx_tags->index_id = mcobject_async_node_add(tags->index_nodes, &mcstatus);
+ tags->mcobject_node = mcobject_async_node_add(tags->tag_index, &mcstatus);
- if(mcstatus != MCOBJECT_ASYNC_STATUS_OK) {
- idx_tags->tags = NULL;
-
- return MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE_NODE;
- }
+ if(mcstatus != MCOBJECT_ASYNC_STATUS_OK)
+ return MyHTML_STATUS_TAGS_ERROR_MCOBJECT_CREATE;
idx_tags->tags_size = tags->context_size;
idx_tags->tags_length = 0;
@@ -116,17 +94,17 @@ myhtml_status_t myhtml_tag_index_init(myhtml_tag_t* tags, myhtml_tag_index_t* id
void myhtml_tag_index_clean(myhtml_tag_t* tags, myhtml_tag_index_t* index_tags)
{
- mcobject_async_node_clean(tags->index_nodes, index_tags->index_id);
+ mcobject_async_node_clean(tags->tag_index, tags->mcobject_node);
memset(index_tags->tags, 0, sizeof(myhtml_tag_index_entry_t) * tags->context_length);
}
myhtml_tag_index_t * myhtml_tag_index_destroy(myhtml_tag_t* tags, myhtml_tag_index_t* index_tags)
{
+ mcobject_async_node_delete(tags->tag_index, tags->mcobject_node);
+
if(index_tags == NULL)
return NULL;
- mcobject_async_node_delete(tags->index_nodes, index_tags->index_id);
-
if(index_tags->tags) {
free(index_tags->tags);
index_tags->tags = NULL;
@@ -137,28 +115,37 @@ myhtml_tag_index_t * myhtml_tag_index_destroy(myhtml_tag_t* tags, myhtml_tag_ind
return NULL;
}
-void myhtml_tag_index_check_size(myhtml_tag_t* tags, myhtml_tag_index_t* index_tags)
+void myhtml_tag_index_check_size(myhtml_tag_t* tags, myhtml_tag_index_t* index_tags, myhtml_tag_id_t tag_id)
{
- if(index_tags->tags_size < tags->context_size) {
- index_tags->tags = (myhtml_tag_index_entry_t*)myrealloc(index_tags->tags,
- sizeof(myhtml_tag_index_entry_t) *
- tags->context_size);
+ if(tag_id >= index_tags->tags_size) {
+ size_t new_size = tags->context_size + MyHTML_TAG_LAST_ENTRY;
- memset(&index_tags->tags[index_tags->tags_size], 0, sizeof(myhtml_tag_index_entry_t)
- * (tags->context_size - index_tags->tags_size));
+ myhtml_tag_index_entry_t *index_entries = (myhtml_tag_index_entry_t*)myrealloc(index_tags->tags,
+ sizeof(myhtml_tag_index_entry_t) *
+ new_size);
- index_tags->tags_size = tags->context_size;
+ if(index_entries) {
+ index_tags->tags = index_entries;
+
+ memset(&index_tags->tags[index_tags->tags_size], 0, sizeof(myhtml_tag_index_entry_t)
+ * (new_size - index_tags->tags_size));
+
+ index_tags->tags_size = new_size;
+ }
+ else {
+ // TODO: error
+ }
}
}
myhtml_status_t myhtml_tag_index_add(myhtml_tag_t* tags, myhtml_tag_index_t* idx_tags, myhtml_tree_node_t* node)
{
- myhtml_tag_index_check_size(tags, idx_tags);
+ myhtml_tag_index_check_size(tags, idx_tags, node->tag_idx);
myhtml_tag_index_entry_t* tag = &idx_tags->tags[node->tag_idx];
mcobject_async_status_t mcstatus;
- myhtml_tag_index_node_t* new_node = mcobject_async_malloc(tags->index_nodes, idx_tags->index_id, &mcstatus);
+ myhtml_tag_index_node_t* new_node = mcobject_async_malloc(tags->tag_index, tags->mcobject_node, &mcstatus);
if(mcstatus != MCOBJECT_ASYNC_STATUS_OK)
return MyHTML_STATUS_TAGS_ERROR_MCOBJECT_MALLOC;
@@ -242,20 +229,9 @@ myhtml_tree_node_t * myhtml_tag_index_tree_node(myhtml_tag_index_node_t *index_n
}
myhtml_tag_id_t myhtml_tag_add(myhtml_tag_t* tags, const char* key, size_t key_size,
- enum myhtml_tokenizer_state data_parser, mybool_t to_lcase)
+ enum myhtml_tokenizer_state data_parser, bool to_lcase)
{
- // cache set
- size_t cache_begin = tags->cache_name_length;
-
- tags->cache_name_length += key_size + 1;
-
- if(tags->cache_name_length >= tags->cache_name_size) {
- tags->cache_name_size = tags->cache_name_length + (4096 * 12);
- tags->cache_name = (char*)myrealloc(tags->cache_name, // char is always 1
- sizeof(char) * tags->cache_name_size);
- }
-
- char* cache = &tags->cache_name[cache_begin];
+ char* cache = mchar_async_malloc(tags->mchar, tags->mchar_node, (key_size + 1));
if(to_lcase) {
size_t i;
@@ -272,8 +248,11 @@ myhtml_tag_id_t myhtml_tag_add(myhtml_tag_t* tags, const char* key, size_t key_s
// add tags
myhtml_tag_id_t new_ctx_id = myhtml_tag_context_get_free_id(tags);
- tags->context[new_ctx_id].id = new_ctx_id;
- tags->context[new_ctx_id].mctree_id = mctree_insert(tags->tree, cache, key_size, (void *)new_ctx_id, NULL);
+ mctree_insert(tags->tree, cache, key_size, (void *)new_ctx_id, NULL);
+
+ tags->context[new_ctx_id].id = new_ctx_id + MyHTML_TAG_LAST_ENTRY;
+ tags->context[new_ctx_id].name = cache;
+ tags->context[new_ctx_id].name_length = key_size;
tags->context[new_ctx_id].data_parser = data_parser;
memset(tags->context[new_ctx_id].cats, 0,
@@ -282,24 +261,56 @@ myhtml_tag_id_t myhtml_tag_add(myhtml_tag_t* tags, const char* key, size_t key_s
myhtml_tag_context_add(tags);
- return new_ctx_id;
+ return tags->context[new_ctx_id].id;
}
void myhtml_tag_set_category(myhtml_tag_t* tags, myhtml_tag_id_t tag_idx,
enum myhtml_namespace my_namespace, enum myhtml_tag_categories cats)
{
- tags->context[tag_idx].cats[my_namespace] = cats;
+ tags->context[(tag_idx - MyHTML_TAG_LAST_ENTRY)].cats[my_namespace] = cats;
}
-void myhtml_tag_print(myhtml_tag_t* tags, FILE* fh)
+const myhtml_tag_context_t * myhtml_tag_get_by_id(myhtml_tag_t* tags, myhtml_tag_id_t tag_id)
{
- myhtml_tag_context_t* ctx = tags->context;
- mctree_node_t* mct_nodes = tags->tree->nodes;
+ if(tag_id > MyHTML_TAG_LAST_ENTRY) {
+ tag_id -= MyHTML_TAG_LAST_ENTRY;
+ return &tags->context[tag_id];
+ }
+
+ return myhtml_tag_static_get_by_id(tag_id);
+}
+
+const myhtml_tag_context_t * myhtml_tag_get_by_name(myhtml_tag_t* tags, const char* name, size_t length)
+{
+ const myhtml_tag_context_t *ctx = myhtml_tag_static_search(name, length);
+
+ if(ctx)
+ return ctx;
+
+ mctree_index_t idx = mctree_search_lowercase(tags->tree, name, length);
+ size_t ctx_idx = (size_t)tags->tree->nodes[idx].value;
+
+ if(ctx_idx && ctx_idx < tags->context_length)
+ return &tags->context[ctx_idx];
+ return NULL;
+}
+
+void myhtml_tag_print(myhtml_tag_t* tags, FILE* fh)
+{
size_t i;
- for(i = MyHTML_TAG_FIRST_ENTRY; i <= MyHTML_TAG_LAST_ENTRY; i++)
+ for(i = MyHTML_TAG_FIRST_ENTRY; i < MyHTML_TAG_LAST_ENTRY; i++)
{
- fprintf(fh, "<%s id=\"%zu\">\n", mct_nodes[ ctx[i].mctree_id ].str, i);
+ const myhtml_tag_context_t *ctx = myhtml_tag_get_by_id(tags, i);
+
+ fprintf(fh, "<%s id=\"%zu\">\n", ctx->name, i);
+ }
+
+ for(i = (MyHTML_TAG_LAST_ENTRY + 1); i < tags->context_length; i++)
+ {
+ const myhtml_tag_context_t *ctx = myhtml_tag_get_by_id(tags, i);
+
+ fprintf(fh, "<%s id=\"%zu\">\n", ctx->name, i);
}
}
diff --git a/source/myhtml/tag.h b/source/myhtml/tag.h
index 136c12c..32616c0 100644
--- a/source/myhtml/tag.h
+++ b/source/myhtml/tag.h
@@ -26,30 +26,32 @@ extern "C" {
#include "myhtml/myosi.h"
-#include "myhtml/utils/mctree.h"
#include "myhtml/tag_const.h"
#include "myhtml/tokenizer.h"
#include "myhtml/tree.h"
+#include "myhtml/utils/mctree.h"
+#include "myhtml/utils/mchar_async.h"
#include "myhtml/utils/mcobject_async.h"
#define myhtml_tag_get(__tags__, __idx__, __attr__) __tags__->context[__idx__].__attr__
#define myhtml_tag_context_get_free_id(__tags__) __tags__->context_length
-#define myhtml_tag_context_clean(__tags__, __idx__) \
- __tags__->context[__idx__].id = 0; \
- __tags__->context[__idx__].mctree_id = 0; \
+#define myhtml_tag_context_clean(__tags__, __idx__) \
+ __tags__->context[__idx__].id = 0; \
+ __tags__->context[__idx__].name = NULL; \
+ __tags__->context[__idx__].name_length = 0; \
__tags__->context[__idx__].data_parser = MyHTML_TOKENIZER_STATE_DATA; \
memset(__tags__->context[__idx__].cats, MyHTML_TAG_CATEGORIES_UNDEF, sizeof(__tags__->context[__idx__].cats));
#define myhtml_tag_context_add(__tags__) \
- __tags__->context_length++; \
- if(__tags__->context_length == __tags__->context_size) { \
- __tags__->context_size += 4096; \
+ __tags__->context_length++; \
+ if(__tags__->context_length == __tags__->context_size) { \
+ __tags__->context_size += 4096; \
__tags__->context = (myhtml_tag_context_t*)myrealloc(__tags__->context, \
sizeof(myhtml_tag_context_t) * __tags__->context_size); \
- } \
+ } \
myhtml_tag_context_clean(__tags__, __tags__->context_length)
#define myhtml_tag_index_clean_node(__index_node__) \
@@ -72,43 +74,47 @@ struct myhtml_tag_index {
myhtml_tag_index_entry_t* tags;
size_t tags_length;
size_t tags_size;
-
- size_t index_id;
};
struct myhtml_tag_context {
- size_t id;
- mctree_index_t mctree_id;
+ myhtml_tag_id_t id;
+
+ const char* name;
+ size_t name_length;
enum myhtml_tokenizer_state data_parser;
enum myhtml_tag_categories cats[MyHTML_NAMESPACE_LAST_ENTRY];
}
typedef myhtml_tag_context_t;
+struct myhtml_tag_static_list {
+ const myhtml_tag_context_t* ctx;
+ size_t next;
+ size_t cur;
+}
+typedef myhtml_tag_static_list_t;
+
struct myhtml_tag {
mctree_t* tree;
- myhtml_tag_context_t *context;
+ myhtml_tag_context_t* context;
size_t context_length;
size_t context_size;
- char* cache_name;
- size_t cache_name_length;
- size_t cache_name_size;
+ size_t mcobject_node;
+ size_t mchar_node;
- mcobject_async_t* index_nodes;
+ mchar_async_t *mchar;
+ mcobject_async_t *tag_index;
};
myhtml_tag_t * myhtml_tag_create(void);
-myhtml_status_t myhtml_tag_init(myhtml_tag_t *tags);
-myhtml_tag_t * myhtml_tag_destroy(myhtml_tag_t* tags);
-
-void myhtml_tag_init_tags(myhtml_tag_t* tags);
-void myhtml_tag_init_tags_categories(myhtml_tag_t* tags);
+myhtml_status_t myhtml_tag_init(myhtml_tree_t *tree, myhtml_tag_t *tags);
void myhtml_tag_clean(myhtml_tag_t* tags);
+myhtml_tag_t * myhtml_tag_destroy(myhtml_tag_t* tags);
myhtml_tag_id_t myhtml_tag_add(myhtml_tag_t* tags, const char* key, size_t key_size,
- enum myhtml_tokenizer_state data_parser, mybool_t to_lcase);
+ enum myhtml_tokenizer_state data_parser, bool to_lcase);
void myhtml_tag_set_category(myhtml_tag_t* tags, myhtml_tag_id_t tag_idx,
enum myhtml_namespace my_namespace, enum myhtml_tag_categories cats);
@@ -128,6 +134,12 @@ myhtml_tree_node_t * myhtml_tag_index_tree_node(myhtml_tag_index_node_t *index_n
size_t myhtml_tag_index_entry_count(myhtml_tag_index_t* tag_index, myhtml_tag_id_t tag_id);
+const myhtml_tag_context_t * myhtml_tag_get_by_id(myhtml_tag_t* tags, myhtml_tag_id_t tag_id);
+const myhtml_tag_context_t * myhtml_tag_get_by_name(myhtml_tag_t* tags, const char* name, size_t length);
+
+const myhtml_tag_context_t * myhtml_tag_static_get_by_id(size_t idx);
+const myhtml_tag_context_t * myhtml_tag_static_search(const char* name, size_t length);
+
void myhtml_tag_print(myhtml_tag_t* tags, FILE* fh);
#ifdef __cplusplus
diff --git a/source/myhtml/tag_const.h b/source/myhtml/tag_const.h
index f76c87f..d835e19 100644
--- a/source/myhtml/tag_const.h
+++ b/source/myhtml/tag_const.h
@@ -1,25 +1,28 @@
/*
-Copyright 2015 Alexander Borisov
+ Copyright 2015 Alexander Borisov
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
-http://www.apache.org/licenses/LICENSE-2.0
+ http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
-Author: lex.borisov@gmail.com (Alexander Borisov)
+ Author: lex.borisov@gmail.com (Alexander Borisov)
*/
#ifndef MyHTML_TAG_CONST_H
#define MyHTML_TAG_CONST_H
#pragma once
+#define MyHTML_BASE_STATIC_SIZE 479
+
+
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/source/myhtml/tag_init.c b/source/myhtml/tag_init.c
index 9fc61f8..b9bf82c 100755
--- a/source/myhtml/tag_init.c
+++ b/source/myhtml/tag_init.c
@@ -1,537 +1,2625 @@
/*
-Copyright 2015 Alexander Borisov
+ Copyright 2015 Alexander Borisov
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
-http://www.apache.org/licenses/LICENSE-2.0
+ http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
-Author: lex.borisov@gmail.com (Alexander Borisov)
+ Author: lex.borisov@gmail.com (Alexander Borisov)
*/
-#include "myhtml/tag.h"
+#include "myhtml/utils/resources.h"
+#include "tag.h"
-void myhtml_tag_init_tags(myhtml_tag_t* tags)
+static const myhtml_tag_context_t myhtml_tag_base_list[MyHTML_TAG_LAST_ENTRY] =
{
- myhtml_tag_add(tags, "-text", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "!--", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "!doctype", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "a", 1, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "abbr", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "acronym", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "address", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "annotation-xml", 14, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "applet", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "area", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "article", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "aside", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "audio", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "b", 1, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "base", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "basefont", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "bdi", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "bdo", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "bgsound", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "big", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "blink", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "blockquote", 10, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "body", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "br", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "button", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "canvas", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "caption", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "center", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "cite", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "code", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "col", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "colgroup", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "command", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "comment", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "datalist", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "dd", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "del", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "details", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "dfn", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "dialog", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "dir", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "div", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "dl", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "dt", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "em", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "embed", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "fieldset", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "figcaption", 10, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "figure", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "font", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "footer", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "form", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "frame", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "frameset", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "h1", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "h2", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "h3", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "h4", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "h5", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "h6", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "head", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "header", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "hgroup", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "hr", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "html", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "i", 1, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "iframe", 6, MyHTML_TOKENIZER_STATE_RAWTEXT, myfalse);
- myhtml_tag_add(tags, "image", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "img", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "input", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "ins", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "isindex", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "kbd", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "keygen", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "label", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "legend", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "li", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "link", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "listing", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "main", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "map", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mark", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "marquee", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "menu", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "menuitem", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "meta", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "meter", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mtext", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "nav", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "nobr", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "noembed", 7, MyHTML_TOKENIZER_STATE_RAWTEXT, myfalse);
- myhtml_tag_add(tags, "noframes", 8, MyHTML_TOKENIZER_STATE_RAWTEXT, myfalse);
- myhtml_tag_add(tags, "noscript", 8, MyHTML_TOKENIZER_STATE_RAWTEXT, myfalse);
- myhtml_tag_add(tags, "object", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "ol", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "optgroup", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "option", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "output", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "p", 1, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "param", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "plaintext", 9, MyHTML_TOKENIZER_STATE_PLAINTEXT, myfalse);
- myhtml_tag_add(tags, "pre", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "progress", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "q", 1, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "rb", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "rp", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "rt", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "rtc", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "ruby", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "s", 1, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "samp", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "script", 6, MyHTML_TOKENIZER_STATE_SCRIPT_DATA, myfalse);
- myhtml_tag_add(tags, "section", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "select", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "small", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "source", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "span", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "strike", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "strong", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "style", 5, MyHTML_TOKENIZER_STATE_RAWTEXT, myfalse);
- myhtml_tag_add(tags, "sub", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "summary", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "sup", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "svg", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "table", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "tbody", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "td", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "template", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "textarea", 8, MyHTML_TOKENIZER_STATE_RCDATA, myfalse);
- myhtml_tag_add(tags, "tfoot", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "th", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "thead", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "time", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "title", 5, MyHTML_TOKENIZER_STATE_RCDATA, myfalse);
- myhtml_tag_add(tags, "tr", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "track", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "tt", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "u", 1, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "ul", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "var", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "video", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "wbr", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "xmp", 3, MyHTML_TOKENIZER_STATE_RAWTEXT, myfalse);
- myhtml_tag_add(tags, "altGlyph", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "altGlyphDef", 11, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "altGlyphItem", 12, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "animate", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "animateColor", 12, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "animateMotion", 13, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "animateTransform", 16, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "circle", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "clipPath", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "color-profile", 13, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "cursor", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "defs", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "desc", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "ellipse", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feBlend", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feColorMatrix", 13, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feComponentTransfer", 19, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feComposite", 11, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feConvolveMatrix", 16, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feDiffuseLighting", 17, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feDisplacementMap", 17, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feDistantLight", 14, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feDropShadow", 12, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feFlood", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feFuncA", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feFuncB", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feFuncG", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feFuncR", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feGaussianBlur", 14, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feImage", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feMerge", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feMergeNode", 11, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feMorphology", 12, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feOffset", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "fePointLight", 12, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feSpecularLighting", 18, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feSpotLight", 11, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feTile", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "feTurbulence", 12, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "filter", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "font-face", 9, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "font-face-format", 16, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "font-face-name", 14, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "font-face-src", 13, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "font-face-uri", 13, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "foreignObject", 13, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "g", 1, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "glyph", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "glyphRef", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "hkern", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "line", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "linearGradient", 14, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "marker", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mask", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "metadata", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "missing-glyph", 13, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mpath", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "path", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "pattern", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "polygon", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "polyline", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "radialGradient", 14, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "rect", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "set", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "stop", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "switch", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "symbol", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "text", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "textPath", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "tref", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "tspan", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "use", 3, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "view", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "vkern", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "math", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "maction", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "maligngroup", 11, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "malignmark", 10, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "menclose", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "merror", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mfenced", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mfrac", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mglyph", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mi", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mlabeledtr", 10, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mlongdiv", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mmultiscripts", 13, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mn", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mo", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mover", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mpadded", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mphantom", 8, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mroot", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mrow", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "ms", 2, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mscarries", 9, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mscarry", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "msgroup", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "msline", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mspace", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "msqrt", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "msrow", 5, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mstack", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "mstyle", 6, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "msub", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "msup", 4, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "msubsup", 7, MyHTML_TOKENIZER_STATE_DATA, myfalse);
- myhtml_tag_add(tags, "-end-of-file", 12, MyHTML_TOKENIZER_STATE_DATA, myfalse);
+ {MyHTML_TAG__UNDEF, "-undef", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG__TEXT, "-text", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG__COMMENT, "_comment", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG__DOCTYPE, "!doctype", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_A, "a", 1, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ABBR, "abbr", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ACRONYM, "acronym", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ADDRESS, "address", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ANNOTATION_XML, "annotation-xml", 14, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_APPLET, "applet", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_AREA, "area", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ARTICLE, "article", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ASIDE, "aside", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_AUDIO, "audio", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_B, "b", 1, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BASE, "base", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BASEFONT, "basefont", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BDI, "bdi", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BDO, "bdo", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BGSOUND, "bgsound", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BIG, "big", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BLINK, "blink", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BLOCKQUOTE, "blockquote", 10, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BODY, "body", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BR, "br", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_BUTTON, "button", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_CANVAS, "canvas", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_CAPTION, "caption", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_CENTER, "center", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_CITE, "cite", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_CODE, "code", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_COL, "col", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_COLGROUP, "colgroup", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_COMMAND, "command", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_COMMENT, "comment", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DATALIST, "datalist", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DD, "dd", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DEL, "del", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DETAILS, "details", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DFN, "dfn", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DIALOG, "dialog", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DIR, "dir", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DIV, "div", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DL, "dl", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DT, "dt", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_EM, "em", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_EMBED, "embed", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FIELDSET, "fieldset", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FIGCAPTION, "figcaption", 10, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FIGURE, "figure", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FONT, "font", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FOOTER, "footer", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FORM, "form", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FRAME, "frame", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FRAMESET, "frameset", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_H1, "h1", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_H2, "h2", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_H3, "h3", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_H4, "h4", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_H5, "h5", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_H6, "h6", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_HEAD, "head", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_HEADER, "header", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_HGROUP, "hgroup", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_HR, "hr", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_HTML, "html", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON|MyHTML_TAG_CATEGORIES_SCOPE_TABLE,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_I, "i", 1, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_IFRAME, "iframe", 6, MyHTML_TOKENIZER_STATE_RAWTEXT,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_IMAGE, "image", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_IMG, "img", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_INPUT, "input", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_INS, "ins", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ISINDEX, "isindex", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_KBD, "kbd", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_KEYGEN, "keygen", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_LABEL, "label", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_LEGEND, "legend", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_LI, "li", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_LINK, "link", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_LISTING, "listing", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MAIN, "main", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MAP, "map", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MARK, "mark", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MARQUEE, "marquee", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MENU, "menu", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MENUITEM, "menuitem", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_META, "meta", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_METER, "meter", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MTEXT, "mtext", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_NAV, "nav", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_NOBR, "nobr", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_NOEMBED, "noembed", 7, MyHTML_TOKENIZER_STATE_RAWTEXT,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_NOFRAMES, "noframes", 8, MyHTML_TOKENIZER_STATE_RAWTEXT,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_NOSCRIPT, "noscript", 8, MyHTML_TOKENIZER_STATE_RAWTEXT,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_OBJECT, "object", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_OL, "ol", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_OPTGROUP, "optgroup", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY|MyHTML_TAG_CATEGORIES_SCOPE_SELECT,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_OPTION, "option", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY|MyHTML_TAG_CATEGORIES_SCOPE_SELECT,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_OUTPUT, "output", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_P, "p", 1, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_PARAM, "param", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_PLAINTEXT, "plaintext", 9, MyHTML_TOKENIZER_STATE_PLAINTEXT,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_PRE, "pre", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_PROGRESS, "progress", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_Q, "q", 1, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_RB, "rb", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_RP, "rp", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_RT, "rt", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_RTC, "rtc", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_RUBY, "ruby", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_S, "s", 1, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SAMP, "samp", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SCRIPT, "script", 6, MyHTML_TOKENIZER_STATE_SCRIPT_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SECTION, "section", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SELECT, "select", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SMALL, "small", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SOURCE, "source", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SPAN, "span", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_STRIKE, "strike", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_STRONG, "strong", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_STYLE, "style", 5, MyHTML_TOKENIZER_STATE_RAWTEXT,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SUB, "sub", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SUMMARY, "summary", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SUP, "sup", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SVG, "svg", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TABLE, "table", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON|MyHTML_TAG_CATEGORIES_SCOPE_TABLE,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TBODY, "tbody", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TD, "td", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TEMPLATE, "template", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON|MyHTML_TAG_CATEGORIES_SCOPE_TABLE,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TEXTAREA, "textarea", 8, MyHTML_TOKENIZER_STATE_RCDATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TFOOT, "tfoot", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TH, "th", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_THEAD, "thead", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TIME, "time", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TITLE, "title", 5, MyHTML_TOKENIZER_STATE_RCDATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TR, "tr", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TRACK, "track", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TT, "tt", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_U, "u", 1, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_FORMATTING,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_UL, "ul", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_VAR, "var", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_VIDEO, "video", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_WBR, "wbr", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_XMP, "xmp", 3, MyHTML_TOKENIZER_STATE_RAWTEXT,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ALTGLYPH, "altGlyph", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ALTGLYPHDEF, "altGlyphDef", 11, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ALTGLYPHITEM, "altGlyphItem", 12, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ANIMATE, "animate", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ANIMATECOLOR, "animateColor", 12, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ANIMATEMOTION, "animateMotion", 13, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ANIMATETRANSFORM, "animateTransform", 16, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_CIRCLE, "circle", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_CLIPPATH, "clipPath", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_COLOR_PROFILE, "color-profile", 13, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_CURSOR, "cursor", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DEFS, "defs", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_DESC, "desc", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_ELLIPSE, "ellipse", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEBLEND, "feBlend", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FECOLORMATRIX, "feColorMatrix", 13, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FECOMPONENTTRANSFER, "feComponentTransfer", 19, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FECOMPOSITE, "feComposite", 11, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FECONVOLVEMATRIX, "feConvolveMatrix", 16, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEDIFFUSELIGHTING, "feDiffuseLighting", 17, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEDISPLACEMENTMAP, "feDisplacementMap", 17, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEDISTANTLIGHT, "feDistantLight", 14, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEDROPSHADOW, "feDropShadow", 12, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEFLOOD, "feFlood", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEFUNCA, "feFuncA", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEFUNCB, "feFuncB", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEFUNCG, "feFuncG", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEFUNCR, "feFuncR", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEGAUSSIANBLUR, "feGaussianBlur", 14, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEIMAGE, "feImage", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEMERGE, "feMerge", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEMERGENODE, "feMergeNode", 11, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEMORPHOLOGY, "feMorphology", 12, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEOFFSET, "feOffset", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FEPOINTLIGHT, "fePointLight", 12, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FESPECULARLIGHTING, "feSpecularLighting", 18, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FESPOTLIGHT, "feSpotLight", 11, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FETILE, "feTile", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FETURBULENCE, "feTurbulence", 12, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FILTER, "filter", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FONT_FACE, "font-face", 9, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FONT_FACE_FORMAT, "font-face-format", 16, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FONT_FACE_NAME, "font-face-name", 14, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FONT_FACE_SRC, "font-face-src", 13, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FONT_FACE_URI, "font-face-uri", 13, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_FOREIGNOBJECT, "foreignObject", 13, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_G, "g", 1, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_GLYPH, "glyph", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_GLYPHREF, "glyphRef", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_HKERN, "hkern", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_LINE, "line", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_LINEARGRADIENT, "linearGradient", 14, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MARKER, "marker", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MASK, "mask", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_METADATA, "metadata", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MISSING_GLYPH, "missing-glyph", 13, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MPATH, "mpath", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_PATH, "path", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_PATTERN, "pattern", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_POLYGON, "polygon", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_POLYLINE, "polyline", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_RADIALGRADIENT, "radialGradient", 14, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_RECT, "rect", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SET, "set", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_STOP, "stop", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SWITCH, "switch", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_SYMBOL, "symbol", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TEXT, "text", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TEXTPATH, "textPath", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TREF, "tref", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_TSPAN, "tspan", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_USE, "use", 3, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_VIEW, "view", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_VKERN, "vkern", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MATH, "math", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MACTION, "maction", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MALIGNGROUP, "maligngroup", 11, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MALIGNMARK, "malignmark", 10, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MENCLOSE, "menclose", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MERROR, "merror", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MFENCED, "mfenced", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MFRAC, "mfrac", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MGLYPH, "mglyph", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MI, "mi", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MLABELEDTR, "mlabeledtr", 10, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MLONGDIV, "mlongdiv", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MMULTISCRIPTS, "mmultiscripts", 13, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MN, "mn", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MO, "mo", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MOVER, "mover", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MPADDED, "mpadded", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MPHANTOM, "mphantom", 8, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MROOT, "mroot", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MROW, "mrow", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MS, "ms", 2, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSCARRIES, "mscarries", 9, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSCARRY, "mscarry", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSGROUP, "msgroup", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSLINE, "msline", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSPACE, "mspace", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSQRT, "msqrt", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSROW, "msrow", 5, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSTACK, "mstack", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSTYLE, "mstyle", 6, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSUB, "msub", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSUP, "msup", 4, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG_MSUBSUP, "msubsup", 7, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ },
+ {MyHTML_TAG__END_OF_FILE, "-end-of-file", 12, MyHTML_TOKENIZER_STATE_DATA,
+ {
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY, MyHTML_TAG_CATEGORIES_ORDINARY,
+ MyHTML_TAG_CATEGORIES_ORDINARY
+ }
+ }
+};
+
+
+static const myhtml_tag_static_list_t myhtml_tag_static_list_index[] =
+{
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_USE], 0, 6},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_H5], 480, 8},
+ {&myhtml_tag_base_list[MyHTML_TAG_I], 481, 9},
+ {&myhtml_tag_base_list[MyHTML_TAG_DIALOG], 0, 10},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_BODY], 0, 12},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_ANIMATECOLOR], 0, 14},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_BUTTON], 0, 16},
+ {&myhtml_tag_base_list[MyHTML_TAG_DEFS], 0, 17},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_PATTERN], 482, 21},
+ {&myhtml_tag_base_list[MyHTML_TAG_FIGURE], 483, 22},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_B], 484, 25},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_OL], 0, 27},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_DETAILS], 485, 29},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEBLEND], 486, 30},
+ {&myhtml_tag_base_list[MyHTML_TAG_MN], 0, 31},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_ELLIPSE], 0, 37},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEFUNCB], 0, 39},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEDROPSHADOW], 0, 41},
+ {&myhtml_tag_base_list[MyHTML_TAG_THEAD], 0, 42},
+ {&myhtml_tag_base_list[MyHTML_TAG_FETURBULENCE], 0, 43},
+ {&myhtml_tag_base_list[MyHTML_TAG_LINE], 0, 44},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSTACK], 0, 45},
+ {&myhtml_tag_base_list[MyHTML_TAG_DL], 0, 46},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_SCRIPT], 487, 48},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FONT_FACE_NAME], 0, 50},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_PLAINTEXT], 0, 53},
+ {&myhtml_tag_base_list[MyHTML_TAG_NOSCRIPT], 0, 54},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_PROGRESS], 0, 56},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FOREIGNOBJECT], 0, 58},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MAIN], 0, 61},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_BDO], 0, 63},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_ISINDEX], 0, 65},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_INPUT], 0, 68},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_CAPTION], 0, 70},
+ {&myhtml_tag_base_list[MyHTML_TAG_H3], 0, 71},
+ {&myhtml_tag_base_list[MyHTML_TAG_G], 0, 72},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_LINEARGRADIENT], 0, 79},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_ANIMATETRANSFORM], 0, 82},
+ {&myhtml_tag_base_list[MyHTML_TAG_ARTICLE], 488, 83},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_XMP], 0, 85},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_TT], 0, 89},
+ {&myhtml_tag_base_list[MyHTML_TAG_SVG], 489, 90},
+ {&myhtml_tag_base_list[MyHTML_TAG_P], 490, 91},
+ {&myhtml_tag_base_list[MyHTML_TAG_RUBY], 0, 92},
+ {&myhtml_tag_base_list[MyHTML_TAG_FECOLORMATRIX], 0, 93},
+ {&myhtml_tag_base_list[MyHTML_TAG_TSPAN], 491, 94},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MMULTISCRIPTS], 0, 96},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSUB], 0, 98},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_ALTGLYPHDEF], 0, 102},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_RT], 492, 104},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_BIG], 494, 106},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FONT_FACE_FORMAT], 0, 108},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FECOMPONENTTRANSFER], 0, 114},
+ {&myhtml_tag_base_list[MyHTML_TAG_FIGCAPTION], 0, 115},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_STYLE], 0, 117},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_CIRCLE], 0, 120},
+ {&myhtml_tag_base_list[MyHTML_TAG_VAR], 0, 121},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_VIEW], 0, 126},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_ASIDE], 0, 128},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_PATH], 0, 130},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_NOFRAMES], 0, 132},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_H1], 0, 134},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_LEGEND], 0, 136},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_OBJECT], 495, 138},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MFENCED], 496, 140},
+ {&myhtml_tag_base_list[MyHTML_TAG_META], 0, 141},
+ {&myhtml_tag_base_list[MyHTML_TAG_NAV], 0, 142},
+ {&myhtml_tag_base_list[MyHTML_TAG_TABLE], 497, 143},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_RP], 0, 150},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MROW], 0, 153},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MPATH], 0, 159},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MS], 0, 163},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_ABBR], 0, 165},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_LI], 0, 168},
+ {&myhtml_tag_base_list[MyHTML_TAG_SUMMARY], 498, 169},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_TEXT], 0, 177},
+ {&myhtml_tag_base_list[MyHTML_TAG_CENTER], 499, 178},
+ {&myhtml_tag_base_list[MyHTML_TAG_TH], 500, 179},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_AUDIO], 0, 188},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MARK], 502, 190},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSROW], 0, 191},
+ {&myhtml_tag_base_list[MyHTML_TAG_DIR], 0, 192},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSGROUP], 503, 195},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_HKERN], 504, 200},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEPOINTLIGHT], 0, 201},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_EMBED], 0, 206},
+ {&myhtml_tag_base_list[MyHTML_TAG_RECT], 505, 207},
+ {&myhtml_tag_base_list[MyHTML_TAG_PARAM], 507, 208},
+ {&myhtml_tag_base_list[MyHTML_TAG_DT], 508, 209},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEDISPLACEMENTMAP], 0, 214},
+ {&myhtml_tag_base_list[MyHTML_TAG_BDI], 0, 215},
+ {&myhtml_tag_base_list[MyHTML_TAG_H6], 0, 216},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_BLINK], 0, 220},
+ {&myhtml_tag_base_list[MyHTML_TAG_MAP], 509, 221},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_GLYPHREF], 0, 224},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_ALTGLYPH], 0, 233},
+ {&myhtml_tag_base_list[MyHTML_TAG_TEXTPATH], 510, 234},
+ {&myhtml_tag_base_list[MyHTML_TAG__TEXT], 0, 235},
+ {&myhtml_tag_base_list[MyHTML_TAG_VKERN], 511, 236},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG__UNDEF], 0, 238},
+ {&myhtml_tag_base_list[MyHTML_TAG_MENU], 0, 239},
+ {&myhtml_tag_base_list[MyHTML_TAG_CITE], 513, 240},
+ {&myhtml_tag_base_list[MyHTML_TAG_LINK], 0, 241},
+ {&myhtml_tag_base_list[MyHTML_TAG_HR], 0, 242},
+ {&myhtml_tag_base_list[MyHTML_TAG_RADIALGRADIENT], 0, 243},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_HEADER], 0, 245},
+ {&myhtml_tag_base_list[MyHTML_TAG_ACRONYM], 0, 246},
+ {&myhtml_tag_base_list[MyHTML_TAG_TBODY], 0, 247},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MO], 0, 249},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSCARRIES], 0, 251},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEFUNCG], 0, 256},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FRAME], 0, 258},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_SET], 0, 264},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEIMAGE], 514, 265},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_SAMP], 515, 268},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_TRACK], 0, 270},
+ {&myhtml_tag_base_list[MyHTML_TAG_LISTING], 0, 271},
+ {&myhtml_tag_base_list[MyHTML_TAG_FONT_FACE], 0, 272},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_AREA], 0, 275},
+ {&myhtml_tag_base_list[MyHTML_TAG_SYMBOL], 0, 276},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_U], 0, 278},
+ {&myhtml_tag_base_list[MyHTML_TAG_H4], 516, 279},
+ {&myhtml_tag_base_list[MyHTML_TAG_ANIMATEMOTION], 0, 280},
+ {&myhtml_tag_base_list[MyHTML_TAG_SUB], 518, 281},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEFUNCA], 0, 283},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_S], 519, 293},
+ {&myhtml_tag_base_list[MyHTML_TAG_FIELDSET], 520, 294},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_INS], 0, 301},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_OPTGROUP], 0, 304},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_SPAN], 0, 306},
+ {&myhtml_tag_base_list[MyHTML_TAG_BLOCKQUOTE], 0, 307},
+ {&myhtml_tag_base_list[MyHTML_TAG_DEL], 522, 308},
+ {&myhtml_tag_base_list[MyHTML_TAG_A], 0, 309},
+ {&myhtml_tag_base_list[MyHTML_TAG_SMALL], 0, 310},
+ {&myhtml_tag_base_list[MyHTML_TAG_BR], 523, 311},
+ {&myhtml_tag_base_list[MyHTML_TAG_MARKER], 524, 312},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FOOTER], 525, 314},
+ {&myhtml_tag_base_list[MyHTML_TAG_BASE], 0, 315},
+ {&myhtml_tag_base_list[MyHTML_TAG_Q], 526, 316},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MATH], 0, 319},
+ {&myhtml_tag_base_list[MyHTML_TAG__DOCTYPE], 0, 320},
+ {&myhtml_tag_base_list[MyHTML_TAG_SUP], 527, 321},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_DESC], 0, 323},
+ {&myhtml_tag_base_list[MyHTML_TAG_TEMPLATE], 0, 324},
+ {&myhtml_tag_base_list[MyHTML_TAG_COMMAND], 0, 325},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_RTC], 0, 329},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_IMAGE], 0, 336},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_METER], 528, 340},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_H2], 0, 342},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FESPOTLIGHT], 0, 344},
+ {&myhtml_tag_base_list[MyHTML_TAG_NOBR], 0, 345},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_VIDEO], 0, 347},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_IMG], 0, 353},
+ {&myhtml_tag_base_list[MyHTML_TAG_DATALIST], 0, 354},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSCARRY], 0, 356},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_NOEMBED], 0, 361},
+ {&myhtml_tag_base_list[MyHTML_TAG_DD], 529, 362},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_UL], 0, 365},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MI], 0, 378},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_HTML], 0, 382},
+ {&myhtml_tag_base_list[MyHTML_TAG_FESPECULARLIGHTING], 0, 383},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FONT], 530, 387},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_SWITCH], 0, 390},
+ {&myhtml_tag_base_list[MyHTML_TAG_MLONGDIV], 0, 391},
+ {&myhtml_tag_base_list[MyHTML_TAG_GLYPH], 0, 392},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEDISTANTLIGHT], 0, 394},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_COMMENT], 0, 396},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_TIME], 0, 402},
+ {&myhtml_tag_base_list[MyHTML_TAG_IFRAME], 0, 403},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FORM], 0, 405},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_PRE], 531, 407},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FECONVOLVEMATRIX], 0, 409},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEGAUSSIANBLUR], 0, 412},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_BASEFONT], 532, 414},
+ {&myhtml_tag_base_list[MyHTML_TAG_SECTION], 533, 415},
+ {&myhtml_tag_base_list[MyHTML_TAG_MENCLOSE], 0, 416},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_ALTGLYPHITEM], 0, 421},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MARQUEE], 0, 424},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_DFN], 0, 429},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSLINE], 534, 432},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_DIV], 536, 434},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_TEXTAREA], 0, 444},
+ {&myhtml_tag_base_list[MyHTML_TAG_POLYLINE], 0, 445},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEFUNCR], 0, 446},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_APPLET], 537, 453},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSUP], 0, 454},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_CLIPPATH], 0, 460},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_COL], 538, 463},
+ {&myhtml_tag_base_list[MyHTML_TAG_EM], 0, 464},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MTEXT], 539, 472},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_MGLYPH], 0, 478},
+ {NULL, 0},
+ {&myhtml_tag_base_list[MyHTML_TAG_KBD], 0, 480},
+ {&myhtml_tag_base_list[MyHTML_TAG_ADDRESS], 0, 481},
+ {&myhtml_tag_base_list[MyHTML_TAG_POLYGON], 0, 482},
+ {&myhtml_tag_base_list[MyHTML_TAG_FETILE], 0, 483},
+ {&myhtml_tag_base_list[MyHTML_TAG__COMMENT], 0, 484},
+ {&myhtml_tag_base_list[MyHTML_TAG_FONT_FACE_SRC], 0, 485},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEFLOOD], 0, 486},
+ {&myhtml_tag_base_list[MyHTML_TAG_SELECT], 0, 487},
+ {&myhtml_tag_base_list[MyHTML_TAG_ANIMATE], 0, 488},
+ {&myhtml_tag_base_list[MyHTML_TAG_COLGROUP], 0, 489},
+ {&myhtml_tag_base_list[MyHTML_TAG_ANNOTATION_XML], 0, 490},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEMORPHOLOGY], 0, 491},
+ {&myhtml_tag_base_list[MyHTML_TAG_TR], 493, 492},
+ {&myhtml_tag_base_list[MyHTML_TAG_BGSOUND], 0, 493},
+ {&myhtml_tag_base_list[MyHTML_TAG_MACTION], 0, 494},
+ {&myhtml_tag_base_list[MyHTML_TAG_OUTPUT], 0, 495},
+ {&myhtml_tag_base_list[MyHTML_TAG_MPADDED], 0, 496},
+ {&myhtml_tag_base_list[MyHTML_TAG_TITLE], 0, 497},
+ {&myhtml_tag_base_list[MyHTML_TAG_MALIGNGROUP], 0, 498},
+ {&myhtml_tag_base_list[MyHTML_TAG_CURSOR], 0, 499},
+ {&myhtml_tag_base_list[MyHTML_TAG_STRONG], 501, 500},
+ {&myhtml_tag_base_list[MyHTML_TAG_COLOR_PROFILE], 0, 501},
+ {&myhtml_tag_base_list[MyHTML_TAG_MASK], 0, 502},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSUBSUP], 0, 503},
+ {&myhtml_tag_base_list[MyHTML_TAG_MLABELEDTR], 0, 504},
+ {&myhtml_tag_base_list[MyHTML_TAG_MENUITEM], 506, 505},
+ {&myhtml_tag_base_list[MyHTML_TAG_MPHANTOM], 0, 506},
+ {&myhtml_tag_base_list[MyHTML_TAG_KEYGEN], 0, 507},
+ {&myhtml_tag_base_list[MyHTML_TAG_TD], 0, 508},
+ {&myhtml_tag_base_list[MyHTML_TAG_TFOOT], 0, 509},
+ {&myhtml_tag_base_list[MyHTML_TAG_MALIGNMARK], 0, 510},
+ {&myhtml_tag_base_list[MyHTML_TAG_STRIKE], 512, 511},
+ {&myhtml_tag_base_list[MyHTML_TAG_SOURCE], 0, 512},
+ {&myhtml_tag_base_list[MyHTML_TAG_CODE], 0, 513},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEMERGE], 0, 514},
+ {&myhtml_tag_base_list[MyHTML_TAG_STOP], 0, 515},
+ {&myhtml_tag_base_list[MyHTML_TAG_FECOMPOSITE], 517, 516},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEMERGENODE], 0, 517},
+ {&myhtml_tag_base_list[MyHTML_TAG_METADATA], 0, 518},
+ {&myhtml_tag_base_list[MyHTML_TAG_CANVAS], 0, 519},
+ {&myhtml_tag_base_list[MyHTML_TAG_FRAMESET], 521, 520},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEOFFSET], 0, 521},
+ {&myhtml_tag_base_list[MyHTML_TAG_MFRAC], 0, 522},
+ {&myhtml_tag_base_list[MyHTML_TAG_RB], 0, 523},
+ {&myhtml_tag_base_list[MyHTML_TAG_MERROR], 0, 524},
+ {&myhtml_tag_base_list[MyHTML_TAG_FILTER], 0, 525},
+ {&myhtml_tag_base_list[MyHTML_TAG_MISSING_GLYPH], 0, 526},
+ {&myhtml_tag_base_list[MyHTML_TAG_FONT_FACE_URI], 0, 527},
+ {&myhtml_tag_base_list[MyHTML_TAG_MOVER], 0, 528},
+ {&myhtml_tag_base_list[MyHTML_TAG_LABEL], 0, 529},
+ {&myhtml_tag_base_list[MyHTML_TAG_TREF], 0, 530},
+ {&myhtml_tag_base_list[MyHTML_TAG_HEAD], 0, 531},
+ {&myhtml_tag_base_list[MyHTML_TAG__END_OF_FILE], 0, 532},
+ {&myhtml_tag_base_list[MyHTML_TAG_FEDIFFUSELIGHTING], 0, 533},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSPACE], 535, 534},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSTYLE], 0, 535},
+ {&myhtml_tag_base_list[MyHTML_TAG_HGROUP], 0, 536},
+ {&myhtml_tag_base_list[MyHTML_TAG_OPTION], 0, 537},
+ {&myhtml_tag_base_list[MyHTML_TAG_WBR], 0, 538},
+ {&myhtml_tag_base_list[MyHTML_TAG_MROOT], 540, 539},
+ {&myhtml_tag_base_list[MyHTML_TAG_MSQRT], 0, 540},
+
+};
+
+
+const myhtml_tag_context_t * myhtml_tag_static_search(const char* name, size_t length)
+{
+ size_t idx = ((myhtml_string_chars_lowercase_map[ (const unsigned char)name[0] ] *
+ myhtml_string_chars_lowercase_map[ (const unsigned char)name[(length - 1)] ] *
+ length)
+ % MyHTML_BASE_STATIC_SIZE) + 1;
+
+ while (myhtml_tag_static_list_index[idx].ctx)
+ {
+ if(myhtml_tag_static_list_index[idx].ctx->name_length == length) {
+ if(myhtml_strncasecmp(myhtml_tag_static_list_index[idx].ctx->name, name, length) == 0)
+ return myhtml_tag_static_list_index[idx].ctx;
+
+ if(myhtml_tag_static_list_index[idx].next)
+ idx = myhtml_tag_static_list_index[idx].next;
+ else
+ return NULL;
+ }
+ else if(myhtml_tag_static_list_index[idx].ctx->name_length > length) {
+ return NULL;
+ }
+ else {
+ idx = myhtml_tag_static_list_index[idx].next;
+ }
+ }
+
+ return NULL;
}
-void myhtml_tag_init_tags_categories(myhtml_tag_t* tags)
+const myhtml_tag_context_t * myhtml_tag_static_get_by_id(size_t idx)
{
- myhtml_tag_set_category(tags, MyHTML_TAG__TEXT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG__COMMENT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG__DOCTYPE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_A, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_A, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_ABBR, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_ACRONYM, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_ADDRESS, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_ANNOTATION_XML, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_APPLET, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_AREA, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_ARTICLE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_ASIDE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_AUDIO, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_B, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_BASE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_BASEFONT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_BDI, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_BDO, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_BGSOUND, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_BIG, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_BLINK, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_BLOCKQUOTE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_BODY, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_BR, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_BUTTON, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_CANVAS, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_CAPTION, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_CENTER, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_CITE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_CODE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_COL, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_COLGROUP, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_COMMAND, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_COMMENT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_DATALIST, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_DD, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_DEL, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_DETAILS, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_DFN, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_DIALOG, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_DIR, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_DIV, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_DL, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_DT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_EM, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_EMBED, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_FIELDSET, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_FIGCAPTION, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_FIGURE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_FONT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_FONT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FOOTER, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_FORM, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_FRAME, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_FRAMESET, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_H1, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_H2, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_H3, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_H4, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_H5, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_H6, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_HEAD, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_HEADER, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_HGROUP, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_HR, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_HTML, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON|MyHTML_TAG_CATEGORIES_SCOPE_TABLE);
- myhtml_tag_set_category(tags, MyHTML_TAG_I, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_IFRAME, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_IMAGE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_IMAGE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_IMG, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_INPUT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_INS, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_ISINDEX, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_KBD, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_KEYGEN, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_LABEL, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_LEGEND, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_LI, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_LINK, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_LISTING, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_MAIN, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_MAP, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MARK, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MARQUEE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_MENU, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_MENUITEM, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_META, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_METER, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MTEXT, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_NAV, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_NOBR, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_NOEMBED, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_NOFRAMES, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_NOSCRIPT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_OBJECT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_OL, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM);
- myhtml_tag_set_category(tags, MyHTML_TAG_OPTGROUP, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY|MyHTML_TAG_CATEGORIES_SCOPE_SELECT);
- myhtml_tag_set_category(tags, MyHTML_TAG_OPTION, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY|MyHTML_TAG_CATEGORIES_SCOPE_SELECT);
- myhtml_tag_set_category(tags, MyHTML_TAG_OUTPUT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_P, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_PARAM, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_PLAINTEXT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_PRE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_PROGRESS, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_Q, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_RB, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_RP, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_RT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_RTC, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_RUBY, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_S, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_SAMP, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_SCRIPT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_SCRIPT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_SECTION, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_SELECT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_SMALL, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_SOURCE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_SPAN, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_STRIKE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_STRONG, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_STYLE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_STYLE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_SUB, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_SUMMARY, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_SUP, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_SVG, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_SVG, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_TABLE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON|MyHTML_TAG_CATEGORIES_SCOPE_TABLE);
- myhtml_tag_set_category(tags, MyHTML_TAG_TBODY, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_TD, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_TEMPLATE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON|MyHTML_TAG_CATEGORIES_SCOPE_TABLE);
- myhtml_tag_set_category(tags, MyHTML_TAG_TEXTAREA, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_TFOOT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_TH, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_THEAD, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_TIME, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_TITLE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_TITLE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_TR, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_TRACK, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_TT, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_U, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_FORMATTING);
- myhtml_tag_set_category(tags, MyHTML_TAG_UL, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM);
- myhtml_tag_set_category(tags, MyHTML_TAG_VAR, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_VIDEO, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_WBR, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_XMP, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_SPECIAL);
- myhtml_tag_set_category(tags, MyHTML_TAG_ALTGLYPH, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_ALTGLYPHDEF, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_ALTGLYPHITEM, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_ANIMATE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_ANIMATECOLOR, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_ANIMATEMOTION, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_ANIMATETRANSFORM, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_CIRCLE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_CLIPPATH, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_COLOR_PROFILE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_CURSOR, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_DEFS, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_DESC, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_ELLIPSE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEBLEND, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FECOLORMATRIX, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FECOMPONENTTRANSFER, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FECOMPOSITE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FECONVOLVEMATRIX, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEDIFFUSELIGHTING, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEDISPLACEMENTMAP, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEDISTANTLIGHT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEDROPSHADOW, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEFLOOD, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEFUNCA, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEFUNCB, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEFUNCG, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEFUNCR, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEGAUSSIANBLUR, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEIMAGE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEMERGE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEMERGENODE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEMORPHOLOGY, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEOFFSET, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FEPOINTLIGHT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FESPECULARLIGHTING, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FESPOTLIGHT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FETILE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FETURBULENCE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FILTER, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FONT_FACE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FONT_FACE_FORMAT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FONT_FACE_NAME, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FONT_FACE_SRC, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FONT_FACE_URI, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_FOREIGNOBJECT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_G, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_GLYPH, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_GLYPHREF, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_HKERN, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_LINE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_LINEARGRADIENT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MARKER, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MASK, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_METADATA, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MISSING_GLYPH, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MPATH, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_PATH, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_PATTERN, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_POLYGON, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_POLYLINE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_RADIALGRADIENT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_RECT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_SET, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_STOP, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_SWITCH, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_SYMBOL, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_TEXT, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_TEXTPATH, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_TREF, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_TSPAN, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_USE, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_VIEW, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_VKERN, MyHTML_NAMESPACE_SVG, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MATH, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MACTION, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MALIGNGROUP, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MALIGNMARK, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MENCLOSE, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MERROR, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MFENCED, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MFRAC, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MGLYPH, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MI, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_MLABELEDTR, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MLONGDIV, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MMULTISCRIPTS, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MN, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_MO, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_MOVER, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MPADDED, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MPHANTOM, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MROOT, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MROW, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MS, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_SPECIAL|MyHTML_TAG_CATEGORIES_SCOPE|MyHTML_TAG_CATEGORIES_SCOPE_LIST_ITEM|MyHTML_TAG_CATEGORIES_SCOPE_BUTTON);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSCARRIES, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSCARRY, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSGROUP, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSLINE, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSPACE, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSQRT, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSROW, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSTACK, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSTYLE, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSUB, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSUP, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG_MSUBSUP, MyHTML_NAMESPACE_MATHML, MyHTML_TAG_CATEGORIES_ORDINARY);
- myhtml_tag_set_category(tags, MyHTML_TAG__END_OF_FILE, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
+ return &myhtml_tag_base_list[idx];
}
+
+
diff --git a/source/myhtml/thread.c b/source/myhtml/thread.c
index f9238c5..9109dd6 100644
--- a/source/myhtml/thread.c
+++ b/source/myhtml/thread.c
@@ -18,6 +18,8 @@
#include "myhtml/thread.h"
+#ifndef MyHTML_BUILD_WITHOUT_THREADS
+
#if defined(IS_OS_WINDOWS)
/***********************************************************************************
*
@@ -234,7 +236,7 @@ void myhtml_thread_nanosleep(const struct timespec *tomeout)
}
#endif /* !defined(IS_OS_WINDOWS) */
-
+#endif /* MyHTML_BUILD_WITHOUT_THREADS */
/*
*
@@ -247,6 +249,21 @@ mythread_t * mythread_create(void)
return calloc(1, sizeof(mythread_t));
}
+#ifdef MyHTML_BUILD_WITHOUT_THREADS
+
+myhtml_status_t mythread_init(mythread_t *mythread, const char *sem_prefix, size_t thread_count, size_t queue_size)
+{
+ myhtml_status_t status;
+ mythread->queue = mythread_queue_create(4096, &status);
+
+ if(mythread->queue == NULL)
+ return status;
+
+ return MyHTML_STATUS_OK;
+}
+
+#else /* MyHTML_BUILD_WITHOUT_THREADS */
+
myhtml_status_t mythread_init(mythread_t *mythread, const char *sem_prefix, size_t thread_count, size_t queue_size)
{
mythread->batch_count = 0;
@@ -303,6 +320,8 @@ myhtml_status_t mythread_init(mythread_t *mythread, const char *sem_prefix, size
return MyHTML_STATUS_OK;
}
+#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+
void mythread_clean(mythread_t *mythread)
{
mythread->sys_last_error = 0;
@@ -310,6 +329,8 @@ void mythread_clean(mythread_t *mythread)
if(mythread->queue)
mythread_queue_clean(mythread->queue);
+#ifndef MyHTML_BUILD_WITHOUT_THREADS
+
size_t idx;
for (idx = mythread->pth_list_root; idx < mythread->pth_list_length; idx++) {
mythread->pth_list[idx].data.use = 0;
@@ -318,13 +339,17 @@ void mythread_clean(mythread_t *mythread)
for (idx = 0; idx < mythread->batch_count; idx++) {
mythread->pth_list[( mythread->batch_first_id + idx )].data.use = idx;
}
+
+#endif /* MyHTML_BUILD_WITHOUT_THREADS */
}
-mythread_t * mythread_destroy(mythread_t *mythread, mybool_t self_destroy)
+mythread_t * mythread_destroy(mythread_t *mythread, bool self_destroy)
{
if(mythread == NULL)
return NULL;
+#ifndef MyHTML_BUILD_WITHOUT_THREADS
+
myhtml_thread_attr_destroy(mythread);
if(mythread->pth_list) {
@@ -353,6 +378,8 @@ mythread_t * mythread_destroy(mythread_t *mythread, mybool_t self_destroy)
mythread->sem_prefix_length = 0;
}
+#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+
if(mythread->queue)
mythread_queue_destroy(mythread->queue);
@@ -364,6 +391,8 @@ mythread_t * mythread_destroy(mythread_t *mythread, mybool_t self_destroy)
return mythread;
}
+#ifndef MyHTML_BUILD_WITHOUT_THREADS
+
mythread_id_t _myhread_create_stream_raw(mythread_t *mythread, mythread_f func, void *work_func, myhtml_status_t *status, size_t total_count)
{
mythread->sys_last_error = 0;
@@ -429,15 +458,15 @@ mythread_id_t myhread_create_batch(mythread_t *mythread, mythread_f func, myhtml
size_t start = mythread->pth_list_length;
*status = MyHTML_STATUS_OK;
- mybool_t init_first = myfalse;
+ bool init_first = false;
for (size_t i = 0; i < count; i++) {
mythread_id_t curr_id = _myhread_create_stream_raw(mythread, func, mythread_function_batch, status, count);
- if(init_first == myfalse) {
+ if(init_first == false) {
mythread->batch_first_id = curr_id;
- init_first = mytrue;
+ init_first = true;
}
if(*status)
@@ -468,6 +497,8 @@ mythread_id_t myhread_create_batch(mythread_t *mythread, mythread_f func, myhtml
return mythread->batch_first_id;
}
+#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+
// mythread queue functions
mythread_queue_t * mythread_queue_create(size_t size, myhtml_status_t *status)
{
@@ -565,6 +596,16 @@ mythread_queue_node_t * mythread_queue_get_current_node(mythread_queue_t* queue)
return &queue->nodes[queue->nodes_pos][queue->nodes_length];
}
+mythread_queue_node_t * mythread_queue_get_first_node(mythread_queue_t* queue)
+{
+ return &queue->nodes[0][0];
+}
+
+size_t mythread_queue_count_used_node(mythread_queue_t* queue)
+{
+ return queue->nodes_uses;
+}
+
mythread_queue_node_t * mythread_queue_node_malloc(mythread_queue_t* queue, const char* text, size_t begin, myhtml_status_t *status)
{
queue->nodes_length++;
@@ -615,6 +656,19 @@ mythread_queue_node_t * mythread_queue_node_malloc(mythread_queue_t* queue, cons
return qnode;
}
+#ifdef MyHTML_BUILD_WITHOUT_THREADS
+
+void mythread_stream_quit_all(mythread_t *mythread) {}
+void mythread_batch_quit_all(mythread_t *mythread) {}
+void mythread_stream_pause_all(mythread_t *mythread) {}
+void mythread_batch_pause_all(mythread_t *mythread) {}
+void mythread_resume_all(mythread_t *mythread) {}
+void mythread_wait_all(mythread_t *mythread) {}
+void mythread_function_batch(void *arg) {}
+void mythread_function_stream(void *arg) {}
+
+#else /* MyHTML_BUILD_WITHOUT_THREADS */
+
// mythread functions
void mythread_stream_quit_all(mythread_t *mythread)
{
@@ -747,4 +801,6 @@ void mythread_function_stream(void *arg)
while (1);
}
+#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+
diff --git a/source/myhtml/thread.h b/source/myhtml/thread.h
index 1df5643..2fb3826 100644
--- a/source/myhtml/thread.h
+++ b/source/myhtml/thread.h
@@ -26,6 +26,8 @@ extern "C" {
#include "myhtml/myosi.h"
+#ifndef MyHTML_BUILD_WITHOUT_THREADS
+
#if !defined(IS_OS_WINDOWS)
# include <pthread.h>
# include <semaphore.h>
@@ -41,8 +43,19 @@ extern "C" {
#include "myhtml/tree.h"
#include "myhtml/mystring.h"
-#define MyTHREAD_SEM_NAME "mythread"
+#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+
+#define MyTHREAD_SEM_NAME "myhtml"
+
+#ifdef MyHTML_BUILD_WITHOUT_THREADS
+
+struct mythread {
+ mythread_queue_t *queue;
+ int sys_last_error;
+};
+
+#else /* MyHTML_BUILD_WITHOUT_THREADS */
void mythread_function_stream(void *arg);
void mythread_function_batch(void *arg);
@@ -109,13 +122,17 @@ struct mythread {
volatile mythread_thread_opt_t batch_opt;
};
+mythread_id_t myhread_create_stream(mythread_t *mythread, mythread_f func, myhtml_status_t *status);
+mythread_id_t myhread_create_batch(mythread_t *mythread, mythread_f func, myhtml_status_t *status, size_t count);
+
+void myhtml_thread_nanosleep(const struct timespec *tomeout);
+
+#endif
+
mythread_t * mythread_create(void);
myhtml_status_t mythread_init(mythread_t *mythread, const char *sem_prefix, size_t thread_count, size_t queue_size);
void mythread_clean(mythread_t *mythread);
-mythread_t * mythread_destroy(mythread_t *mythread, mybool_t self_destroy);
-
-mythread_id_t myhread_create_stream(mythread_t *mythread, mythread_f func, myhtml_status_t *status);
-mythread_id_t myhread_create_batch(mythread_t *mythread, mythread_f func, myhtml_status_t *status, size_t count);
+mythread_t * mythread_destroy(mythread_t *mythread, bool self_destroy);
void mythread_stream_pause_all(mythread_t *mythread);
void mythread_batch_pause_all(mythread_t *mythread);
@@ -126,8 +143,6 @@ void mythread_resume_all(mythread_t *mythread);
void mythread_stream_quit_all(mythread_t *mythread);
void mythread_batch_quit_all(mythread_t *mythread);
-void myhtml_thread_nanosleep(const struct timespec *tomeout);
-
// queue
struct mythread_queue_node {
mythread_queue_node_t *prev;
@@ -163,6 +178,8 @@ mythread_queue_t * mythread_queue_destroy(mythread_queue_t* token);
void mythread_queue_node_clean(mythread_queue_node_t* qnode);
+size_t mythread_queue_count_used_node(mythread_queue_t* queue);
+mythread_queue_node_t * mythread_queue_get_first_node(mythread_queue_t* queue);
mythread_queue_node_t * mythread_queue_get_prev_node(mythread_queue_t* queue);
mythread_queue_node_t * mythread_queue_get_current_node(mythread_queue_t* queue);
mythread_queue_node_t * mythread_queue_node_malloc(mythread_queue_t* queue, const char* text, size_t begin, myhtml_status_t *status);
diff --git a/source/myhtml/token.c b/source/myhtml/token.c
index 8e2b11f..a7a5c58 100644
--- a/source/myhtml/token.c
+++ b/source/myhtml/token.c
@@ -345,7 +345,7 @@ void myhtml_token_node_attr_copy(myhtml_token_t* token, myhtml_token_node_t* tar
}
}
-mybool_t myhtml_token_attr_copy(myhtml_token_t* token, myhtml_token_attr_t* attr, myhtml_token_node_t* dest, size_t thread_idx)
+bool myhtml_token_attr_copy(myhtml_token_t* token, myhtml_token_attr_t* attr, myhtml_token_node_t* dest, size_t thread_idx)
{
myhtml_token_attr_t* new_attr = mcobject_async_malloc(token->attr_obj, thread_idx, NULL);
new_attr->next = 0;
@@ -393,7 +393,7 @@ mybool_t myhtml_token_attr_copy(myhtml_token_t* token, myhtml_token_attr_t* attr
dest->attr_last = new_attr;
}
- return mytrue;
+ return true;
}
myhtml_token_attr_t * myhtml_token_attr_match(myhtml_token_t* token, myhtml_token_node_t* target,
@@ -475,12 +475,12 @@ void myhtml_token_strict_doctype_by_token(myhtml_token_t* token, myhtml_token_no
_myhtml_token_create_copy_srt(token, &data[attr->name_begin], attr->name_length, &return_doctype->attr_name);
if(strcmp("html", return_doctype->attr_name))
- return_doctype->is_html = myfalse;
+ return_doctype->is_html = false;
else
- return_doctype->is_html = mytrue;
+ return_doctype->is_html = true;
}
else {
- return_doctype->is_html = myfalse;
+ return_doctype->is_html = false;
// if(return_doctype->attr_name)
// myfree(return_doctype->attr_name);
@@ -571,52 +571,52 @@ void myhtml_token_strict_doctype_by_token(myhtml_token_t* token, myhtml_token_no
}
}
-mybool_t myhtml_token_doctype_check_html_4_0(myhtml_tree_doctype_t* return_doctype)
+bool myhtml_token_doctype_check_html_4_0(myhtml_tree_doctype_t* return_doctype)
{
return strcmp(return_doctype->attr_public, "-//W3C//DTD HTML 4.0//EN") &&
(return_doctype->attr_system == NULL || strcmp(return_doctype->attr_system, "http://www.w3.org/TR/REC-html40/strict.dtd"));
}
-mybool_t myhtml_token_doctype_check_html_4_01(myhtml_tree_doctype_t* return_doctype)
+bool myhtml_token_doctype_check_html_4_01(myhtml_tree_doctype_t* return_doctype)
{
return strcmp(return_doctype->attr_public, "-//W3C//DTD HTML 4.01//EN") &&
(return_doctype->attr_system == NULL || strcmp(return_doctype->attr_system, "http://www.w3.org/TR/html4/strict.dtd"));
}
-mybool_t myhtml_token_doctype_check_xhtml_1_0(myhtml_tree_doctype_t* return_doctype)
+bool myhtml_token_doctype_check_xhtml_1_0(myhtml_tree_doctype_t* return_doctype)
{
if(return_doctype->attr_system == NULL)
- return mytrue;
+ return true;
return strcmp(return_doctype->attr_public, "-//W3C//DTD XHTML 1.0 Strict//EN") &&
strcmp(return_doctype->attr_system, "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd");
}
-mybool_t myhtml_token_doctype_check_xhtml_1_1(myhtml_tree_doctype_t* return_doctype)
+bool myhtml_token_doctype_check_xhtml_1_1(myhtml_tree_doctype_t* return_doctype)
{
if(return_doctype->attr_system == NULL)
- return mytrue;
+ return true;
return strcmp(return_doctype->attr_public, "-//W3C//DTD XHTML 1.1//EN") &&
strcmp(return_doctype->attr_system, "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd");
}
-mybool_t myhtml_token_release_and_check_doctype_attributes(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_tree_doctype_t* return_doctype)
+bool myhtml_token_release_and_check_doctype_attributes(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_tree_doctype_t* return_doctype)
{
if(return_doctype == NULL)
- return myfalse;
+ return false;
myhtml_token_strict_doctype_by_token(token, target, return_doctype);
if(return_doctype->attr_name == NULL)
- return myfalse;
+ return false;
if((return_doctype->is_html ||
return_doctype->attr_public ||
(return_doctype->attr_system && strcmp(return_doctype->attr_system, "about:legacy-compat"))))
{
if(return_doctype->attr_public == NULL)
- return myfalse;
+ return false;
if(return_doctype->is_html &&
myhtml_token_doctype_check_html_4_0(return_doctype) &&
@@ -624,11 +624,11 @@ mybool_t myhtml_token_release_and_check_doctype_attributes(myhtml_token_t* token
myhtml_token_doctype_check_xhtml_1_0(return_doctype) &&
myhtml_token_doctype_check_xhtml_1_1(return_doctype))
{
- return myfalse;
+ return false;
}
}
- return mytrue;
+ return true;
}
// oh
@@ -673,10 +673,10 @@ void myhtml_token_adjust_foreign_attributes(myhtml_token_node_t* target)
}
}
-mybool_t myhtml_token_attr_compare(myhtml_token_node_t* target, myhtml_token_node_t* dest)
+bool myhtml_token_attr_compare(myhtml_token_node_t* target, myhtml_token_node_t* dest)
{
if(target == NULL || dest == NULL)
- return myfalse;
+ return false;
myhtml_token_attr_t* target_attr = target->attr_first;
myhtml_token_attr_t* dest_attr = dest->attr_first;
@@ -700,9 +700,9 @@ mybool_t myhtml_token_attr_compare(myhtml_token_node_t* target, myhtml_token_nod
}
if(target_attr == NULL && dest_attr == NULL)
- return mytrue;
+ return true;
- return myfalse;
+ return false;
}
myhtml_token_attr_t * myhtml_token_attr_by_name(myhtml_token_node_t* node, const char* name, size_t name_length)
@@ -775,7 +775,7 @@ myhtml_token_attr_t * myhtml_token_attr_remove_by_name(myhtml_token_node_t* node
return myhtml_token_attr_remove(node, myhtml_token_attr_by_name(node, name, name_length));
}
-mybool_t myhtml_token_is_whithspace(myhtml_tree_t* tree, myhtml_token_node_t* node)
+bool myhtml_token_is_whithspace(myhtml_tree_t* tree, myhtml_token_node_t* node)
{
const char* html = node->my_str_tm.data;
@@ -785,14 +785,14 @@ mybool_t myhtml_token_is_whithspace(myhtml_tree_t* tree, myhtml_token_node_t* no
// TODO: see and use myhtml_whithspace
// U+0009 // U+000A // U+000C // U+000D // U+0020
if(html[i] != '\t' && html[i] != '\n' && html[i] != '\f' && html[i] != '\r' && html[i] != ' ') {
- return myfalse;
+ return false;
}
}
- return mytrue;
+ return true;
}
-myhtml_token_node_t * myhtml_token_merged_two_token_string(myhtml_tree_t* tree, myhtml_token_node_t* token_to, myhtml_token_node_t* token_from, mybool_t cp_reverse)
+myhtml_token_node_t * myhtml_token_merged_two_token_string(myhtml_tree_t* tree, myhtml_token_node_t* token_to, myhtml_token_node_t* token_from, bool cp_reverse)
{
myhtml_token_node_wait_for_done(token_to);
myhtml_token_node_wait_for_done(token_from);
@@ -881,21 +881,17 @@ void myhtml_token_print_param_by_idx(myhtml_tree_t* myhtml_tree, myhtml_token_no
void myhtml_token_print_by_idx(myhtml_tree_t* tree, myhtml_token_node_t* node, FILE* out)
{
- myhtml_t* myhtml = tree->myhtml;
- mctree_node_t* mctree_nodes = myhtml->tags->tree->nodes;
-
- size_t mctree_id = mh_tags_get(node->tag_ctx_idx, mctree_id);
- size_t tag_name_size = mctree_nodes[mctree_id].str_size;
+ const myhtml_tag_context_t *ctx = myhtml_tag_get_by_id(tree->tags, node->tag_ctx_idx);
if(node->tag_ctx_idx == MyHTML_TAG__TEXT ||
node->tag_ctx_idx == MyHTML_TAG__COMMENT)
{
if(node->length) {
- fprintf(out, "%.*s: %.*s\n", (int)tag_name_size, mctree_nodes[mctree_id].str,
+ fprintf(out, "%.*s: %.*s\n", (int)ctx->name_length, ctx->name,
(int)node->length, &node->my_str_tm.data[node->begin]);
}
else {
- fprintf(out, "%.*s is empty\n", (int)tag_name_size, mctree_nodes[mctree_id].str);
+ fprintf(out, "%.*s is empty\n", (int)ctx->name_length, ctx->name);
}
}
else
@@ -907,8 +903,7 @@ void myhtml_token_print_by_idx(myhtml_tree_t* tree, myhtml_token_node_t* node, F
fprintf(out, "<");
}
- fprintf(out, "%.*s tagid=\"%zu\"", (int)tag_name_size, mctree_nodes[mctree_id].str,
- mh_tags_get(node->tag_ctx_idx, id));
+ fprintf(out, "%.*s tagid=\"%zu\"", (int)ctx->name_length, ctx->name, node->tag_ctx_idx);
myhtml_token_print_attr(tree, node, out);
diff --git a/source/myhtml/token.h b/source/myhtml/token.h
index 8b4b336..a638a4f 100644
--- a/source/myhtml/token.h
+++ b/source/myhtml/token.h
@@ -108,7 +108,7 @@ struct myhtml_token {
size_t mcasync_token_id;
size_t mcasync_attr_id;
- mybool_t is_new_tmp;
+ bool is_new_tmp;
};
myhtml_token_t * myhtml_token_create(myhtml_tree_t* tree, size_t size);
@@ -125,12 +125,12 @@ void myhtml_token_delete(myhtml_token_t* token, myhtml_token_node_t* node);
void myhtml_token_node_wait_for_done(myhtml_token_node_t* node);
void myhtml_token_set_done(myhtml_token_node_t* node);
-mybool_t myhtml_token_is_whithspace(myhtml_tree_t* tree, myhtml_token_node_t* node);
+bool myhtml_token_is_whithspace(myhtml_tree_t* tree, myhtml_token_node_t* node);
myhtml_token_attr_t * myhtml_token_attr_match(myhtml_token_t* token, myhtml_token_node_t* target, const char* key, size_t key_size, const char* value, size_t value_size);
myhtml_token_attr_t * myhtml_token_attr_match_case(myhtml_token_t* token, myhtml_token_node_t* target, const char* key, size_t key_size, const char* value, size_t value_size);
-mybool_t myhtml_token_release_and_check_doctype_attributes(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_tree_doctype_t* return_doctype);
+bool myhtml_token_release_and_check_doctype_attributes(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_tree_doctype_t* return_doctype);
void myhtml_token_adjust_mathml_attributes(myhtml_token_node_t* target);
void myhtml_token_adjust_svg_attributes(myhtml_token_node_t* target);
@@ -142,10 +142,10 @@ void myhtml_token_node_text_append(myhtml_token_t* token, myhtml_token_node_t* d
void myhtml_token_node_attr_copy(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_token_node_t* dest, size_t thread_idx);
void myhtml_token_node_attr_copy_with_check(myhtml_token_t* token, myhtml_token_node_t* target, myhtml_token_node_t* dest, size_t thread_idx);
myhtml_token_node_t * myhtml_token_node_clone(myhtml_token_t* token, myhtml_token_node_t* node, size_t token_thread_idx, size_t attr_thread_idx);
-mybool_t myhtml_token_attr_copy(myhtml_token_t* token, myhtml_token_attr_t* attr, myhtml_token_node_t* dest, size_t thread_idx);
+bool myhtml_token_attr_copy(myhtml_token_t* token, myhtml_token_attr_t* attr, myhtml_token_node_t* dest, size_t thread_idx);
myhtml_token_attr_t * myhtml_token_attr_by_name(myhtml_token_node_t* node, const char* name, size_t name_size);
-mybool_t myhtml_token_attr_compare(myhtml_token_node_t* target, myhtml_token_node_t* dest);
-myhtml_token_node_t * myhtml_token_merged_two_token_string(myhtml_tree_t* tree, myhtml_token_node_t* token_to, myhtml_token_node_t* token_from, mybool_t cp_reverse);
+bool myhtml_token_attr_compare(myhtml_token_node_t* target, myhtml_token_node_t* dest);
+myhtml_token_node_t * myhtml_token_merged_two_token_string(myhtml_tree_t* tree, myhtml_token_node_t* token_to, myhtml_token_node_t* token_from, bool cp_reverse);
void myhtml_token_set_replacement_character_for_null_token(myhtml_token_node_t* node);
void myhtml_token_print_param_by_idx(myhtml_tree_t* myhtml_tree, myhtml_token_node_t* node, FILE* out);
diff --git a/source/myhtml/tokenizer.c b/source/myhtml/tokenizer.c
index d109a7a..b39cac4 100644
--- a/source/myhtml/tokenizer.c
+++ b/source/myhtml/tokenizer.c
@@ -77,6 +77,8 @@ void myhtml_tokenizer_chunk_process(myhtml_tree_t* tree, const char* html, size_
// add for a chunk
myhtml_incomming_buf_add(myhtml, tree, tree->incoming_buf, html, html_length);
+#ifndef MyHTML_BUILD_WITHOUT_THREADS
+
if(myhtml->opt & MyHTML_OPTIONS_PARSE_MODE_SINGLE)
tree->flags |= MyHTML_TREE_FLAGS_SINGLE_MODE;
@@ -95,6 +97,13 @@ void myhtml_tokenizer_chunk_process(myhtml_tree_t* tree, const char* html, size_
myhtml_tokenizer_post(tree);
}
+#else
+
+ tree->queue = myhtml->thread->queue;
+ tree->flags |= MyHTML_TREE_FLAGS_SINGLE_MODE;
+
+#endif
+
if(tree->current_qnode == NULL) {
myhtml_tokenizer_set_first_settings(tree, html, html_length);
}
@@ -167,6 +176,8 @@ void myhtml_tokenizer_end(myhtml_tree_t* tree)
tree->current_qnode->token->tag_ctx_idx = MyHTML_TAG__END_OF_FILE;
mh_queue_add(tree, NULL, 0, NULL);
+#ifndef MyHTML_BUILD_WITHOUT_THREADS
+
if((tree->flags & MyHTML_TREE_FLAGS_SINGLE_MODE) == 0 &&
(tree->myhtml->opt & MyHTML_OPTIONS_PARSE_MODE_SINGLE) == 0)
{
@@ -174,6 +185,8 @@ void myhtml_tokenizer_end(myhtml_tree_t* tree)
myhtml_tokenizer_pause(tree);
}
+#endif
+
tree->flags |= MyHTML_TREE_FLAGS_PARSE_END;
myhtml_tree_temp_stream_clean(tree);
@@ -206,7 +219,8 @@ myhtml_tree_node_t * myhtml_tokenizer_fragment_init(myhtml_tree_t* tree, myhtml_
}
}
else {
- mh_state_set(tree) = mh_tags_get(tag_idx, data_parser);
+ const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_id(tree->tags, tag_idx);
+ mh_state_set(tree) = tag_ctx->data_parser;
}
}
@@ -268,7 +282,9 @@ void myhtml_tokenizer_calc_current_namespace(myhtml_tree_t* tree, mythread_queue
tree->token_namespace = qnode->token;
}
else if(tree->token_namespace && (qnode->token->type & MyHTML_TOKEN_TYPE_CLOSE) == 0) {
- if(tree->myhtml->tags->context[ qnode->token->tag_ctx_idx ].data_parser != MyHTML_TOKENIZER_STATE_DATA)
+ const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_id(tree->tags, qnode->token->tag_ctx_idx);
+
+ if(tag_ctx->data_parser != MyHTML_TOKENIZER_STATE_DATA)
{
myhtml_tree_wait_for_last_done_token(tree, qnode->token);
mh_state_set(tree) = tree->state_of_builder;
@@ -301,29 +317,27 @@ void myhtml_tokenizer_calc_current_namespace(myhtml_tree_t* tree, mythread_queue
void myhtml_check_tag_parser(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset)
{
- myhtml_tag_t* tags = tree->myhtml->tags;
- mctree_t* tags_tree = tags->tree;
-
- mctree_index_t idx;
+ myhtml_tag_t* tags = tree->tags;
+ const myhtml_tag_context_t *tag_ctx = NULL;
if(html_offset < qnode->length) {
const char *tagname = myhtml_tree_incomming_buf_make_data(tree, qnode, qnode->length);
- idx = mctree_search_lowercase(tags_tree, tagname, qnode->length);
+ tag_ctx = myhtml_tag_get_by_name(tags, tagname, qnode->length);
}
else {
- idx = mctree_search_lowercase(tags_tree, &html[ (qnode->begin - tree->global_offset) ], qnode->length);
+ tag_ctx = myhtml_tag_get_by_name(tags, &html[ (qnode->begin - tree->global_offset) ], qnode->length);
}
- if(idx) {
- qnode->token->tag_ctx_idx = (myhtml_tag_id_t)(tags_tree->nodes[idx].value);
+ if(tag_ctx) {
+ qnode->token->tag_ctx_idx = tag_ctx->id;
}
else {
if(html_offset < qnode->length) {
const char *tagname = myhtml_tree_incomming_buf_make_data(tree, qnode, qnode->length);
- qnode->token->tag_ctx_idx = myhtml_tag_add(tags, tagname, qnode->length, MyHTML_TOKENIZER_STATE_DATA, mytrue);
+ qnode->token->tag_ctx_idx = myhtml_tag_add(tags, tagname, qnode->length, MyHTML_TOKENIZER_STATE_DATA, true);
}
else {
- qnode->token->tag_ctx_idx = myhtml_tag_add(tags, &html[ (qnode->begin - tree->global_offset) ], qnode->length, MyHTML_TOKENIZER_STATE_DATA, mytrue);
+ qnode->token->tag_ctx_idx = myhtml_tag_add(tags, &html[ (qnode->begin - tree->global_offset) ], qnode->length, MyHTML_TOKENIZER_STATE_DATA, true);
}
myhtml_tag_set_category(tags, qnode->token->tag_ctx_idx, MyHTML_NAMESPACE_HTML, MyHTML_TAG_CATEGORIES_ORDINARY);
@@ -359,7 +373,8 @@ void myhtml_tokenizer_set_state(myhtml_tree_t* tree, mythread_queue_node_t* qnod
mh_state_set(tree) = MyHTML_TOKENIZER_STATE_DATA;
}
else {
- mh_state_set(tree) = mh_tags_get(qnode->token->tag_ctx_idx, data_parser);
+ const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_id(tree->tags, qnode->token->tag_ctx_idx);
+ mh_state_set(tree) = tag_ctx->data_parser;
}
}
else {
@@ -428,7 +443,7 @@ size_t myhtml_tokenizer_state_rcdata_end_tag_open(myhtml_tree_t* tree, mythread_
return html_offset;
}
-mybool_t _myhtml_tokenizer_state_andata_end_tag_name(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t *html_offset, size_t tmp_begin, enum myhtml_token_type type)
+bool _myhtml_tokenizer_state_andata_end_tag_name(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t *html_offset, size_t tmp_begin, enum myhtml_token_type type)
{
qnode->length = (*html_offset + tree->global_offset) - qnode->begin;
myhtml_check_tag_parser(tree, qnode, html, *html_offset);
@@ -441,7 +456,7 @@ mybool_t _myhtml_tokenizer_state_andata_end_tag_name(myhtml_tree_t* tree, mythre
mh_state_set(tree) = MyHTML_TOKENIZER_STATE_RCDATA;
(*html_offset)++;
- return myfalse;
+ return false;
}
if((qnode->begin - 2) > tmp_begin)
@@ -458,7 +473,7 @@ mybool_t _myhtml_tokenizer_state_andata_end_tag_name(myhtml_tree_t* tree, mythre
qnode->token->tag_ctx_idx = tree->tmp_tag_id;
qnode->token->type |= MyHTML_TOKEN_TYPE_CLOSE;
- return mytrue;
+ return true;
}
size_t myhtml_tokenizer_state_rcdata_end_tag_name(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size)
@@ -861,9 +876,11 @@ size_t myhtml_tokenizer_state_markup_declaration_open(myhtml_tree_t* tree, mythr
// for a comment
if(tagname[0] == '-' && tagname[1] == '-')
{
- mh_state_set(tree) = MyHTML_TOKENIZER_STATE_COMMENT;
+ mh_state_set(tree) = MyHTML_TOKENIZER_STATE_COMMENT_START;
+
+ html_offset += 2;
- qnode->begin = (html_offset + tree->global_offset) + 2;
+ qnode->begin = html_offset + tree->global_offset;
qnode->length = 0;
return html_offset;
@@ -1292,8 +1309,14 @@ size_t myhtml_tokenizer_state_comment_start(myhtml_tree_t* tree, mythread_queue_
}
else if(html[html_offset] == '>')
{
- qnode->token->tag_ctx_idx = MyHTML_TAG__TEXT;
+ html_offset++;
+
+ qnode->length = 0;
+ mh_queue_add(tree, html, html_offset, qnode);
+
mh_state_set(tree) = MyHTML_TOKENIZER_STATE_DATA;
+
+ return html_offset;
}
else {
mh_state_set(tree) = MyHTML_TOKENIZER_STATE_COMMENT;
@@ -1310,12 +1333,18 @@ size_t myhtml_tokenizer_state_comment_start_dash(myhtml_tree_t* tree, mythread_q
if(html[html_offset] == '-')
{
- mh_state_set(tree) = MyHTML_TOKENIZER_STATE_COMMENT_END_DASH;
+ mh_state_set(tree) = MyHTML_TOKENIZER_STATE_COMMENT_END;
}
else if(html[html_offset] == '>')
{
- qnode->token->tag_ctx_idx = MyHTML_TAG__TEXT;
+ html_offset++;
+
+ qnode->length = 0;
+ mh_queue_add(tree, html, html_offset, qnode);
+
mh_state_set(tree) = MyHTML_TOKENIZER_STATE_DATA;
+
+ return html_offset;
}
else {
mh_state_set(tree) = MyHTML_TOKENIZER_STATE_COMMENT;
@@ -1395,10 +1424,17 @@ size_t myhtml_tokenizer_state_comment_end_bang(myhtml_tree_t* tree, mythread_que
{
if(html[html_offset] == '>')
{
- qnode->length = ((tree->global_offset + html_offset) - qnode->begin) - 3;
-
- html_offset++;
- mh_queue_add(tree, html, html_offset, qnode);
+ if(((tree->global_offset + html_offset) - 3) >= qnode->begin) {
+ qnode->length = ((tree->global_offset + html_offset) - qnode->begin) - 3;
+
+ html_offset++;
+ mh_queue_add(tree, html, html_offset, qnode);
+ }
+ else {
+ html_offset++;
+ qnode->length = 0;
+ mh_queue_add(tree, html, html_offset, qnode);
+ }
mh_state_set(tree) = MyHTML_TOKENIZER_STATE_DATA;
}
@@ -1466,6 +1502,9 @@ myhtml_status_t myhtml_tokenizer_state_init(myhtml_t* myhtml)
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_ATTRIBUTE_VALUE_UNQUOTED] = myhtml_tokenizer_state_attribute_value_unquoted;
// comments
+ myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_COMMENT_START] = myhtml_tokenizer_state_comment_start;
+ myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_COMMENT_START_DASH] = myhtml_tokenizer_state_comment_start_dash;
+ myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_COMMENT] = myhtml_tokenizer_state_comment;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_COMMENT] = myhtml_tokenizer_state_comment;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_COMMENT_END] = myhtml_tokenizer_state_comment_end;
myhtml->parse_state_func[MyHTML_TOKENIZER_STATE_COMMENT_END_DASH] = myhtml_tokenizer_state_comment_end_dash;
@@ -1557,6 +1596,10 @@ myhtml_status_t myhtml_tokenizer_state_init(myhtml_t* myhtml)
// for ends comments
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ + MyHTML_TOKENIZER_STATE_COMMENT_START)] = myhtml_tokenizer_end_state_comment_start;
+ myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ + MyHTML_TOKENIZER_STATE_COMMENT_START_DASH)] = myhtml_tokenizer_end_state_comment_start_dash;
+ myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_COMMENT)] = myhtml_tokenizer_end_state_comment;
myhtml->parse_state_func[(MyHTML_TOKENIZER_STATE_LAST_ENTRY
+ MyHTML_TOKENIZER_STATE_COMMENT_END)] = myhtml_tokenizer_end_state_comment_end;
diff --git a/source/myhtml/tokenizer_end.c b/source/myhtml/tokenizer_end.c
index e248a3c..418b2ab 100644
--- a/source/myhtml/tokenizer_end.c
+++ b/source/myhtml/tokenizer_end.c
@@ -160,6 +160,22 @@ size_t myhtml_tokenizer_end_state_attribute_value_unquoted(myhtml_tree_t* tree,
return html_offset;
}
+size_t myhtml_tokenizer_end_state_comment_start(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size)
+{
+ qnode->length = ((html_offset + tree->global_offset) - qnode->begin);
+ mh_queue_add(tree, html, html_offset, qnode);
+
+ return html_offset;
+}
+
+size_t myhtml_tokenizer_end_state_comment_start_dash(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size)
+{
+ qnode->length = ((html_offset + tree->global_offset) - qnode->begin);
+ mh_queue_add(tree, html, html_offset, qnode);
+
+ return html_offset;
+}
+
size_t myhtml_tokenizer_end_state_comment(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size)
{
qnode->length = ((html_offset + tree->global_offset) - qnode->begin);
diff --git a/source/myhtml/tokenizer_end.h b/source/myhtml/tokenizer_end.h
index 888b591..c0632c1 100644
--- a/source/myhtml/tokenizer_end.h
+++ b/source/myhtml/tokenizer_end.h
@@ -41,6 +41,8 @@ size_t myhtml_tokenizer_end_state_before_attribute_value(myhtml_tree_t* tree, my
size_t myhtml_tokenizer_end_state_attribute_value_double_quoted(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
size_t myhtml_tokenizer_end_state_attribute_value_single_quoted(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
size_t myhtml_tokenizer_end_state_attribute_value_unquoted(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
+size_t myhtml_tokenizer_end_state_comment_start(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
+size_t myhtml_tokenizer_end_state_comment_start_dash(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
size_t myhtml_tokenizer_end_state_comment(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
size_t myhtml_tokenizer_end_state_comment_end(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
size_t myhtml_tokenizer_end_state_comment_end_dash(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
@@ -59,7 +61,7 @@ size_t myhtml_tokenizer_end_state_rawtext_end_tag_open(myhtml_tree_t* tree, myth
size_t myhtml_tokenizer_end_state_rawtext_end_tag_name(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
size_t myhtml_tokenizer_end_state_plaintext(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
-size_t myhtml_tokenizer_end_state_doctype(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);;
+size_t myhtml_tokenizer_end_state_doctype(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
size_t myhtml_tokenizer_end_state_before_doctype_name(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
size_t myhtml_tokenizer_end_state_doctype_name(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
size_t myhtml_tokenizer_end_state_after_doctype_name(myhtml_tree_t* tree, mythread_queue_node_t* qnode, const char* html, size_t html_offset, size_t html_size);
diff --git a/source/myhtml/tree.c b/source/myhtml/tree.c
index 31489d5..e68845d 100644
--- a/source/myhtml/tree.c
+++ b/source/myhtml/tree.c
@@ -28,7 +28,7 @@ myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
myhtml_status_t status = MyHTML_STATUS_OK;
tree->myhtml = myhtml;
- tree->token = myhtml_token_create(tree, (4096 * 4));
+ tree->token = myhtml_token_create(tree, 4096);
tree->temp_tag_name.data = NULL;
tree->queue = myhtml->thread->queue;
tree->single_queue = NULL;
@@ -38,13 +38,24 @@ myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
if(tree->tree_obj == NULL)
return MyHTML_STATUS_TREE_ERROR_MCOBJECT_CREATE;
- mcobject_async_status_t mcstatus = mcobject_async_init(tree->tree_obj, 128, 4096, sizeof(myhtml_tree_node_t));
+ mcobject_async_status_t mcstatus = mcobject_async_init(tree->tree_obj, 128, 1024, sizeof(myhtml_tree_node_t));
if(mcstatus)
return MyHTML_STATUS_TREE_ERROR_MCOBJECT_INIT;
- tree->mchar = mchar_async_create(128, (4096 * 500));
+ tree->tags = myhtml_tag_create();
+ status = myhtml_tag_init(tree, tree->tags);
- tree->indexes = myhtml_tree_index_create(tree, myhtml->tags);
+ if(status) {
+ myhtml->parse_state_func = NULL;
+ myhtml->insertion_func = NULL;
+ myhtml->thread = NULL;
+
+ return status;
+ }
+
+ tree->mchar = mchar_async_create(128, (4096 * 5));
+
+ tree->indexes = myhtml_tree_index_create(tree, tree->tags);
tree->active_formatting = myhtml_tree_active_formatting_init(tree);
tree->open_elements = myhtml_tree_open_elements_init(tree);
tree->other_elements = myhtml_tree_list_init();
@@ -69,6 +80,9 @@ myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
tree->mchar_node_id = mchar_async_node_add(tree->mchar);
+ // TODO: this code need send to some func
+#ifndef MyHTML_BUILD_WITHOUT_THREADS
+
tree->async_args = (myhtml_async_args_t*)calloc(myhtml->thread->pth_list_length, sizeof(myhtml_async_args_t));
if(tree->async_args == NULL)
@@ -82,6 +96,17 @@ myhtml_status_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml)
tree->async_args[(myhtml->thread->batch_first_id + i)].mchar_node_id = mchar_async_node_add(tree->mchar);
}
+#else /* MyHTML_BUILD_WITHOUT_THREADS */
+
+ tree->async_args = (myhtml_async_args_t*)calloc(1, sizeof(myhtml_async_args_t));
+
+ if(tree->async_args == NULL)
+ return MyHTML_STATUS_TREE_ERROR_MEMORY_ALLOCATION;
+
+ tree->async_args->mchar_node_id = tree->mchar_node_id;
+
+#endif /* MyHTML_BUILD_WITHOUT_THREADS */
+
tree->sync = mcsync_create();
mcsync_init(tree->sync);
@@ -94,9 +119,11 @@ void myhtml_tree_clean(myhtml_tree_t* tree)
{
myhtml_t* myhtml = tree->myhtml;
+#ifndef MyHTML_BUILD_WITHOUT_THREADS
for(size_t i = 0; i < myhtml->thread->batch_count; i++) {
mchar_async_node_clean(tree->mchar, tree->async_args[(myhtml->thread->batch_first_id + i)].mchar_node_id);
}
+#endif /* MyHTML_BUILD_WITHOUT_THREADS */
mcobject_async_node_clean(tree->tree_obj, tree->mcasync_tree_id);
mcobject_async_node_clean(tree->token->nodes_obj, tree->mcasync_token_id);
@@ -111,11 +138,13 @@ void myhtml_tree_clean(myhtml_tree_t* tree)
tree->document = myhtml_tree_node_create(tree);
tree->fragment = NULL;
- tree->doctype.is_html = myfalse;
+ tree->doctype.is_html = false;
tree->doctype.attr_name = NULL;
tree->doctype.attr_public = NULL;
tree->doctype.attr_system = NULL;
+ tree->node_html = 0;
+ tree->node_body = 0;
tree->node_head = 0;
tree->node_form = 0;
@@ -126,7 +155,7 @@ void myhtml_tree_clean(myhtml_tree_t* tree)
tree->compat_mode = MyHTML_TREE_COMPAT_MODE_NO_QUIRKS;
tree->tmp_tag_id = MyHTML_TAG__UNDEF;
tree->flags = MyHTML_TREE_FLAGS_CLEAN|MyHTML_TREE_FLAGS_FRAMESET_OK;
- tree->foster_parenting = myfalse;
+ tree->foster_parenting = false;
tree->token_namespace = NULL;
tree->incoming_buf = NULL;
tree->incoming_buf_first = NULL;
@@ -147,8 +176,9 @@ void myhtml_tree_clean(myhtml_tree_t* tree)
myhtml_tree_list_clean(tree->other_elements);
myhtml_tree_token_list_clean(tree->token_list);
myhtml_tree_template_insertion_clean(tree);
- myhtml_tree_index_clean(tree, tree->myhtml->tags);
+ myhtml_tree_index_clean(tree, tree->tags);
mcobject_async_node_clean(myhtml->async_incoming_buf, tree->mcasync_incoming_buf_id);
+ myhtml_tag_clean(tree->tags);
myhtml_token_attr_malloc(tree->token, tree->attr_current, tree->mcasync_attr_id);
}
@@ -165,11 +195,13 @@ void myhtml_tree_clean_all(myhtml_tree_t* tree)
tree->document = myhtml_tree_node_create(tree);
tree->fragment = NULL;
- tree->doctype.is_html = myfalse;
+ tree->doctype.is_html = false;
tree->doctype.attr_name = NULL;
tree->doctype.attr_public = NULL;
tree->doctype.attr_system = NULL;
+ tree->node_html = 0;
+ tree->node_body = 0;
tree->node_head = 0;
tree->node_form = 0;
@@ -180,7 +212,7 @@ void myhtml_tree_clean_all(myhtml_tree_t* tree)
tree->compat_mode = MyHTML_TREE_COMPAT_MODE_NO_QUIRKS;
tree->tmp_tag_id = MyHTML_TAG__UNDEF;
tree->flags = MyHTML_TREE_FLAGS_CLEAN|MyHTML_TREE_FLAGS_FRAMESET_OK;
- tree->foster_parenting = myfalse;
+ tree->foster_parenting = false;
tree->token_namespace = NULL;
tree->incoming_buf = NULL;
tree->incoming_buf_first = NULL;
@@ -201,8 +233,9 @@ void myhtml_tree_clean_all(myhtml_tree_t* tree)
myhtml_tree_list_clean(tree->other_elements);
myhtml_tree_token_list_clean(tree->token_list);
myhtml_tree_template_insertion_clean(tree);
- myhtml_tree_index_clean(tree, tree->myhtml->tags);
+ myhtml_tree_index_clean(tree, tree->tags);
mcobject_async_node_clean(tree->myhtml->async_incoming_buf, tree->mcasync_incoming_buf_id);
+ myhtml_tag_clean(tree->tags);
myhtml_token_attr_malloc(tree->token, tree->attr_current, tree->mcasync_attr_id);
}
@@ -214,22 +247,23 @@ myhtml_tree_t * myhtml_tree_destroy(myhtml_tree_t* tree)
tree->active_formatting = myhtml_tree_active_formatting_destroy(tree);
tree->open_elements = myhtml_tree_open_elements_destroy(tree);
- tree->other_elements = myhtml_tree_list_destroy(tree->other_elements, mytrue);
- tree->token_list = myhtml_tree_token_list_destroy(tree->token_list, mytrue);
+ tree->other_elements = myhtml_tree_list_destroy(tree->other_elements, true);
+ tree->token_list = myhtml_tree_token_list_destroy(tree->token_list, true);
tree->template_insertion = myhtml_tree_template_insertion_destroy(tree);
- tree->indexes = myhtml_tree_index_destroy(tree, tree->myhtml->tags);
- tree->sync = mcsync_destroy(tree->sync, mytrue);
- tree->tree_obj = mcobject_async_destroy(tree->tree_obj, mytrue);
+ tree->indexes = myhtml_tree_index_destroy(tree, tree->tags);
+ tree->sync = mcsync_destroy(tree->sync, true);
+ tree->tree_obj = mcobject_async_destroy(tree->tree_obj, true);
tree->token = myhtml_token_destroy(tree->token);
tree->mchar = mchar_async_destroy(tree->mchar, 1);
tree->temp_stream = myhtml_tree_temp_stream_free(tree);
+ tree->tags = myhtml_tag_destroy(tree->tags);
if(tree->single_queue) {
tree->single_queue = mythread_queue_destroy(tree->single_queue);
}
mcobject_async_node_delete(tree->myhtml->async_incoming_buf, tree->mcasync_incoming_buf_id);
- myhtml_tree_temp_tag_name_destroy(&tree->temp_tag_name, myfalse);
+ myhtml_tree_temp_tag_name_destroy(&tree->temp_tag_name, false);
free(tree->async_args);
free(tree);
@@ -284,7 +318,7 @@ void myhtml_tree_index_append(myhtml_tree_t* tree, myhtml_tree_node_t* node)
if(tree->indexes == NULL)
return;
- myhtml_tag_index_add(tree->myhtml->tags, tree->indexes->tags, node);
+ myhtml_tag_index_add(tree->tags, tree->indexes->tags, node);
}
myhtml_tree_node_t * myhtml_tree_index_get(myhtml_tree_t* tree, myhtml_tag_id_t tag_id)
@@ -310,8 +344,8 @@ myhtml_t * myhtml_tree_get_myhtml(myhtml_tree_t* tree)
myhtml_tag_t * myhtml_tree_get_tag(myhtml_tree_t* tree)
{
- if(tree && tree->myhtml)
- return tree->myhtml->tags;
+ if(tree)
+ return tree->tags;
return NULL;
}
@@ -329,6 +363,16 @@ myhtml_tree_node_t * myhtml_tree_get_document(myhtml_tree_t* tree)
return tree->document;
}
+myhtml_tree_node_t * myhtml_tree_get_node_html(myhtml_tree_t* tree)
+{
+ return tree->node_html;
+}
+
+myhtml_tree_node_t * myhtml_tree_get_node_body(myhtml_tree_t* tree)
+{
+ return tree->node_body;
+}
+
mchar_async_t * myhtml_tree_get_mchar(myhtml_tree_t* tree)
{
return tree->mchar;
@@ -580,6 +624,8 @@ myhtml_tree_node_t * myhtml_tree_node_insert_root(myhtml_tree_t* tree, myhtml_to
myhtml_tree_open_elements_append(tree, node);
myhtml_tree_index_append(tree, node);
+ tree->node_html = node;
+
return node;
}
@@ -594,13 +640,13 @@ myhtml_tree_node_t * myhtml_tree_node_insert_text(myhtml_tree_t* tree, myhtml_to
if(mode == MyHTML_TREE_INSERTION_MODE_AFTER) {
if(adjusted_location->tag_idx == MyHTML_TAG__TEXT && adjusted_location->token)
{
- myhtml_token_merged_two_token_string(tree, adjusted_location->token, token, myfalse);
+ myhtml_token_merged_two_token_string(tree, adjusted_location->token, token, false);
return adjusted_location;
}
}
else if(mode == MyHTML_TREE_INSERTION_MODE_BEFORE) {
if(adjusted_location->tag_idx == MyHTML_TAG__TEXT && adjusted_location->token) {
- myhtml_token_merged_two_token_string(tree, token, adjusted_location->token, mytrue);
+ myhtml_token_merged_two_token_string(tree, token, adjusted_location->token, true);
return adjusted_location;
}
}
@@ -608,7 +654,7 @@ myhtml_tree_node_t * myhtml_tree_node_insert_text(myhtml_tree_t* tree, myhtml_to
if(adjusted_location->last_child && adjusted_location->last_child->tag_idx == MyHTML_TAG__TEXT &&
adjusted_location->last_child->token)
{
- myhtml_token_merged_two_token_string(tree, adjusted_location->last_child->token, token, myfalse);
+ myhtml_token_merged_two_token_string(tree, adjusted_location->last_child->token, token, false);
return adjusted_location->last_child;
}
}
@@ -675,46 +721,52 @@ myhtml_tree_node_t * myhtml_tree_node_insert_html_element(myhtml_tree_t* tree, m
myhtml_tree_node_t * myhtml_tree_element_in_scope(myhtml_tree_t* tree, myhtml_tag_id_t tag_idx, myhtml_namespace_t mynamespace, enum myhtml_tag_categories category)
{
myhtml_tree_node_t** list = tree->open_elements->list;
- myhtml_tag_context_t* tags_context = tree->myhtml->tags->context;
+ const myhtml_tag_context_t *tag_ctx;
size_t i = tree->open_elements->length;
+
while(i) {
i--;
+ tag_ctx = myhtml_tag_get_by_id(tree->tags, list[i]->tag_idx);
+
if(list[i]->tag_idx == tag_idx &&
(mynamespace == MyHTML_NAMESPACE_UNDEF || list[i]->my_namespace == mynamespace))
return list[i];
else if(category == MyHTML_TAG_CATEGORIES_SCOPE_SELECT) {
- if((tags_context[list[i]->tag_idx].cats[list[i]->my_namespace] & category) == 0)
+ if((tag_ctx->cats[list[i]->my_namespace] & category) == 0)
break;
}
- else if(tags_context[list[i]->tag_idx].cats[list[i]->my_namespace] & category)
+ else if(tag_ctx->cats[list[i]->my_namespace] & category)
break;
}
return NULL;
}
-mybool_t myhtml_tree_element_in_scope_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, enum myhtml_tag_categories category)
+bool myhtml_tree_element_in_scope_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, enum myhtml_tag_categories category)
{
myhtml_tree_node_t** list = tree->open_elements->list;
- myhtml_tag_context_t* tags_context = tree->myhtml->tags->context;
+ const myhtml_tag_context_t *tag_ctx;
size_t i = tree->open_elements->length;
+
while(i) {
i--;
+ tag_ctx = myhtml_tag_get_by_id(tree->tags, list[i]->tag_idx);
+
if(list[i] == node)
- return mytrue;
+ return true;
else if(category == MyHTML_TAG_CATEGORIES_SCOPE_SELECT) {
- if((tags_context[list[i]->tag_idx].cats[list[i]->my_namespace] & category) == 0)
+ if((tag_ctx->cats[list[i]->my_namespace] & category) == 0)
break;
}
- else if(tags_context[list[i]->tag_idx].cats[list[i]->my_namespace] & category)
+ else if(tag_ctx->cats[list[i]->my_namespace] & category)
break;
}
- return myfalse;
+ return false;
}
// list
@@ -734,7 +786,7 @@ void myhtml_tree_list_clean(myhtml_tree_list_t* list)
list->length = 0;
}
-myhtml_tree_list_t * myhtml_tree_list_destroy(myhtml_tree_list_t* list, mybool_t destroy_self)
+myhtml_tree_list_t * myhtml_tree_list_destroy(myhtml_tree_list_t* list, bool destroy_self)
{
if(list->list)
free(list->list);
@@ -902,7 +954,7 @@ void myhtml_tree_open_elements_clean(myhtml_tree_t* tree)
myhtml_tree_list_t * myhtml_tree_open_elements_destroy(myhtml_tree_t* tree)
{
- return myhtml_tree_list_destroy(tree->open_elements, mytrue);
+ return myhtml_tree_list_destroy(tree->open_elements, true);
}
myhtml_tree_node_t * myhtml_tree_current_node(myhtml_tree_t* tree)
@@ -970,7 +1022,7 @@ void myhtml_tree_open_elements_remove(myhtml_tree_t* tree, myhtml_tree_node_t* n
#endif
}
-void myhtml_tree_open_elements_pop_until(myhtml_tree_t* tree, myhtml_tag_id_t tag_idx, myhtml_namespace_t mynamespace, mybool_t is_exclude)
+void myhtml_tree_open_elements_pop_until(myhtml_tree_t* tree, myhtml_tag_id_t tag_idx, myhtml_namespace_t mynamespace, bool is_exclude)
{
myhtml_tree_node_t** list = tree->open_elements->list;
@@ -997,7 +1049,7 @@ void myhtml_tree_open_elements_pop_until(myhtml_tree_t* tree, myhtml_tag_id_t ta
#endif
}
-void myhtml_tree_open_elements_pop_until_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, mybool_t is_exclude)
+void myhtml_tree_open_elements_pop_until_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, bool is_exclude)
{
myhtml_tree_node_t** list = tree->open_elements->list;
@@ -1020,7 +1072,7 @@ void myhtml_tree_open_elements_pop_until_by_node(myhtml_tree_t* tree, myhtml_tre
#endif
}
-void myhtml_tree_open_elements_pop_until_by_index(myhtml_tree_t* tree, size_t idx, mybool_t is_exclude)
+void myhtml_tree_open_elements_pop_until_by_index(myhtml_tree_t* tree, size_t idx, bool is_exclude)
{
while(tree->open_elements->length)
{
@@ -1041,7 +1093,7 @@ void myhtml_tree_open_elements_pop_until_by_index(myhtml_tree_t* tree, size_t id
#endif
}
-mybool_t myhtml_tree_open_elements_find_reverse(myhtml_tree_t* tree, myhtml_tree_node_t* idx, size_t* pos)
+bool myhtml_tree_open_elements_find_reverse(myhtml_tree_t* tree, myhtml_tree_node_t* idx, size_t* pos)
{
myhtml_tree_node_t** list = tree->open_elements->list;
@@ -1054,14 +1106,14 @@ mybool_t myhtml_tree_open_elements_find_reverse(myhtml_tree_t* tree, myhtml_tree
if(pos)
*pos = i;
- return mytrue;
+ return true;
}
}
- return myfalse;
+ return false;
}
-mybool_t myhtml_tree_open_elements_find(myhtml_tree_t* tree, myhtml_tree_node_t* node, size_t* pos)
+bool myhtml_tree_open_elements_find(myhtml_tree_t* tree, myhtml_tree_node_t* node, size_t* pos)
{
myhtml_tree_node_t** list = tree->open_elements->list;
@@ -1071,11 +1123,11 @@ mybool_t myhtml_tree_open_elements_find(myhtml_tree_t* tree, myhtml_tree_node_t*
if(pos)
*pos = i;
- return mytrue;
+ return true;
}
}
- return myfalse;
+ return false;
}
myhtml_tree_node_t * myhtml_tree_open_elements_find_by_tag_idx_reverse(myhtml_tree_t* tree, myhtml_tag_id_t tag_idx, myhtml_namespace_t mynamespace, size_t* return_index)
@@ -1219,7 +1271,7 @@ void myhtml_tree_reset_insertion_mode_appropriately(myhtml_tree_t* tree)
size_t i = tree->open_elements->length;
// step 1
- mybool_t last = myfalse;
+ bool last = false;
myhtml_tree_node_t** list = tree->open_elements->list;
// step 3
@@ -1237,7 +1289,7 @@ void myhtml_tree_reset_insertion_mode_appropriately(myhtml_tree_t* tree)
#endif
if(i == 0) {
- last = mytrue;
+ last = true;
if(tree->fragment) {
node = tree->fragment;
@@ -1299,7 +1351,7 @@ void myhtml_tree_reset_insertion_mode_appropriately(myhtml_tree_t* tree)
switch (node->tag_idx) {
case MyHTML_TAG_TD:
case MyHTML_TAG_TH:
- if(last == myfalse) {
+ if(last == false) {
tree->insert_mode = MyHTML_INSERTION_MODE_IN_CELL;
return;
}
@@ -1332,7 +1384,7 @@ void myhtml_tree_reset_insertion_mode_appropriately(myhtml_tree_t* tree)
return;
case MyHTML_TAG_HEAD:
- if(last == myfalse) {
+ if(last == false) {
tree->insert_mode = MyHTML_INSERTION_MODE_IN_HEAD;
return;
}
@@ -1386,10 +1438,10 @@ void myhtml_tree_active_formatting_clean(myhtml_tree_t* tree)
myhtml_tree_list_t * myhtml_tree_active_formatting_destroy(myhtml_tree_t* tree)
{
- return myhtml_tree_list_destroy(tree->active_formatting, mytrue);
+ return myhtml_tree_list_destroy(tree->active_formatting, true);
}
-mybool_t myhtml_tree_active_formatting_is_marker(myhtml_tree_t* tree, myhtml_tree_node_t* node)
+bool myhtml_tree_active_formatting_is_marker(myhtml_tree_t* tree, myhtml_tree_node_t* node)
{
#ifdef DEBUG_MODE
if(node == NULL) {
@@ -1398,7 +1450,7 @@ mybool_t myhtml_tree_active_formatting_is_marker(myhtml_tree_t* tree, myhtml_tre
#endif
if(tree->myhtml->marker == node)
- return mytrue;
+ return true;
switch (node->tag_idx) {
case MyHTML_TAG_APPLET:
@@ -1408,13 +1460,13 @@ mybool_t myhtml_tree_active_formatting_is_marker(myhtml_tree_t* tree, myhtml_tre
case MyHTML_TAG_TD:
case MyHTML_TAG_TH:
case MyHTML_TAG_CAPTION:
- return mytrue;
+ return true;
default:
break;
}
- return myfalse;
+ return false;
}
void myhtml_tree_active_formatting_append(myhtml_tree_t* tree, myhtml_tree_node_t* node)
@@ -1529,7 +1581,7 @@ myhtml_tree_node_t * myhtml_tree_active_formatting_current_node(myhtml_tree_t* t
return tree->active_formatting->list[ tree->active_formatting->length - 1 ];
}
-mybool_t myhtml_tree_active_formatting_find(myhtml_tree_t* tree, myhtml_tree_node_t* node, size_t* return_idx)
+bool myhtml_tree_active_formatting_find(myhtml_tree_t* tree, myhtml_tree_node_t* node, size_t* return_idx)
{
myhtml_tree_node_t** list = tree->active_formatting->list;
@@ -1542,11 +1594,11 @@ mybool_t myhtml_tree_active_formatting_find(myhtml_tree_t* tree, myhtml_tree_nod
if(return_idx)
*return_idx = i;
- return mytrue;
+ return true;
}
}
- return myfalse;
+ return false;
}
void myhtml_tree_active_formatting_up_to_last_marker(myhtml_tree_t* tree)
@@ -1661,17 +1713,16 @@ void myhtml_tree_active_formatting_reconstruction(myhtml_tree_t* tree)
}
}
-mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_id_t subject_tag_idx)
+bool myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_id_t subject_tag_idx)
{
if(tree->open_elements->length == 0)
- return myfalse;
+ return false;
size_t oel_curr_index = tree->open_elements->length - 1;
myhtml_tree_node_t** oel_list = tree->open_elements->list;
myhtml_tree_node_t** afe_list = tree->active_formatting->list;
myhtml_tree_node_t* current_node = oel_list[oel_curr_index];
- myhtml_tag_context_t* tags_context = tree->myhtml->tags->context;
#ifdef DEBUG_MODE
if(current_node == NULL) {
@@ -1681,10 +1732,10 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
// step 1
if(current_node->my_namespace == MyHTML_NAMESPACE_HTML && current_node->tag_idx == subject_tag_idx &&
- myhtml_tree_active_formatting_find(tree, current_node, NULL) == myfalse)
+ myhtml_tree_active_formatting_find(tree, current_node, NULL) == false)
{
myhtml_tree_open_elements_pop(tree);
- return myfalse;
+ return false;
}
// step 2, 3
@@ -1707,7 +1758,7 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
i--;
if(myhtml_tree_active_formatting_is_marker(tree, list[i]))
- return myfalse;
+ return false;
else if(list[i]->tag_idx == subject_tag_idx) {
afe_index = i;
formatting_element = list[i];
@@ -1721,19 +1772,19 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
// If there is no such element, then abort these steps and instead act as described in the
// ===> "any other end tag" entry above.
if(formatting_element == NULL) {
- return mytrue;
+ return true;
}
// step 6
size_t oel_format_el_idx;
- if(myhtml_tree_open_elements_find(tree, formatting_element, &oel_format_el_idx) == myfalse) {
+ if(myhtml_tree_open_elements_find(tree, formatting_element, &oel_format_el_idx) == false) {
myhtml_tree_active_formatting_remove(tree, formatting_element);
- return myfalse;
+ return false;
}
// step 7
- if(myhtml_tree_element_in_scope_by_node(tree, formatting_element, MyHTML_TAG_CATEGORIES_SCOPE) == myfalse)
- return myfalse;
+ if(myhtml_tree_element_in_scope_by_node(tree, formatting_element, MyHTML_TAG_CATEGORIES_SCOPE) == false)
+ return false;
// step 8
//if(afe_last != list[i])
@@ -1745,8 +1796,11 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
// here might not be one.
myhtml_tree_node_t* furthest_block = NULL;
size_t idx_furthest_block = 0;
- for (idx_furthest_block = oel_format_el_idx; idx_furthest_block < tree->open_elements->length; idx_furthest_block++) {
- if(tags_context[ oel_list[idx_furthest_block]->tag_idx ].cats[oel_list[idx_furthest_block]->my_namespace] & MyHTML_TAG_CATEGORIES_SPECIAL) {
+ for (idx_furthest_block = oel_format_el_idx; idx_furthest_block < tree->open_elements->length; idx_furthest_block++)
+ {
+ const myhtml_tag_context_t *tag_ctx = myhtml_tag_get_by_id(tree->tags, oel_list[idx_furthest_block]->tag_idx);
+
+ if(tag_ctx->cats[oel_list[idx_furthest_block]->my_namespace] & MyHTML_TAG_CATEGORIES_SPECIAL) {
furthest_block = oel_list[idx_furthest_block];
break;
}
@@ -1765,7 +1819,7 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
myhtml_tree_open_elements_pop(tree); // and including formatting element
myhtml_tree_active_formatting_remove(tree, formatting_element);
- return myfalse;
+ return false;
}
#ifdef DEBUG_MODE
@@ -1798,7 +1852,7 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
// step 13.3
size_t node_index;
- if(myhtml_tree_open_elements_find(tree, node, &node_index) == myfalse) {
+ if(myhtml_tree_open_elements_find(tree, node, &node_index) == false) {
node_index = index_oel_node;
}
@@ -1806,7 +1860,7 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
node_index--;
else {
fprintf(stderr, "ERROR: adoption agency algorithm; decrement node_index, node_index is null");
- return myfalse;
+ return false;
}
index_oel_node = node_index;
@@ -1824,7 +1878,7 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
// step 13.5
size_t afe_node_index;
- mybool_t is_exists = myhtml_tree_active_formatting_find(tree, node, &afe_node_index);
+ bool is_exists = myhtml_tree_active_formatting_find(tree, node, &afe_node_index);
if(inner_loop > 3 && is_exists) {
myhtml_tree_active_formatting_remove_by_index(tree, afe_node_index);
@@ -1837,7 +1891,7 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
}
// step 13.6
- if(is_exists == myfalse) {
+ if(is_exists == false) {
myhtml_tree_open_elements_remove(tree, node);
continue;
}
@@ -1901,8 +1955,8 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
myhtml_tree_node_add_child(tree, furthest_block, new_formatting_element);
// step 18
- if(myhtml_tree_active_formatting_find(tree, formatting_element, &afe_index) == myfalse)
- return myfalse;
+ if(myhtml_tree_active_formatting_find(tree, formatting_element, &afe_index) == false)
+ return false;
if(afe_index < bookmark)
bookmark--;
@@ -1927,7 +1981,7 @@ mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_i
}
}
- return myfalse;
+ return false;
}
myhtml_tree_node_t * myhtml_tree_appropriate_place_inserting(myhtml_tree_t* tree, myhtml_tree_node_t* override_target,
@@ -2195,20 +2249,19 @@ void myhtml_tree_print_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, FILE*
if(node == NULL)
return;
- myhtml_t* myhtml = tree->myhtml;
- mctree_node_t* mctree_nodes = myhtml->tags->tree->nodes;
+ const myhtml_tag_context_t *ctx = myhtml_tag_get_by_id(tree->tags, node->tag_idx);
- size_t mctree_id = mh_tags_get(node->tag_idx, mctree_id);
- size_t tag_name_size = mctree_nodes[mctree_id].str_size;
+// size_t mctree_id = mh_tags_get(node->tag_idx, mctree_id);
+// size_t tag_name_size = mctree_nodes[mctree_id].str_size;
if(node->tag_idx == MyHTML_TAG__TEXT ||
node->tag_idx == MyHTML_TAG__COMMENT)
{
if(node->token)
- fprintf(out, "<%.*s>: %.*s\n", (int)tag_name_size, mctree_nodes[mctree_id].str,
+ fprintf(out, "<%.*s>: %.*s\n", (int)ctx->name_length, ctx->name,
(int)node->token->length, &node->token->my_str_tm.data[node->token->begin]);
else
- fprintf(out, "<%.*s>\n", (int)tag_name_size, mctree_nodes[mctree_id].str);
+ fprintf(out, "<%.*s>\n", (int)ctx->name_length, ctx->name);
}
else if(node->tag_idx == MyHTML_TAG__DOCTYPE)
{
@@ -2234,7 +2287,7 @@ void myhtml_tree_print_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, FILE*
fprintf(out, "<%.*s tagid=\"%zu\" mem=\"%zx\"", (int)tag_name_size, mctree_nodes[mctree_id].str,
mh_tags_get(node->tag_idx, id), (size_t)node);
#else
- fprintf(out, "<%.*s", (int)tag_name_size, mctree_nodes[mctree_id].str);
+ fprintf(out, "<%.*s", (int)ctx->name_length, ctx->name);
if(node->my_namespace != MyHTML_NAMESPACE_HTML) {
switch (node->my_namespace) {
@@ -2319,7 +2372,7 @@ void myhtml_tree_token_list_clean(myhtml_tree_token_list_t* list)
list->length = 0;
}
-myhtml_tree_token_list_t * myhtml_tree_token_list_destroy(myhtml_tree_token_list_t* list, mybool_t destroy_self)
+myhtml_tree_token_list_t * myhtml_tree_token_list_destroy(myhtml_tree_token_list_t* list, bool destroy_self)
{
if(list->list)
free(list->list);
@@ -2384,7 +2437,7 @@ myhtml_token_node_t * myhtml_tree_token_list_current_node(myhtml_tree_token_list
void myhtml_tree_tags_close_p(myhtml_tree_t* tree)
{
myhtml_tree_generate_implied_end_tags(tree, MyHTML_TAG_P, MyHTML_NAMESPACE_HTML);
- myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_P, MyHTML_NAMESPACE_HTML, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, MyHTML_TAG_P, MyHTML_NAMESPACE_HTML, false);
}
myhtml_tree_node_t * myhtml_tree_generic_raw_text_element_parsing_algorithm(myhtml_tree_t* tree, myhtml_token_node_t* token_node)
@@ -2456,7 +2509,7 @@ void myhtml_tree_close_cell(myhtml_tree_t* tree, myhtml_tree_node_t* tr_or_th_no
}
// step 3
- myhtml_tree_open_elements_pop_until(tree, tr_or_th_node->tag_idx, tr_or_th_node->my_namespace, myfalse);
+ myhtml_tree_open_elements_pop_until(tree, tr_or_th_node->tag_idx, tr_or_th_node->my_namespace, false);
// step 4
myhtml_tree_active_formatting_up_to_last_marker(tree);
@@ -2465,7 +2518,7 @@ void myhtml_tree_close_cell(myhtml_tree_t* tree, myhtml_tree_node_t* tr_or_th_no
tree->insert_mode = MyHTML_INSERTION_MODE_IN_ROW;
}
-mybool_t myhtml_tree_is_mathml_integration_point(myhtml_tree_t* tree, myhtml_tree_node_t* node)
+bool myhtml_tree_is_mathml_integration_point(myhtml_tree_t* tree, myhtml_tree_node_t* node)
{
if(node->my_namespace == MyHTML_NAMESPACE_MATHML &&
(node->tag_idx == MyHTML_TAG_MI ||
@@ -2474,19 +2527,19 @@ mybool_t myhtml_tree_is_mathml_integration_point(myhtml_tree_t* tree, myhtml_tre
node->tag_idx == MyHTML_TAG_MS ||
node->tag_idx == MyHTML_TAG_MTEXT)
)
- return mytrue;
+ return true;
- return myfalse;
+ return false;
}
-mybool_t myhtml_tree_is_html_integration_point(myhtml_tree_t* tree, myhtml_tree_node_t* node)
+bool myhtml_tree_is_html_integration_point(myhtml_tree_t* tree, myhtml_tree_node_t* node)
{
if(node->my_namespace == MyHTML_NAMESPACE_SVG &&
(node->tag_idx == MyHTML_TAG_FOREIGNOBJECT ||
node->tag_idx == MyHTML_TAG_DESC ||
node->tag_idx == MyHTML_TAG_TITLE)
)
- return mytrue;
+ return true;
if(node->my_namespace == MyHTML_NAMESPACE_MATHML &&
node->tag_idx == MyHTML_TAG_ANNOTATION_XML && node->token &&
@@ -2497,15 +2550,15 @@ mybool_t myhtml_tree_is_html_integration_point(myhtml_tree_t* tree, myhtml_tree_
myhtml_token_attr_t* attr = myhtml_token_attr_match_case(tree->token, node->token,
"encoding", 8, "text/html", 9);
if(attr)
- return mytrue;
+ return true;
attr = myhtml_token_attr_match_case(tree->token, node->token,
"encoding", 8, "application/xhtml+xml", 21);
if(attr)
- return mytrue;
+ return true;
}
- return myfalse;
+ return false;
}
// temp tag name
@@ -2526,7 +2579,7 @@ void myhtml_tree_temp_tag_name_clean(myhtml_tree_temp_tag_name_t* temp_tag_name)
temp_tag_name->length = 0;
}
-myhtml_tree_temp_tag_name_t * myhtml_tree_temp_tag_name_destroy(myhtml_tree_temp_tag_name_t* temp_tag_name, mybool_t self_destroy)
+myhtml_tree_temp_tag_name_t * myhtml_tree_temp_tag_name_destroy(myhtml_tree_temp_tag_name_t* temp_tag_name, bool self_destroy)
{
if(temp_tag_name == NULL)
return NULL;
@@ -2590,8 +2643,12 @@ myhtml_status_t myhtml_tree_temp_tag_name_append(myhtml_tree_temp_tag_name_t* te
void myhtml_tree_wait_for_last_done_token(myhtml_tree_t* tree, myhtml_token_node_t* token_for_wait)
{
+#ifndef MyHTML_BUILD_WITHOUT_THREADS
+
const struct timespec tomeout = {0, 1000};
while(tree->token_last_done != token_for_wait) {myhtml_thread_nanosleep(&tomeout);}
+
+#endif
}
/* special tonek list */
@@ -2612,7 +2669,7 @@ void myhtml_tree_special_list_clean(myhtml_tree_temp_tag_name_t* temp_tag_name)
temp_tag_name->length = 0;
}
-myhtml_tree_special_token_list_t * myhtml_tree_special_list_destroy(myhtml_tree_special_token_list_t* special, mybool_t self_destroy)
+myhtml_tree_special_token_list_t * myhtml_tree_special_list_destroy(myhtml_tree_special_token_list_t* special, bool self_destroy)
{
if(special == NULL)
return NULL;
diff --git a/source/myhtml/tree.h b/source/myhtml/tree.h
index 95e99ea..ffb2798 100644
--- a/source/myhtml/tree.h
+++ b/source/myhtml/tree.h
@@ -101,7 +101,7 @@ struct myhtml_async_args {
};
struct myhtml_tree_doctype {
- mybool_t is_html;
+ bool is_html;
char* attr_name;
char* attr_public;
char* attr_system;
@@ -166,6 +166,7 @@ struct myhtml_tree {
mcsync_t* sync;
mythread_queue_t* queue;
mythread_queue_t* single_queue;
+ myhtml_tag_t* tags;
// init id's
size_t mcasync_token_id;
@@ -185,6 +186,8 @@ struct myhtml_tree {
myhtml_tree_node_t* document;
myhtml_tree_node_t* fragment;
myhtml_tree_node_t* node_head;
+ myhtml_tree_node_t* node_html;
+ myhtml_tree_node_t* node_body;
myhtml_tree_node_t* node_form;
myhtml_tree_doctype_t doctype;
@@ -208,7 +211,7 @@ struct myhtml_tree {
enum myhtml_insertion_mode orig_insert_mode;
enum myhtml_tree_compat_mode compat_mode;
volatile enum myhtml_tree_flags flags;
- mybool_t foster_parenting;
+ bool foster_parenting;
size_t global_offset;
myhtml_encoding_t encoding;
@@ -227,6 +230,8 @@ myhtml_t * myhtml_tree_get_myhtml(myhtml_tree_t* tree);
myhtml_tag_t * myhtml_tree_get_tag(myhtml_tree_t* tree);
myhtml_tag_index_t * myhtml_tree_get_tag_index(myhtml_tree_t* tree);
myhtml_tree_node_t * myhtml_tree_get_document(myhtml_tree_t* tree);
+myhtml_tree_node_t * myhtml_tree_get_node_html(myhtml_tree_t* tree);
+myhtml_tree_node_t * myhtml_tree_get_node_body(myhtml_tree_t* tree);
mchar_async_t * myhtml_tree_get_mchar(myhtml_tree_t* tree);
size_t myhtml_tree_get_mchar_node_id(myhtml_tree_t* tree);
@@ -234,7 +239,7 @@ size_t myhtml_tree_get_mchar_node_id(myhtml_tree_t* tree);
// list
myhtml_tree_list_t * myhtml_tree_list_init(void);
void myhtml_tree_list_clean(myhtml_tree_list_t* list);
-myhtml_tree_list_t * myhtml_tree_list_destroy(myhtml_tree_list_t* list, mybool_t destroy_self);
+myhtml_tree_list_t * myhtml_tree_list_destroy(myhtml_tree_list_t* list, bool destroy_self);
void myhtml_tree_list_append(myhtml_tree_list_t* list, myhtml_tree_node_t* node);
void myhtml_tree_list_append_after_index(myhtml_tree_list_t* list, myhtml_tree_node_t* node, size_t index);
@@ -244,7 +249,7 @@ myhtml_tree_node_t * myhtml_tree_list_current_node(myhtml_tree_list_t* list);
// token list
myhtml_tree_token_list_t * myhtml_tree_token_list_init(void);
void myhtml_tree_token_list_clean(myhtml_tree_token_list_t* list);
-myhtml_tree_token_list_t * myhtml_tree_token_list_destroy(myhtml_tree_token_list_t* list, mybool_t destroy_self);
+myhtml_tree_token_list_t * myhtml_tree_token_list_destroy(myhtml_tree_token_list_t* list, bool destroy_self);
void myhtml_tree_token_list_append(myhtml_tree_token_list_t* list, myhtml_token_node_t* token);
void myhtml_tree_token_list_append_after_index(myhtml_tree_token_list_t* list, myhtml_token_node_t* token, size_t index);
@@ -255,7 +260,7 @@ myhtml_tree_list_t * myhtml_tree_active_formatting_init(myhtml_tree_t* tree);
void myhtml_tree_active_formatting_clean(myhtml_tree_t* tree);
myhtml_tree_list_t * myhtml_tree_active_formatting_destroy(myhtml_tree_t* tree);
-mybool_t myhtml_tree_active_formatting_is_marker(myhtml_tree_t* tree, myhtml_tree_node_t* idx);
+bool myhtml_tree_active_formatting_is_marker(myhtml_tree_t* tree, myhtml_tree_node_t* idx);
myhtml_tree_node_t* myhtml_tree_active_formatting_between_last_marker(myhtml_tree_t* tree, myhtml_tag_id_t tag_idx, size_t* return_idx);
void myhtml_tree_active_formatting_append(myhtml_tree_t* tree, myhtml_tree_node_t* node);
@@ -267,7 +272,7 @@ void myhtml_tree_active_formatting_remove_by_index(myhtml_tree_t* tree, size_t i
void myhtml_tree_active_formatting_reconstruction(myhtml_tree_t* tree);
void myhtml_tree_active_formatting_up_to_last_marker(myhtml_tree_t* tree);
-mybool_t myhtml_tree_active_formatting_find(myhtml_tree_t* tree, myhtml_tree_node_t* idx, size_t* return_idx);
+bool myhtml_tree_active_formatting_find(myhtml_tree_t* tree, myhtml_tree_node_t* idx, size_t* return_idx);
myhtml_tree_node_t* myhtml_tree_active_formatting_current_node(myhtml_tree_t* tree);
// open elements
@@ -281,17 +286,17 @@ myhtml_tree_node_t * myhtml_tree_adjusted_current_node(myhtml_tree_t* tree);
void myhtml_tree_open_elements_append(myhtml_tree_t* tree, myhtml_tree_node_t* node);
void myhtml_tree_open_elements_append_after_index(myhtml_tree_t* tree, myhtml_tree_node_t* node, size_t index);
void myhtml_tree_open_elements_pop(myhtml_tree_t* tree);
-void myhtml_tree_open_elements_pop_until(myhtml_tree_t* tree, myhtml_tag_id_t tag_idx, myhtml_namespace_t mynamespace, mybool_t is_exclude);
-void myhtml_tree_open_elements_pop_until_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node_idx, mybool_t is_exclude);
-void myhtml_tree_open_elements_pop_until_by_index(myhtml_tree_t* tree, size_t idx, mybool_t is_exclude);
+void myhtml_tree_open_elements_pop_until(myhtml_tree_t* tree, myhtml_tag_id_t tag_idx, myhtml_namespace_t mynamespace, bool is_exclude);
+void myhtml_tree_open_elements_pop_until_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node_idx, bool is_exclude);
+void myhtml_tree_open_elements_pop_until_by_index(myhtml_tree_t* tree, size_t idx, bool is_exclude);
void myhtml_tree_open_elements_remove(myhtml_tree_t* tree, myhtml_tree_node_t* node);
-mybool_t myhtml_tree_open_elements_find(myhtml_tree_t* tree, myhtml_tree_node_t* idx, size_t* pos);
-mybool_t myhtml_tree_open_elements_find_reverse(myhtml_tree_t* tree, myhtml_tree_node_t* idx, size_t* pos);
+bool myhtml_tree_open_elements_find(myhtml_tree_t* tree, myhtml_tree_node_t* idx, size_t* pos);
+bool myhtml_tree_open_elements_find_reverse(myhtml_tree_t* tree, myhtml_tree_node_t* idx, size_t* pos);
myhtml_tree_node_t * myhtml_tree_open_elements_find_by_tag_idx(myhtml_tree_t* tree, myhtml_tag_id_t tag_idx, myhtml_namespace_t mynamespace, size_t* return_index);
myhtml_tree_node_t * myhtml_tree_open_elements_find_by_tag_idx_reverse(myhtml_tree_t* tree, myhtml_tag_id_t tag_idx, myhtml_namespace_t mynamespace, size_t* return_index);
myhtml_tree_node_t * myhtml_tree_element_in_scope(myhtml_tree_t* tree, myhtml_tag_id_t tag_idx, myhtml_namespace_t mynamespace, enum myhtml_tag_categories category);
-mybool_t myhtml_tree_element_in_scope_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, enum myhtml_tag_categories category);
+bool myhtml_tree_element_in_scope_by_node(myhtml_tree_t* tree, myhtml_tree_node_t* node, enum myhtml_tag_categories category);
void myhtml_tree_generate_implied_end_tags(myhtml_tree_t* tree, myhtml_tag_id_t exclude_tag_idx, myhtml_namespace_t mynamespace);
void myhtml_tree_generate_all_implied_end_tags(myhtml_tree_t* tree, myhtml_tag_id_t exclude_tag_idx, myhtml_namespace_t mynamespace);
myhtml_tree_node_t * myhtml_tree_appropriate_place_inserting(myhtml_tree_t* tree, myhtml_tree_node_t* override_target, enum myhtml_tree_insertion_mode* mode);
@@ -307,7 +312,7 @@ void myhtml_tree_template_insertion_pop(myhtml_tree_t* tree);
void myhtml_tree_reset_insertion_mode_appropriately(myhtml_tree_t* tree);
-mybool_t myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_id_t subject_tag_idx);
+bool myhtml_tree_adoption_agency_algorithm(myhtml_tree_t* tree, myhtml_tag_id_t subject_tag_idx);
size_t myhtml_tree_template_insertion_length(myhtml_tree_t* tree);
// other for a tree
@@ -357,13 +362,13 @@ void myhtml_tree_clear_stack_back_table_body_context(myhtml_tree_t* tree);
void myhtml_tree_clear_stack_back_table_row_context(myhtml_tree_t* tree);
void myhtml_tree_close_cell(myhtml_tree_t* tree, myhtml_tree_node_t* tr_or_th_node);
-mybool_t myhtml_tree_is_mathml_integration_point(myhtml_tree_t* tree, myhtml_tree_node_t* node);
-mybool_t myhtml_tree_is_html_integration_point(myhtml_tree_t* tree, myhtml_tree_node_t* node);
+bool myhtml_tree_is_mathml_integration_point(myhtml_tree_t* tree, myhtml_tree_node_t* node);
+bool myhtml_tree_is_html_integration_point(myhtml_tree_t* tree, myhtml_tree_node_t* node);
// temp tag name
myhtml_status_t myhtml_tree_temp_tag_name_init(myhtml_tree_temp_tag_name_t* temp_tag_name);
void myhtml_tree_temp_tag_name_clean(myhtml_tree_temp_tag_name_t* temp_tag_name);
-myhtml_tree_temp_tag_name_t * myhtml_tree_temp_tag_name_destroy(myhtml_tree_temp_tag_name_t* temp_tag_name, mybool_t self_destroy);
+myhtml_tree_temp_tag_name_t * myhtml_tree_temp_tag_name_destroy(myhtml_tree_temp_tag_name_t* temp_tag_name, bool self_destroy);
myhtml_status_t myhtml_tree_temp_tag_name_append(myhtml_tree_temp_tag_name_t* temp_tag_name, const char* name, size_t name_len);
myhtml_status_t myhtml_tree_temp_tag_name_append_one(myhtml_tree_temp_tag_name_t* temp_tag_name, const char name);
diff --git a/source/myhtml/utils/mchar_async.c b/source/myhtml/utils/mchar_async.c
index 870a1e7..71321bb 100644
--- a/source/myhtml/utils/mchar_async.c
+++ b/source/myhtml/utils/mchar_async.c
@@ -81,7 +81,7 @@ mchar_async_t * mchar_async_destroy(mchar_async_t *mchar_async, int destroy_self
for (size_t node_idx = 0; node_idx < mchar_async->nodes_length; node_idx++)
{
mchar_async_node_t *node = &mchar_async->nodes[node_idx];
- mchar_async_cache_destroy(&node->cache, myfalse);
+ mchar_async_cache_destroy(&node->cache, false);
}
free(mchar_async->nodes);
@@ -110,7 +110,7 @@ mchar_async_t * mchar_async_destroy(mchar_async_t *mchar_async, int destroy_self
mchar_async->chunks = NULL;
}
- mchar_async_cache_destroy(&mchar_async->chunk_cache, myfalse);
+ mchar_async_cache_destroy(&mchar_async->chunk_cache, false);
mchar_async->mcsync = mcsync_destroy(mchar_async->mcsync, 1);
@@ -141,7 +141,7 @@ void mchar_async_mem_malloc(mchar_async_t *mchar_async, mchar_async_node_t *node
chunk->size = mchar_async->origin_size;
if(length > chunk->size)
- chunk->size += length;
+ chunk->size = length;
chunk->begin = (char*)mymalloc(chunk->size * sizeof(char));
}
@@ -276,7 +276,7 @@ void mchar_async_node_delete(mchar_async_t *mchar_async, size_t node_idx)
}
if(node->cache.nodes)
- free(node->cache.nodes);
+ mchar_async_cache_destroy(&node->cache, false);
memset(node, 0, sizeof(mchar_async_node_t));
@@ -406,10 +406,10 @@ char * mchar_async_realloc(mchar_async_t *mchar_async, size_t node_idx, char *da
size_t next_size = (node->chunk->length - curr_size) + new_size;
if(next_size <= node->chunk->size) {
- node->chunk->length = next_size;
-
/* it`s Magic */
- *((size_t*)(&node->chunk->begin[ ((node->chunk->length - new_size) - sizeof(size_t)) ])) = new_size;
+ *((size_t*)(&node->chunk->begin[ ((node->chunk->length - curr_size) - sizeof(size_t)) ])) = new_size;
+
+ node->chunk->length = next_size;
return data;
}
@@ -508,7 +508,7 @@ void mchar_async_cache_clean(mchar_async_cache_t *cache)
}
}
-mchar_async_cache_t * mchar_async_cache_destroy(mchar_async_cache_t *cache, mybool_t self_destroy)
+mchar_async_cache_t * mchar_async_cache_destroy(mchar_async_cache_t *cache, bool self_destroy)
{
if(cache == NULL)
return NULL;
diff --git a/source/myhtml/utils/mchar_async.h b/source/myhtml/utils/mchar_async.h
index 3f53d4b..b1260a9 100644
--- a/source/myhtml/utils/mchar_async.h
+++ b/source/myhtml/utils/mchar_async.h
@@ -113,7 +113,7 @@ char * mchar_async_crop_first_chars_without_cache(char *data, size_t crop_len);
// cache
void mchar_async_cache_init(mchar_async_cache_t *cache);
-mchar_async_cache_t * mchar_async_cache_destroy(mchar_async_cache_t *cache, mybool_t self_destroy);
+mchar_async_cache_t * mchar_async_cache_destroy(mchar_async_cache_t *cache, bool self_destroy);
void mchar_async_cache_clean(mchar_async_cache_t *cache);
void mchar_async_cache_add(mchar_async_cache_t *cache, void* value, size_t size);
diff --git a/source/myhtml/utils/mctree.c b/source/myhtml/utils/mctree.c
index 9bc9663..0a40830 100644
--- a/source/myhtml/utils/mctree.c
+++ b/source/myhtml/utils/mctree.c
@@ -16,6 +16,7 @@
Author: lex.borisov@gmail.com (Alexander Borisov)
*/
+#include "myhtml/utils/resources.h"
#include "myhtml/utils/mctree.h"
diff --git a/source/myhtml/utils/mctree.h b/source/myhtml/utils/mctree.h
index c9a9078..635768f 100644
--- a/source/myhtml/utils/mctree.h
+++ b/source/myhtml/utils/mctree.h
@@ -51,7 +51,8 @@ extern "C" {
mctree_node_clean(__mctree__, __mctree__->nodes_length)
#define mctree_make_first_idx(__mctree__, __key__, __size__) \
- (((int)(__key__[0]) + (int)(__key__[__size__ - 1])) % __mctree__->start_size) + 1
+ ((myhtml_string_chars_lowercase_map[ (const unsigned char)(__key__[0]) ] + myhtml_string_chars_lowercase_map[ (const unsigned char)(__key__[__size__ - 1]) ]) % __mctree__->start_size) + 1
+
typedef size_t mctree_index_t;
diff --git a/source/myhtml/utils/resources.h b/source/myhtml/utils/resources.h
new file mode 100644
index 0000000..ac1224d
--- /dev/null
+++ b/source/myhtml/utils/resources.h
@@ -0,0 +1,174 @@
+/*
+ Copyright 2015-2016 Alexander Borisov
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ Author: lex.borisov@gmail.com (Alexander Borisov)
+*/
+
+#ifndef MyHTML_UTILS_RESOURCES_H
+#define MyHTML_UTILS_RESOURCES_H
+#pragma once
+
+#include <stddef.h>
+
+static const unsigned char myhtml_string_chars_num_map[] = {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff
+};
+
+static const unsigned char myhtml_string_chars_hex_map[] = {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0x0b,
+ 0x0c, 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff
+};
+
+static const unsigned char myhtml_string_chars_lowercase_map[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+ 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11,
+ 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
+ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
+ 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c,
+ 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
+ 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
+ 0x3f, 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
+ 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
+ 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
+ 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b,
+ 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74,
+ 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d,
+ 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86,
+ 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
+ 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1,
+ 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa,
+ 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3,
+ 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc,
+ 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5,
+ 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
+ 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
+ 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+ 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2,
+ 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb,
+ 0xfc, 0xfd, 0xfe, 0xff
+};
+
+static const size_t replacement_character[] = {
+ 65533, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 8364, 129, 8218, 402, 8222, 8230, 8224,
+ 8225, 710, 8240, 352, 8249, 338, 141, 381, 143,
+ 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732,
+ 8482, 353, 8250, 339, 157, 382, 376
+};
+
+static const size_t myhtml_string_alphanumeric_character[] = {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a,
+ 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d,
+ 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a,
+ 0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x0d,
+ 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a,
+ 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d,
+ 0x0e, 0x0f, 0x0a, 0x0b, 0x0c, 0x0d, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff
+};
+
+#endif /* MyHTML_UTILS_RESOURCES_H */