|
ali@94
|
1 |
#ifndef COUNTERS_H
|
|
ali@94
|
2 |
#define COUNTERS_H
|
|
ali@94
|
3 |
|
|
ali@94
|
4 |
#include <glib.h>
|
|
ali@94
|
5 |
|
|
ali@123
|
6 |
#define COUNTERS_ERROR counters_error_quark()
|
|
ali@123
|
7 |
|
|
ali@123
|
8 |
typedef enum
|
|
ali@123
|
9 |
{
|
|
ali@123
|
10 |
COUNTERS_ERROR_FAILED, /* Generic failure */
|
|
ali@123
|
11 |
} CountersError;
|
|
ali@123
|
12 |
|
|
ali@103
|
13 |
/* Special counters live in the private use area */
|
|
ali@103
|
14 |
enum {
|
|
ali@103
|
15 |
COUNTER_ILLUSTRATION=0xE000,
|
|
ali@103
|
16 |
NO_SPECIAL_COUNTERS
|
|
ali@103
|
17 |
};
|
|
ali@103
|
18 |
|
|
ali@123
|
19 |
typedef enum {
|
|
ali@123
|
20 |
OPENING_QUOTE,
|
|
ali@123
|
21 |
CLOSING_QUOTE,
|
|
ali@123
|
22 |
NEUTRAL_QUOTE,
|
|
ali@123
|
23 |
INVALID_QUOTE
|
|
ali@123
|
24 |
} QuoteClass;
|
|
ali@123
|
25 |
|
|
ali@123
|
26 |
#define QUOTE_CLASS(c) \
|
|
ali@123
|
27 |
(((c)==CHAR_RD_QUOTE || (c)==CHAR_RS_QUOTE)?CLOSING_QUOTE: \
|
|
ali@123
|
28 |
((c)==CHAR_LD_QUOTE || (c)==CHAR_LS_QUOTE || (c)==CHAR_OPEN_SQUOTE)?\
|
|
ali@123
|
29 |
OPENING_QUOTE:((c)==CHAR_DQUOTE || (c)==CHAR_SQUOTE)?NEUTRAL_QUOTE:\
|
|
ali@123
|
30 |
INVALID_QUOTE)
|
|
ali@123
|
31 |
|
|
ali@94
|
32 |
struct counters {
|
|
ali@94
|
33 |
GTree *matching;
|
|
ali@94
|
34 |
int c_unders;
|
|
ali@123
|
35 |
GSList *open_quotes;
|
|
ali@94
|
36 |
};
|
|
ali@94
|
37 |
|
|
ali@123
|
38 |
GQuark counters_error_quark(void);
|
|
ali@123
|
39 |
gboolean innermost_quote_matches(struct counters *counters,gunichar ch);
|
|
ali@123
|
40 |
gboolean count_quote(struct counters *counters,gunichar ch,QuoteClass klass,
|
|
ali@123
|
41 |
GError **err);
|
|
ali@94
|
42 |
void increment_matching(struct counters *counters,gunichar ch,gboolean open);
|
|
ali@94
|
43 |
int matching_count(const struct counters *counters,gunichar ch,gboolean open);
|
|
ali@94
|
44 |
int matching_difference(const struct counters *counters,gunichar ch);
|
|
ali@103
|
45 |
void counters_reset(struct counters *counters);
|
|
ali@94
|
46 |
void counters_destroy(struct counters *counters);
|
|
ali@94
|
47 |
|
|
ali@94
|
48 |
#endif /* COUNTERS_H */
|