Photon 1.0.0
Loading...
Searching...
No Matches
gumbo.h
Go to the documentation of this file.
1// Copyright 2010 Google Inc. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// Author: jdtang@google.com (Jonathan Tang)
16//
17// We use Gumbo as a prefix for types, gumbo_ as a prefix for functions, and
18// GUMBO_ as a prefix for enum constants (static constants get the Google-style
19// kGumbo prefix).
20
42#ifndef GUMBO_GUMBO_H_
43#define GUMBO_GUMBO_H_
44
45#ifdef _MSC_VER
46#define _CRT_SECURE_NO_WARNINGS
47#define fileno _fileno
48#endif
49
50#include <stdbool.h>
51#include <stddef.h>
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
67typedef struct {
68 unsigned int line;
69 unsigned int column;
70 unsigned int offset;
72
78
88typedef struct {
90 const char* data;
91
93 size_t length;
95
98
104 const GumboStringPiece* str1, const GumboStringPiece* str2);
105
111 const GumboStringPiece* str1, const GumboStringPiece* str2);
112
122typedef struct {
126 void** data;
127
129 unsigned int length;
130
132 unsigned int capacity;
134
136extern const GumboVector kGumboEmptyVector;
137
142int gumbo_vector_index_of(GumboVector* vector, const void* element);
143
156typedef enum {
157// Load all the tags from an external source, generated from tag.in.
158#include "gumbo/tag_enum.h"
159 // Used for all tags that don't have special handling in HTML. Add new tags
160 // to the end of tag.in so as to preserve backwards-compatibility.
162 // A marker value to indicate the end of the enum, for iterating over it.
163 // Also used as the terminator for varargs functions that take tags.
165} GumboTag;
166
172const char* gumbo_normalized_tagname(GumboTag tag);
173
185
198const char* gumbo_normalize_svg_tagname(const GumboStringPiece* tagname);
199
204GumboTag gumbo_tag_enum(const char* tagname);
205GumboTag gumbo_tagn_enum(const char* tagname, unsigned int length);
206
218
279
285GumboAttribute* gumbo_get_attribute(const GumboVector* attrs, const char* name);
286
311
317
326
339
420
424typedef struct {
430 GumboVector /* GumboNode* */ children;
431
432 // True if there was an explicit doctype token as opposed to it being omitted.
434
435 // Fields from the doctype token, copied verbatim.
436 const char* name;
437 const char* public_identifier;
438 const char* system_identifier;
439
446
470
515
523
526
529
536
538 union {
539 GumboDocument document; // For GUMBO_NODE_DOCUMENT.
540 GumboElement element; // For GUMBO_NODE_ELEMENT.
541 GumboText text; // For everything else.
542 } v;
543};
544
551// TODO(jdtang): Add checks throughout the codebase for out-of-memory condition.
552typedef void* (*GumboAllocatorFunction)(void* userdata, size_t size);
553
558typedef void (*GumboDeallocatorFunction)(void* userdata, void* ptr);
559
623
626
650
658GumboOutput* gumbo_parse(const char* buffer);
659
665 const GumboOptions* options, const char* buffer, size_t buffer_length);
666
669
670#ifdef __cplusplus
671}
672#endif
673
674#endif // GUMBO_GUMBO_H_
Definition core.h:1032
auto ptr(T p) -> const void *
Definition format.h:4568
GumboAttributeNamespaceEnum
Definition gumbo.h:212
@ GUMBO_ATTR_NAMESPACE_XLINK
Definition gumbo.h:214
@ GUMBO_ATTR_NAMESPACE_XMLNS
Definition gumbo.h:216
@ GUMBO_ATTR_NAMESPACE_XML
Definition gumbo.h:215
@ GUMBO_ATTR_NAMESPACE_NONE
Definition gumbo.h:213
void(* GumboDeallocatorFunction)(void *userdata, void *ptr)
Definition gumbo.h:558
GumboOutput * gumbo_parse(const char *buffer)
Definition parser.c:3991
int gumbo_vector_index_of(GumboVector *vector, const void *element)
Definition vector.c:85
const char * gumbo_normalize_svg_tagname(const GumboStringPiece *tagname)
Definition parser.c:1674
GumboNamespaceEnum
Definition gumbo.h:334
@ GUMBO_NAMESPACE_MATHML
Definition gumbo.h:337
@ GUMBO_NAMESPACE_SVG
Definition gumbo.h:336
@ GUMBO_NAMESPACE_HTML
Definition gumbo.h:335
GumboTag
Definition gumbo.h:156
@ GUMBO_TAG_UNKNOWN
Definition gumbo.h:161
@ GUMBO_TAG_LAST
Definition gumbo.h:164
void *(* GumboAllocatorFunction)(void *userdata, size_t size)
Definition gumbo.h:552
bool gumbo_string_equals_ignore_case(const GumboStringPiece *str1, const GumboStringPiece *str2)
Definition string_piece.c:36
GumboNodeType
Definition gumbo.h:291
@ GUMBO_NODE_CDATA
Definition gumbo.h:299
@ GUMBO_NODE_TEXT
Definition gumbo.h:297
@ GUMBO_NODE_DOCUMENT
Definition gumbo.h:293
@ GUMBO_NODE_WHITESPACE
Definition gumbo.h:303
@ GUMBO_NODE_COMMENT
Definition gumbo.h:301
@ GUMBO_NODE_TEMPLATE
Definition gumbo.h:309
@ GUMBO_NODE_ELEMENT
Definition gumbo.h:295
GumboParseFlags
Definition gumbo.h:348
@ GUMBO_INSERTION_ADOPTION_AGENCY_CLONED
Definition gumbo.h:409
@ GUMBO_INSERTION_NORMAL
Definition gumbo.h:353
@ GUMBO_INSERTION_CONVERTED_FROM_END_TAG
Definition gumbo.h:390
@ GUMBO_INSERTION_IMPLICIT_END_TAG
Definition gumbo.h:374
@ GUMBO_INSERTION_FOSTER_PARENTED
Definition gumbo.h:418
@ GUMBO_INSERTION_RECONSTRUCTED_FORMATTING_ELEMENT
Definition gumbo.h:406
@ GUMBO_INSERTION_FROM_ISINDEX
Definition gumbo.h:396
@ GUMBO_INSERTION_ADOPTION_AGENCY_MOVED
Definition gumbo.h:412
@ GUMBO_INSERTION_BY_PARSER
Definition gumbo.h:361
@ GUMBO_INSERTION_IMPLIED
Definition gumbo.h:382
@ GUMBO_INSERTION_FROM_IMAGE
Definition gumbo.h:399
GumboTag gumbo_tagn_enum(const char *tagname, unsigned int length)
Definition tag.c:79
void gumbo_destroy_output(const GumboOptions *options, GumboOutput *output)
Definition parser.c:4102
GumboTag gumbo_tag_enum(const char *tagname)
Definition tag.c:92
bool gumbo_string_equals(const GumboStringPiece *str1, const GumboStringPiece *str2)
Definition string_piece.c:30
const char * gumbo_normalized_tagname(GumboTag tag)
Definition tag.c:35
const GumboStringPiece kGumboEmptyString
Definition string_piece.c:28
const GumboVector kGumboEmptyVector
Definition vector.c:28
GumboQuirksModeEnum
Definition gumbo.h:321
@ GUMBO_DOCTYPE_QUIRKS
Definition gumbo.h:323
@ GUMBO_DOCTYPE_LIMITED_QUIRKS
Definition gumbo.h:324
@ GUMBO_DOCTYPE_NO_QUIRKS
Definition gumbo.h:322
const GumboSourcePosition kGumboEmptySourcePosition
Definition util.c:32
void gumbo_tag_from_original_text(GumboStringPiece *text)
Definition tag.c:40
GumboAttribute * gumbo_get_attribute(const GumboVector *attrs, const char *name)
Definition attribute.c:28
struct GumboInternalOutput GumboOutput
GumboOutput * gumbo_parse_with_options(const GumboOptions *options, const char *buffer, size_t buffer_length)
Definition parser.c:3996
const GumboOptions kGumboDefaultOptions
Definition parser.c:62
struct GumboInternalOptions GumboOptions
Definition gumbo.h:224
GumboSourcePosition name_start
Definition gumbo.h:264
GumboSourcePosition name_end
Definition gumbo.h:271
GumboStringPiece original_value
Definition gumbo.h:261
GumboSourcePosition value_end
Definition gumbo.h:277
GumboStringPiece original_name
Definition gumbo.h:243
GumboAttributeNamespaceEnum attr_namespace
Definition gumbo.h:231
GumboSourcePosition value_start
Definition gumbo.h:274
const char * name
Definition gumbo.h:237
const char * value
Definition gumbo.h:251
Definition gumbo.h:424
bool has_doctype
Definition gumbo.h:433
GumboQuirksModeEnum doc_type_quirks_mode
Definition gumbo.h:444
const char * name
Definition gumbo.h:436
GumboVector children
Definition gumbo.h:430
const char * public_identifier
Definition gumbo.h:437
const char * system_identifier
Definition gumbo.h:438
Definition gumbo.h:475
GumboStringPiece original_end_tag
Definition gumbo.h:501
GumboNamespaceEnum tag_namespace
Definition gumbo.h:486
GumboSourcePosition start_pos
Definition gumbo.h:504
GumboVector attributes
Definition gumbo.h:513
GumboTag tag
Definition gumbo.h:483
GumboVector children
Definition gumbo.h:480
GumboStringPiece original_tag
Definition gumbo.h:494
GumboSourcePosition end_pos
Definition gumbo.h:507
Definition gumbo.h:520
GumboElement element
Definition gumbo.h:540
GumboText text
Definition gumbo.h:541
GumboDocument document
Definition gumbo.h:539
size_t index_within_parent
Definition gumbo.h:528
GumboNodeType type
Definition gumbo.h:522
GumboParseFlags parse_flags
Definition gumbo.h:535
union GumboInternalNode::@15 v
GumboNode * parent
Definition gumbo.h:525
Definition gumbo.h:566
GumboDeallocatorFunction deallocator
Definition gumbo.h:571
int max_errors
Definition gumbo.h:598
GumboTag fragment_context
Definition gumbo.h:613
int tab_stop
Definition gumbo.h:583
bool stop_on_first_error
Definition gumbo.h:589
GumboNamespaceEnum fragment_namespace
Definition gumbo.h:621
void * userdata
Definition gumbo.h:577
GumboAllocatorFunction allocator
Definition gumbo.h:568
Definition gumbo.h:628
GumboNode * root
Definition gumbo.h:639
GumboVector errors
Definition gumbo.h:648
GumboNode * document
Definition gumbo.h:633
Definition gumbo.h:67
unsigned int line
Definition gumbo.h:68
unsigned int offset
Definition gumbo.h:70
unsigned int column
Definition gumbo.h:69
Definition gumbo.h:88
const char * data
Definition gumbo.h:90
size_t length
Definition gumbo.h:93
Definition gumbo.h:451
GumboStringPiece original_text
Definition gumbo.h:462
const char * text
Definition gumbo.h:456
GumboSourcePosition start_pos
Definition gumbo.h:468
Definition gumbo.h:122
void ** data
Definition gumbo.h:126
unsigned int capacity
Definition gumbo.h:132
unsigned int length
Definition gumbo.h:129
annotation output
Definition tag_strings.h:122