Avoid linking programs with plugin libraries
[anjuta.git] / libanjuta / anjuta-token.h
blob6cd459fb81c6189fb01061da4d84f575009d931f
1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
2 /*
3 * anjuta-token.h
4 * Copyright (C) Sébastien Granjoux 2009 <seb.sfo@free.fr>
5 *
6 * This program is free software: you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 * See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along
17 * with this program. If not, see <http://www.gnu.org/licenses/>.
20 #ifndef _ANJUTA_TOKEN_H_
21 #define _ANJUTA_TOKEN_H_
23 #include <gio/gio.h>
24 #include <glib.h>
26 G_BEGIN_DECLS
28 typedef enum
30 ANJUTA_TOKEN_NONE = 0,
31 ANJUTA_TOKEN_EOL = '\n',
32 ANJUTA_TOKEN_COMMA = 0x2C, /* glib-genmarshal doesn't like ',' */
34 ANJUTA_TOKEN_TYPE = 0xFFFF,
36 ANJUTA_TOKEN_FIRST = 16384,
37 ANJUTA_TOKEN_FILE,
38 ANJUTA_TOKEN_MACRO,
39 ANJUTA_TOKEN_CONTENT,
40 ANJUTA_TOKEN_ARGUMENT,
41 ANJUTA_TOKEN_VALUE,
42 ANJUTA_TOKEN_EOV, /* 16390 */
43 ANJUTA_TOKEN_PARSED,
44 ANJUTA_TOKEN_KEYWORD,
45 ANJUTA_TOKEN_OPERATOR,
46 ANJUTA_TOKEN_NAME,
47 ANJUTA_TOKEN_VARIABLE,
48 ANJUTA_TOKEN_DEFINITION,
49 ANJUTA_TOKEN_STATEMENT,
50 ANJUTA_TOKEN_NUMBER,
51 ANJUTA_TOKEN_JUNK,
52 ANJUTA_TOKEN_COMMENT, /* 16400 */
53 ANJUTA_TOKEN_OPEN_QUOTE,
54 ANJUTA_TOKEN_CLOSE_QUOTE,
55 ANJUTA_TOKEN_ESCAPE,
56 ANJUTA_TOKEN_FUNCTION,
57 ANJUTA_TOKEN_SPACE,
58 ANJUTA_TOKEN_START,
59 ANJUTA_TOKEN_NEXT,
60 ANJUTA_TOKEN_LAST,
61 ANJUTA_TOKEN_ITEM,
62 ANJUTA_TOKEN_STRING, /* 16410 */
63 ANJUTA_TOKEN_ERROR,
64 ANJUTA_TOKEN_WORD,
65 ANJUTA_TOKEN_LIST,
66 ANJUTA_TOKEN_ANY,
67 ANJUTA_TOKEN_USER,
69 ANJUTA_TOKEN_FLAGS = 0xFFFF << 16,
71 ANJUTA_TOKEN_PUBLIC_FLAGS = 0x00FF << 16,
73 ANJUTA_TOKEN_IRRELEVANT = 1 << 16,
74 ANJUTA_TOKEN_OPEN = 1 << 17,
75 ANJUTA_TOKEN_CLOSE = 1 << 18,
76 ANJUTA_TOKEN_SIGNIFICANT = 1 << 20,
78 ANJUTA_TOKEN_PRIVATE_FLAGS = 0x00FF << 24,
80 ANJUTA_TOKEN_CASE_INSENSITIVE = 1 << 24,
81 ANJUTA_TOKEN_STATIC = 1 << 25,
82 ANJUTA_TOKEN_REMOVED = 1 << 26,
83 ANJUTA_TOKEN_ADDED = 1 << 27
85 } AnjutaTokenType;
87 typedef struct _AnjutaToken AnjutaToken;
89 typedef void (*AnjutaTokenForeachFunc) (AnjutaToken *token, gpointer data);
92 AnjutaToken *anjuta_token_new_string (AnjutaTokenType type, const gchar *value);
93 AnjutaToken *anjuta_token_new_string_len (AnjutaTokenType type, gchar *value, gsize length);
94 AnjutaToken *anjuta_token_new_static (AnjutaTokenType type, const gchar *value);
95 AnjutaToken *anjuta_token_new_static_len (gint type, const gchar *pos, gsize length);
97 AnjutaToken* anjuta_token_free_children (AnjutaToken *token);
98 AnjutaToken* anjuta_token_free (AnjutaToken *token);
100 void anjuta_token_set_type (AnjutaToken *token, gint type);
101 gint anjuta_token_get_type (AnjutaToken *token);
102 void anjuta_token_set_flags (AnjutaToken *token, gint flags);
103 void anjuta_token_clear_flags (AnjutaToken *token, gint flags);
104 gint anjuta_token_get_flags (AnjutaToken *token);
105 void anjuta_token_set_string (AnjutaToken *token, const char *value, gsize length);
106 const gchar *anjuta_token_get_string (AnjutaToken *token);
107 void anjuta_token_set_length (AnjutaToken *token, gsize length);
108 gsize anjuta_token_get_length (AnjutaToken *token);
110 AnjutaToken *anjuta_token_next (AnjutaToken *token);
111 AnjutaToken *anjuta_token_previous (AnjutaToken *token);
112 AnjutaToken *anjuta_token_last (AnjutaToken *token);
113 AnjutaToken *anjuta_token_parent (AnjutaToken *token);
114 AnjutaToken *anjuta_token_list (AnjutaToken *token);
115 AnjutaToken *anjuta_token_next_after_children (AnjutaToken *token);
116 void anjuta_token_foreach_content (AnjutaToken *token, AnjutaTokenForeachFunc func, gpointer user_data);
117 void anjuta_token_foreach_token (AnjutaToken *token, AnjutaTokenForeachFunc func, gpointer user_data);
118 AnjutaToken *anjuta_token_foreach_post_order (AnjutaToken *token, AnjutaTokenForeachFunc func, gpointer user_data);
120 AnjutaToken *anjuta_token_first_item (AnjutaToken *list);
121 AnjutaToken *anjuta_token_next_item (AnjutaToken *item);
122 AnjutaToken *anjuta_token_previous_item (AnjutaToken *item);
123 AnjutaToken *anjuta_token_last_item (AnjutaToken *list);
125 AnjutaToken *anjuta_token_append_child (AnjutaToken *parent, AnjutaToken *children);
126 AnjutaToken *anjuta_token_prepend_child (AnjutaToken *parent, AnjutaToken *children);
127 AnjutaToken *anjuta_token_prepend_items (AnjutaToken *list, AnjutaToken *item);
128 AnjutaToken *anjuta_token_insert_after (AnjutaToken *sibling, AnjutaToken *list);
129 AnjutaToken *anjuta_token_insert_before (AnjutaToken *sibling, AnjutaToken *list);
130 AnjutaToken *anjuta_token_delete_parent (AnjutaToken *parent);
131 void anjuta_token_remove_item (AnjutaToken *item);
133 AnjutaToken *anjuta_token_merge (AnjutaToken *first, AnjutaToken *end);
134 AnjutaToken *anjuta_token_merge_own_children (AnjutaToken *first);
135 AnjutaToken *anjuta_token_merge_children (AnjutaToken *first, AnjutaToken *end);
136 AnjutaToken *anjuta_token_merge_previous (AnjutaToken *list, AnjutaToken *first);
137 AnjutaToken *anjuta_token_split (AnjutaToken *token, guint size);
138 AnjutaToken *anjuta_token_cut (AnjutaToken *token, guint pos, guint size);
139 AnjutaToken *anjuta_token_concat(AnjutaToken *token);
141 gchar *anjuta_token_evaluate (AnjutaToken *token);
142 gchar *anjuta_token_evaluate_name (AnjutaToken *token);
143 gboolean anjuta_token_is_empty (AnjutaToken *token);
145 void anjuta_token_dump (AnjutaToken *token);
146 gboolean anjuta_token_check (AnjutaToken *token);
147 void anjuta_token_dump_link (AnjutaToken *token);
149 gboolean anjuta_token_compare (AnjutaToken *tokena, AnjutaToken *tokenb);
151 G_END_DECLS
153 #endif