cdef extern from "myhtml/myhtml.h" nogil: ctypedef unsigned int mystatus_t ctypedef struct myhtml_t ctypedef size_t myhtml_tag_id_t ctypedef struct myhtml_tree_t: # not completed struct myhtml_t* myhtml myhtml_tree_node_t* document myhtml_tree_node_t* node_html ctypedef struct mchar_async_t ctypedef struct mycore_string_t: char* data size_t size size_t length mchar_async_t *mchar size_t node_idx ctypedef struct mycore_string_raw_t: char* data size_t size size_t length myhtml_namespace ns ctypedef enum myhtml_options: MyHTML_OPTIONS_DEFAULT = 0x00 MyHTML_OPTIONS_PARSE_MODE_SINGLE = 0x01 MyHTML_OPTIONS_PARSE_MODE_ALL_IN_ONE = 0x02 MyHTML_OPTIONS_PARSE_MODE_SEPARATELY = 0x04 ctypedef struct myhtml_collection_t: myhtml_tree_node_t **list size_t size size_t length ctypedef struct myhtml_tree_node_t: myhtml_tree_node_flags flags myhtml_tag_id_t tag_id myhtml_namespace ns myhtml_tree_node_t* prev myhtml_tree_node_t* next myhtml_tree_node_t* child myhtml_tree_node_t* parent myhtml_tree_node_t* last_child myhtml_token_node_t* token void* data myhtml_tree_t* tree ctypedef enum myhtml_namespace: MyHTML_NAMESPACE_UNDEF = 0x00 MyHTML_NAMESPACE_HTML = 0x01 MyHTML_NAMESPACE_MATHML = 0x02 MyHTML_NAMESPACE_SVG = 0x03 MyHTML_NAMESPACE_XLINK = 0x04 MyHTML_NAMESPACE_XML = 0x05 MyHTML_NAMESPACE_XMLNS = 0x06 MyHTML_NAMESPACE_ANY = 0x07 MyHTML_NAMESPACE_LAST_ENTRY = 0x07 ctypedef enum myhtml_tree_node_flags: MyHTML_TREE_NODE_UNDEF = 0 MyHTML_TREE_NODE_PARSER_INSERTED = 1 MyHTML_TREE_NODE_BLOCKING = 2 ctypedef enum myhtml_token_type: MyHTML_TOKEN_TYPE_OPEN = 0x000 MyHTML_TOKEN_TYPE_CLOSE = 0x001 MyHTML_TOKEN_TYPE_CLOSE_SELF = 0x002 MyHTML_TOKEN_TYPE_DONE = 0x004 MyHTML_TOKEN_TYPE_WHITESPACE = 0x008 MyHTML_TOKEN_TYPE_RCDATA = 0x010 MyHTML_TOKEN_TYPE_RAWTEXT = 0x020 MyHTML_TOKEN_TYPE_SCRIPT = 0x040 MyHTML_TOKEN_TYPE_PLAINTEXT = 0x080 MyHTML_TOKEN_TYPE_CDATA = 0x100 MyHTML_TOKEN_TYPE_DATA = 0x200 MyHTML_TOKEN_TYPE_COMMENT = 0x400 MyHTML_TOKEN_TYPE_NULL = 0x800 ctypedef enum myhtml_tags: MyHTML_TAG__UNDEF = 0x000 MyHTML_TAG__TEXT = 0x001 MyHTML_TAG__COMMENT = 0x002 MyHTML_TAG__DOCTYPE = 0x003 MyHTML_TAG_A = 0x004 MyHTML_TAG_ABBR = 0x005 MyHTML_TAG_ACRONYM = 0x006 MyHTML_TAG_ADDRESS = 0x007 MyHTML_TAG_ANNOTATION_XML = 0x008 MyHTML_TAG_APPLET = 0x009 MyHTML_TAG_AREA = 0x00a MyHTML_TAG_ARTICLE = 0x00b MyHTML_TAG_ASIDE = 0x00c MyHTML_TAG_AUDIO = 0x00d MyHTML_TAG_B = 0x00e MyHTML_TAG_BASE = 0x00f MyHTML_TAG_BASEFONT = 0x010 MyHTML_TAG_BDI = 0x011 MyHTML_TAG_BDO = 0x012 MyHTML_TAG_BGSOUND = 0x013 MyHTML_TAG_BIG = 0x014 MyHTML_TAG_BLINK = 0x015 MyHTML_TAG_BLOCKQUOTE = 0x016 MyHTML_TAG_BODY = 0x017 MyHTML_TAG_BR = 0x018 MyHTML_TAG_BUTTON = 0x019 MyHTML_TAG_CANVAS = 0x01a MyHTML_TAG_CAPTION = 0x01b MyHTML_TAG_CENTER = 0x01c MyHTML_TAG_CITE = 0x01d MyHTML_TAG_CODE = 0x01e MyHTML_TAG_COL = 0x01f MyHTML_TAG_COLGROUP = 0x020 MyHTML_TAG_COMMAND = 0x021 MyHTML_TAG_COMMENT = 0x022 MyHTML_TAG_DATALIST = 0x023 MyHTML_TAG_DD = 0x024 MyHTML_TAG_DEL = 0x025 MyHTML_TAG_DETAILS = 0x026 MyHTML_TAG_DFN = 0x027 MyHTML_TAG_DIALOG = 0x028 MyHTML_TAG_DIR = 0x029 MyHTML_TAG_DIV = 0x02a MyHTML_TAG_DL = 0x02b MyHTML_TAG_DT = 0x02c MyHTML_TAG_EM = 0x02d MyHTML_TAG_EMBED = 0x02e MyHTML_TAG_FIELDSET = 0x02f MyHTML_TAG_FIGCAPTION = 0x030 MyHTML_TAG_FIGURE = 0x031 MyHTML_TAG_FONT = 0x032 MyHTML_TAG_FOOTER = 0x033 MyHTML_TAG_FORM = 0x034 MyHTML_TAG_FRAME = 0x035 MyHTML_TAG_FRAMESET = 0x036 MyHTML_TAG_H1 = 0x037 MyHTML_TAG_H2 = 0x038 MyHTML_TAG_H3 = 0x039 MyHTML_TAG_H4 = 0x03a MyHTML_TAG_H5 = 0x03b MyHTML_TAG_H6 = 0x03c MyHTML_TAG_HEAD = 0x03d MyHTML_TAG_HEADER = 0x03e MyHTML_TAG_HGROUP = 0x03f MyHTML_TAG_HR = 0x040 MyHTML_TAG_HTML = 0x041 MyHTML_TAG_I = 0x042 MyHTML_TAG_IFRAME = 0x043 MyHTML_TAG_IMAGE = 0x044 MyHTML_TAG_IMG = 0x045 MyHTML_TAG_INPUT = 0x046 MyHTML_TAG_INS = 0x047 MyHTML_TAG_ISINDEX = 0x048 MyHTML_TAG_KBD = 0x049 MyHTML_TAG_KEYGEN = 0x04a MyHTML_TAG_LABEL = 0x04b MyHTML_TAG_LEGEND = 0x04c MyHTML_TAG_LI = 0x04d MyHTML_TAG_LINK = 0x04e MyHTML_TAG_LISTING = 0x04f MyHTML_TAG_MAIN = 0x050 MyHTML_TAG_MAP = 0x051 MyHTML_TAG_MARK = 0x052 MyHTML_TAG_MARQUEE = 0x053 MyHTML_TAG_MENU = 0x054 MyHTML_TAG_MENUITEM = 0x055 MyHTML_TAG_META = 0x056 MyHTML_TAG_METER = 0x057 MyHTML_TAG_MTEXT = 0x058 MyHTML_TAG_NAV = 0x059 MyHTML_TAG_NOBR = 0x05a MyHTML_TAG_NOEMBED = 0x05b MyHTML_TAG_NOFRAMES = 0x05c MyHTML_TAG_NOSCRIPT = 0x05d MyHTML_TAG_OBJECT = 0x05e MyHTML_TAG_OL = 0x05f MyHTML_TAG_OPTGROUP = 0x060 MyHTML_TAG_OPTION = 0x061 MyHTML_TAG_OUTPUT = 0x062 MyHTML_TAG_P = 0x063 MyHTML_TAG_PARAM = 0x064 MyHTML_TAG_PLAINTEXT = 0x065 MyHTML_TAG_PRE = 0x066 MyHTML_TAG_PROGRESS = 0x067 MyHTML_TAG_Q = 0x068 MyHTML_TAG_RB = 0x069 MyHTML_TAG_RP = 0x06a MyHTML_TAG_RT = 0x06b MyHTML_TAG_RTC = 0x06c MyHTML_TAG_RUBY = 0x06d MyHTML_TAG_S = 0x06e MyHTML_TAG_SAMP = 0x06f MyHTML_TAG_SCRIPT = 0x070 MyHTML_TAG_SECTION = 0x071 MyHTML_TAG_SELECT = 0x072 MyHTML_TAG_SMALL = 0x073 MyHTML_TAG_SOURCE = 0x074 MyHTML_TAG_SPAN = 0x075 MyHTML_TAG_STRIKE = 0x076 MyHTML_TAG_STRONG = 0x077 MyHTML_TAG_STYLE = 0x078 MyHTML_TAG_SUB = 0x079 MyHTML_TAG_SUMMARY = 0x07a MyHTML_TAG_SUP = 0x07b MyHTML_TAG_SVG = 0x07c MyHTML_TAG_TABLE = 0x07d MyHTML_TAG_TBODY = 0x07e MyHTML_TAG_TD = 0x07f MyHTML_TAG_TEMPLATE = 0x080 MyHTML_TAG_TEXTAREA = 0x081 MyHTML_TAG_TFOOT = 0x082 MyHTML_TAG_TH = 0x083 MyHTML_TAG_THEAD = 0x084 MyHTML_TAG_TIME = 0x085 MyHTML_TAG_TITLE = 0x086 MyHTML_TAG_TR = 0x087 MyHTML_TAG_TRACK = 0x088 MyHTML_TAG_TT = 0x089 MyHTML_TAG_U = 0x08a MyHTML_TAG_UL = 0x08b MyHTML_TAG_VAR = 0x08c MyHTML_TAG_VIDEO = 0x08d MyHTML_TAG_WBR = 0x08e MyHTML_TAG_XMP = 0x08f MyHTML_TAG_ALTGLYPH = 0x090 MyHTML_TAG_ALTGLYPHDEF = 0x091 MyHTML_TAG_ALTGLYPHITEM = 0x092 MyHTML_TAG_ANIMATE = 0x093 MyHTML_TAG_ANIMATECOLOR = 0x094 MyHTML_TAG_ANIMATEMOTION = 0x095 MyHTML_TAG_ANIMATETRANSFORM = 0x096 MyHTML_TAG_CIRCLE = 0x097 MyHTML_TAG_CLIPPATH = 0x098 MyHTML_TAG_COLOR_PROFILE = 0x099 MyHTML_TAG_CURSOR = 0x09a MyHTML_TAG_DEFS = 0x09b MyHTML_TAG_DESC = 0x09c MyHTML_TAG_ELLIPSE = 0x09d MyHTML_TAG_FEBLEND = 0x09e MyHTML_TAG_FECOLORMATRIX = 0x09f MyHTML_TAG_FECOMPONENTTRANSFER = 0x0a0 MyHTML_TAG_FECOMPOSITE = 0x0a1 MyHTML_TAG_FECONVOLVEMATRIX = 0x0a2 MyHTML_TAG_FEDIFFUSELIGHTING = 0x0a3 MyHTML_TAG_FEDISPLACEMENTMAP = 0x0a4 MyHTML_TAG_FEDISTANTLIGHT = 0x0a5 MyHTML_TAG_FEDROPSHADOW = 0x0a6 MyHTML_TAG_FEFLOOD = 0x0a7 MyHTML_TAG_FEFUNCA = 0x0a8 MyHTML_TAG_FEFUNCB = 0x0a9 MyHTML_TAG_FEFUNCG = 0x0aa MyHTML_TAG_FEFUNCR = 0x0ab MyHTML_TAG_FEGAUSSIANBLUR = 0x0ac MyHTML_TAG_FEIMAGE = 0x0ad MyHTML_TAG_FEMERGE = 0x0ae MyHTML_TAG_FEMERGENODE = 0x0af MyHTML_TAG_FEMORPHOLOGY = 0x0b0 MyHTML_TAG_FEOFFSET = 0x0b1 MyHTML_TAG_FEPOINTLIGHT = 0x0b2 MyHTML_TAG_FESPECULARLIGHTING = 0x0b3 MyHTML_TAG_FESPOTLIGHT = 0x0b4 MyHTML_TAG_FETILE = 0x0b5 MyHTML_TAG_FETURBULENCE = 0x0b6 MyHTML_TAG_FILTER = 0x0b7 MyHTML_TAG_FONT_FACE = 0x0b8 MyHTML_TAG_FONT_FACE_FORMAT = 0x0b9 MyHTML_TAG_FONT_FACE_NAME = 0x0ba MyHTML_TAG_FONT_FACE_SRC = 0x0bb MyHTML_TAG_FONT_FACE_URI = 0x0bc MyHTML_TAG_FOREIGNOBJECT = 0x0bd MyHTML_TAG_G = 0x0be MyHTML_TAG_GLYPH = 0x0bf MyHTML_TAG_GLYPHREF = 0x0c0 MyHTML_TAG_HKERN = 0x0c1 MyHTML_TAG_LINE = 0x0c2 MyHTML_TAG_LINEARGRADIENT = 0x0c3 MyHTML_TAG_MARKER = 0x0c4 MyHTML_TAG_MASK = 0x0c5 MyHTML_TAG_METADATA = 0x0c6 MyHTML_TAG_MISSING_GLYPH = 0x0c7 MyHTML_TAG_MPATH = 0x0c8 MyHTML_TAG_PATH = 0x0c9 MyHTML_TAG_PATTERN = 0x0ca MyHTML_TAG_POLYGON = 0x0cb MyHTML_TAG_POLYLINE = 0x0cc MyHTML_TAG_RADIALGRADIENT = 0x0cd MyHTML_TAG_RECT = 0x0ce MyHTML_TAG_SET = 0x0cf MyHTML_TAG_STOP = 0x0d0 MyHTML_TAG_SWITCH = 0x0d1 MyHTML_TAG_SYMBOL = 0x0d2 MyHTML_TAG_TEXT = 0x0d3 MyHTML_TAG_TEXTPATH = 0x0d4 MyHTML_TAG_TREF = 0x0d5 MyHTML_TAG_TSPAN = 0x0d6 MyHTML_TAG_USE = 0x0d7 MyHTML_TAG_VIEW = 0x0d8 MyHTML_TAG_VKERN = 0x0d9 MyHTML_TAG_MATH = 0x0da MyHTML_TAG_MACTION = 0x0db MyHTML_TAG_MALIGNGROUP = 0x0dc MyHTML_TAG_MALIGNMARK = 0x0dd MyHTML_TAG_MENCLOSE = 0x0de MyHTML_TAG_MERROR = 0x0df MyHTML_TAG_MFENCED = 0x0e0 MyHTML_TAG_MFRAC = 0x0e1 MyHTML_TAG_MGLYPH = 0x0e2 MyHTML_TAG_MI = 0x0e3 MyHTML_TAG_MLABELEDTR = 0x0e4 MyHTML_TAG_MLONGDIV = 0x0e5 MyHTML_TAG_MMULTISCRIPTS = 0x0e6 MyHTML_TAG_MN = 0x0e7 MyHTML_TAG_MO = 0x0e8 MyHTML_TAG_MOVER = 0x0e9 MyHTML_TAG_MPADDED = 0x0ea MyHTML_TAG_MPHANTOM = 0x0eb MyHTML_TAG_MROOT = 0x0ec MyHTML_TAG_MROW = 0x0ed MyHTML_TAG_MS = 0x0ee MyHTML_TAG_MSCARRIES = 0x0ef MyHTML_TAG_MSCARRY = 0x0f0 MyHTML_TAG_MSGROUP = 0x0f1 MyHTML_TAG_MSLINE = 0x0f2 MyHTML_TAG_MSPACE = 0x0f3 MyHTML_TAG_MSQRT = 0x0f4 MyHTML_TAG_MSROW = 0x0f5 MyHTML_TAG_MSTACK = 0x0f6 MyHTML_TAG_MSTYLE = 0x0f7 MyHTML_TAG_MSUB = 0x0f8 MyHTML_TAG_MSUP = 0x0f9 MyHTML_TAG_MSUBSUP = 0x0fa MyHTML_TAG__END_OF_FILE = 0x0fb MyHTML_TAG_FIRST_ENTRY = MyHTML_TAG__TEXT MyHTML_TAG_LAST_ENTRY = 0x0fc ctypedef enum myhtml_tree_parse_flags_t: MyHTML_TREE_PARSE_FLAGS_CLEAN = 0x000 MyHTML_TREE_PARSE_FLAGS_WITHOUT_BUILD_TREE = 0x001 MyHTML_TREE_PARSE_FLAGS_WITHOUT_PROCESS_TOKEN = 0x003 MyHTML_TREE_PARSE_FLAGS_SKIP_WHITESPACE_TOKEN = 0x004 MyHTML_TREE_PARSE_FLAGS_WITHOUT_DOCTYPE_IN_TREE = 0x008 ctypedef struct myhtml_token_node_t: myhtml_tag_id_t tag_id mycore_string_t str size_t raw_begin size_t raw_length size_t element_begin size_t element_length myhtml_token_attr_t* attr_first myhtml_token_attr_t* attr_last myhtml_token_type type ctypedef struct myhtml_token_attr_t: myhtml_token_attr_t* next myhtml_token_attr_t* prev mycore_string_t key mycore_string_t value size_t raw_key_begin size_t raw_key_length size_t raw_value_begin size_t raw_value_length myhtml_namespace ns ctypedef struct myhtml_tree_attr_t: myhtml_tree_attr_t* next myhtml_tree_attr_t* prev mycore_string_t key mycore_string_t value size_t raw_key_begin size_t raw_key_length size_t raw_value_begin size_t raw_value_length myhtml_t * myhtml_create() mystatus_t myhtml_init(myhtml_t* myhtml, myhtml_options opt, size_t thread_count, size_t queue_size) myhtml_tree_t * myhtml_tree_create() mystatus_t myhtml_tree_init(myhtml_tree_t* tree, myhtml_t* myhtml) mystatus_t myhtml_parse(myhtml_tree_t* tree, myencoding_t encoding, const char* html, size_t html_size) myhtml_tree_attr_t* myhtml_node_attribute_first(myhtml_tree_node_t* node) myhtml_tree_attr_t* myhtml_attribute_by_key(myhtml_tree_node_t *node, const char *key, size_t key_len) const char* myhtml_node_text(myhtml_tree_node_t *node, size_t *length) mycore_string_t * myhtml_node_string(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_collection_t * myhtml_collection_destroy(myhtml_collection_t *collection) myhtml_tree_t * myhtml_tree_destroy(myhtml_tree_t* tree) myhtml_t* myhtml_destroy(myhtml_t* myhtml) myhtml_tree_node_t* myhtml_tree_get_document(myhtml_tree_t* tree) myhtml_tree_node_t* myhtml_tree_get_node_body(myhtml_tree_t* tree) myhtml_tree_node_t* myhtml_tree_get_node_head(myhtml_tree_t* tree) myhtml_collection_t* myhtml_get_nodes_by_name(myhtml_tree_t* tree, myhtml_collection_t *collection, const char* name, size_t length, mystatus_t *status) void myhtml_node_delete(myhtml_tree_node_t *node) void myhtml_node_delete_recursive(myhtml_tree_node_t *node) void myhtml_tree_parse_flags_set(myhtml_tree_t* tree, myhtml_tree_parse_flags_t parse_flags) myhtml_tree_node_t * myhtml_node_insert_before(myhtml_tree_node_t *target, myhtml_tree_node_t *node) myhtml_tree_node_t * myhtml_node_insert_after(myhtml_tree_node_t *target, myhtml_tree_node_t *node) myhtml_tree_node_t * myhtml_node_create(myhtml_tree_t* tree, myhtml_tag_id_t tag_id, myhtml_namespace ns) myhtml_tree_node_t * myhtml_node_clone_deep(myhtml_tree_t* dest_tree, myhtml_tree_node_t* src) myhtml_tree_node_t * myhtml_node_append_child(myhtml_tree_node_t* target, myhtml_tree_node_t* node) mycore_string_t * myhtml_node_text_set(myhtml_tree_node_t *node, const char* text, size_t length, myencoding_t encoding) myhtml_tree_attr_t * myhtml_attribute_by_key(myhtml_tree_node_t *node, const char *key, size_t key_len) myhtml_tree_attr_t * myhtml_attribute_remove_by_key(myhtml_tree_node_t *node, const char *key, size_t key_len) myhtml_tree_attr_t * myhtml_attribute_add(myhtml_tree_node_t *node, const char *key, size_t key_len, const char *value, size_t value_len, myencoding_t encoding) myhtml_tree_node_t * myhtml_node_insert_to_appropriate_place(myhtml_tree_node_t *target, myhtml_tree_node_t *node) cdef extern from "myhtml/tree.h" nogil: myhtml_tree_node_t * myhtml_tree_node_clone(myhtml_tree_node_t* node) myhtml_tree_node_t * myhtml_tree_node_insert_root(myhtml_tree_t* tree, myhtml_token_node_t* token, myhtml_namespace ns) void myhtml_tree_node_add_child(myhtml_tree_node_t* root, myhtml_tree_node_t* node) cdef extern from "myhtml/serialization.h" nogil: mystatus_t myhtml_serialization(myhtml_tree_node_t* scope_node, mycore_string_raw_t* str) cdef extern from "myencoding/encoding.h" nogil: ctypedef enum myencoding_t: MyENCODING_DEFAULT = 0x00 # MyENCODING_AUTO = 0x01 // future MyENCODING_NOT_DETERMINED = 0x02 MyENCODING_UTF_8 = 0x00 # default encoding MyENCODING_UTF_16LE = 0x04 MyENCODING_UTF_16BE = 0x05 MyENCODING_X_USER_DEFINED = 0x06 MyENCODING_BIG5 = 0x07 MyENCODING_EUC_JP = 0x08 MyENCODING_EUC_KR = 0x09 MyENCODING_GB18030 = 0x0a MyENCODING_GBK = 0x0b MyENCODING_IBM866 = 0x0c MyENCODING_ISO_2022_JP = 0x0d MyENCODING_ISO_8859_10 = 0x0e MyENCODING_ISO_8859_13 = 0x0f MyENCODING_ISO_8859_14 = 0x10 MyENCODING_ISO_8859_15 = 0x11 MyENCODING_ISO_8859_16 = 0x12 MyENCODING_ISO_8859_2 = 0x13 MyENCODING_ISO_8859_3 = 0x14 MyENCODING_ISO_8859_4 = 0x15 MyENCODING_ISO_8859_5 = 0x16 MyENCODING_ISO_8859_6 = 0x17 MyENCODING_ISO_8859_7 = 0x18 MyENCODING_ISO_8859_8 = 0x19 MyENCODING_ISO_8859_8_I = 0x1a MyENCODING_KOI8_R = 0x1b MyENCODING_KOI8_U = 0x1c MyENCODING_MACINTOSH = 0x1d MyENCODING_SHIFT_JIS = 0x1e MyENCODING_WINDOWS_1250 = 0x1f MyENCODING_WINDOWS_1251 = 0x20 MyENCODING_WINDOWS_1252 = 0x21 MyENCODING_WINDOWS_1253 = 0x22 MyENCODING_WINDOWS_1254 = 0x23 MyENCODING_WINDOWS_1255 = 0x24 MyENCODING_WINDOWS_1256 = 0x25 MyENCODING_WINDOWS_1257 = 0x26 MyENCODING_WINDOWS_1258 = 0x27 MyENCODING_WINDOWS_874 = 0x28 MyENCODING_X_MAC_CYRILLIC = 0x29 MyENCODING_LAST_ENTRY = 0x2a bint myencoding_detect_bom(const char *text, size_t length, myencoding_t *encoding) bint myencoding_detect(const char *text, size_t length, myencoding_t *encoding) myencoding_t myencoding_prescan_stream_to_determine_encoding(const char *data, size_t data_size) const char* myencoding_name_by_id(myencoding_t encoding, size_t *length) cdef extern from "mycss/mycss.h" nogil: ctypedef struct mycss_entry_t: # not completed struct mycss_t* mycss ctypedef struct mycss_t ctypedef struct mycss_selectors_t ctypedef struct mycss_selectors_entries_list_t ctypedef struct mycss_declaration_entry_t ctypedef enum mycss_selectors_flags: MyCSS_SELECTORS_FLAGS_UNDEF = 0x00 MyCSS_SELECTORS_FLAGS_SELECTOR_BAD = 0x01 ctypedef mycss_selectors_flags mycss_selectors_flags_t ctypedef struct mycss_selectors_list_t: mycss_selectors_entries_list_t* entries_list size_t entries_list_length mycss_declaration_entry_t* declaration_entry mycss_selectors_flags_t flags mycss_selectors_list_t* parent mycss_selectors_list_t* next mycss_selectors_list_t* prev # CSS init routines mycss_t * mycss_create() mystatus_t mycss_init(mycss_t* mycss) mycss_entry_t * mycss_entry_create() mystatus_t mycss_entry_init(mycss_t* mycss, mycss_entry_t* entry) mycss_selectors_list_t * mycss_selectors_parse(mycss_selectors_t* selectors, myencoding_t encoding, const char* data, size_t data_size, mystatus_t* out_status) mycss_selectors_t * mycss_entry_selectors(mycss_entry_t* entry) mycss_selectors_list_t * mycss_selectors_list_destroy(mycss_selectors_t* selectors, mycss_selectors_list_t* selectors_list, bint self_destroy) mycss_entry_t * mycss_entry_destroy(mycss_entry_t* entry, bint self_destroy) mycss_t * mycss_destroy(mycss_t* mycss, bint self_destroy) cdef extern from "modest/finder/finder.h" nogil: ctypedef struct modest_finder_t modest_finder_t* modest_finder_create_simple() mystatus_t modest_finder_by_selectors_list(modest_finder_t* finder, myhtml_tree_node_t* scope_node, mycss_selectors_list_t* selector_list, myhtml_collection_t** collection) modest_finder_t * modest_finder_destroy(modest_finder_t* finder, bint self_destroy) cdef class HTMLParser: cdef myhtml_tree_t *html_tree cdef public bint detect_encoding cdef public bint use_meta_tags cdef myencoding_t _encoding cdef public unicode decode_errors cdef public bytes raw_html cdef object cached_script_texts cdef object cached_script_srcs cdef void _detect_encoding(self, char* html, size_t html_len) nogil cdef int _parse_html(self, char* html, size_t html_len) except -1 @staticmethod cdef HTMLParser from_tree( myhtml_tree_t * tree, bytes raw_html, bint detect_encoding, bint use_meta_tags, str decode_errors, myencoding_t encoding ) cdef class Stack: cdef size_t capacity cdef size_t top cdef myhtml_tree_node_t ** _stack cdef bint is_empty(self) cdef int push(self, myhtml_tree_node_t* res) except -1 cdef myhtml_tree_node_t * pop(self) cdef int resize(self) except -1