summaryrefslogtreecommitdiff
path: root/include/hubbub/functypes.h
blob: b52598010cb5f85af58082d5ff4c2612400bfc0c (plain)
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
128
129
130
/*
 * This file is part of Hubbub.
 * Licensed under the MIT License,
 *                http://www.opensource.org/licenses/mit-license.php
 * Copyright 2007-8 John-Mark Bell <jmb@netsurf-browser.org>
 */

#ifndef hubbub_functypes_h_
#define hubbub_functypes_h_

#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>

#include <hubbub/types.h>

/* Type of allocation function for hubbub */
typedef void *(*hubbub_alloc)(void *ptr, size_t size, void *pw);

/**
 * Type of token handling function
 */
typedef hubbub_error (*hubbub_token_handler)(
		const hubbub_token *token, void *pw);

/**
 * Type of parse error handling function
 */
typedef void (*hubbub_error_handler)(uint32_t line, uint32_t col,
		const char *message, void *pw);

/**
 * Type of tree comment node creation function
 */
typedef int (*hubbub_tree_create_comment)(void *ctx, const hubbub_string *data,
		void **result);

/**
 * Type of tree doctype node creation function
 */
typedef int (*hubbub_tree_create_doctype)(void *ctx,
		const hubbub_doctype *doctype,
		void **result);

/**
 * Type of tree element node creation function
 */
typedef int (*hubbub_tree_create_element)(void *ctx, const hubbub_tag *tag, 
		void **result);

/**
 * Type of tree text node creation function
 */
typedef int (*hubbub_tree_create_text)(void *ctx, const hubbub_string *data,
		void **result);

/**
 * Type of tree node reference function
 */
typedef int (*hubbub_tree_ref_node)(void *ctx, void *node);

/**
 * Type of tree node dereference function
 */
typedef int (*hubbub_tree_unref_node)(void *ctx, void *node);

/**
 * Type of tree node appending function
 */
typedef int (*hubbub_tree_append_child)(void *ctx, void *parent, void *child,
		void **result);

/**
 * Type of tree node insertion function
 */
typedef int (*hubbub_tree_insert_before)(void *ctx, void *parent, void *child,
		void *ref_child, void **result);

/**
 * Type of tree node removal function
 */
typedef int (*hubbub_tree_remove_child)(void *ctx, void *parent, void *child,
		void **result);

/**
 * Type of tree node cloning function
 */
typedef int (*hubbub_tree_clone_node)(void *ctx, void *node, bool deep,
		void **result);

/**
 * Type of child reparenting function
 */
typedef int (*hubbub_tree_reparent_children)(void *ctx, void *node, 
		void *new_parent);

/**
 * Type of parent node acquisition function
 */
typedef int (*hubbub_tree_get_parent)(void *ctx, void *node, bool element_only, 
		void **result);

/**
 * Type of child presence query function
 */
typedef int (*hubbub_tree_has_children)(void *ctx, void *node, bool *result);

/**
 * Type of form association function
 */
typedef int (*hubbub_tree_form_associate)(void *ctx, void *form, void *node);

/**
 * Type of attribute addition function
 */
typedef int (*hubbub_tree_add_attributes)(void *ctx, void *node,
		const hubbub_attribute *attributes, uint32_t n_attributes);

/**
 * Type of tree quirks mode notification function
 */
typedef int (*hubbub_tree_set_quirks_mode)(void *ctx, hubbub_quirks_mode mode);

/**
 * Type of encoding change notification function
 */
typedef int (*hubbub_tree_encoding_change)(void *ctx, const char *encname);

#endif