1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
4 * Copyright (C) Massimo Cora' 2007-2008 <maxcvs@email.it>
6 * anjuta is free software.
8 * You may redistribute it and/or modify it under the terms of the
9 * GNU General Public License, as published by the Free Software
10 * Foundation; either version 2 of the License, or (at your option)
13 * anjuta is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16 * See the GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with anjuta. If not, write to:
20 * The Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor
22 * Boston, MA 02110-1301, USA.
25 #ifndef _SYMBOL_DB_ENGINE_CORE_H_
26 #define _SYMBOL_DB_ENGINE_CORE_H_
28 #include <glib-object.h>
30 #include <libgda/gda-statement.h>
31 #include <libgda/gda-data-model.h>
32 #include <libanjuta/interfaces/ianjuta-symbol.h>
33 #include <libanjuta/interfaces/ianjuta-language.h>
34 #include <libanjuta/anjuta-plugin.h>
38 #define SYMBOL_TYPE_DB_ENGINE (sdb_engine_get_type ())
39 #define SYMBOL_DB_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SYMBOL_TYPE_DB_ENGINE, SymbolDBEngine))
40 #define SYMBOL_DB_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SYMBOL_TYPE_DB_ENGINE, SymbolDBEngineClass))
41 #define SYMBOL_IS_DB_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SYMBOL_TYPE_DB_ENGINE))
42 #define SYMBOL_IS_DB_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SYMBOL_TYPE_DB_ENGINE))
43 #define SYMBOL_DB_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SYMBOL_TYPE_DB_ENGINE, SymbolDBEngineClass))
44 #define SYMBOL_DB_ENGINE_ERROR (symbol_db_engine_error_quark ())
46 typedef struct _SymbolDBEngineClass SymbolDBEngineClass
;
47 typedef struct _SymbolDBEngine SymbolDBEngine
;
48 typedef struct _SymbolDBEnginePriv SymbolDBEnginePriv
;
51 SYMBOL_DB_ENGINE_ERROR_INVALID_PARSER
,
52 } SymbolDBEngineError
;
54 struct _SymbolDBEngineClass
56 GObjectClass parent_class
;
59 void (* db_connected
) (void);
60 void (* db_disconnected
) (void);
61 void (* scan_begin
) (gint process_id
);
62 void (* single_file_scan_end
) (void);
63 void (* scan_end
) (gint process_id
);
64 void (* symbol_inserted
) (gint symbol_id
);
65 void (* symbol_updated
) (gint symbol_id
);
66 void (* symbol_scope_updated
) (gint symbol_id
);
67 void (* symbol_removed
) (gint symbol_id
);
70 struct _SymbolDBEngine
72 GObject parent_instance
;
73 SymbolDBEnginePriv
*priv
;
76 typedef enum _SymbolDBEngineOpenStatus
78 DB_OPEN_STATUS_FATAL
= -1,
79 DB_OPEN_STATUS_NORMAL
= 0,
80 DB_OPEN_STATUS_CREATE
= 1,
81 DB_OPEN_STATUS_UPGRADE
=2
83 } SymbolDBEngineOpenStatus
;
85 GQuark
symbol_db_engine_error_quark (void);
86 GType
sdb_engine_get_type (void) G_GNUC_CONST
;
90 symbol_db_engine_new (const gchar
* ctags_path
);
93 symbol_db_engine_new_full (const gchar
* ctags_path
, const gchar
* database_name
);
96 symbol_db_engine_set_ctags_path (SymbolDBEngine
*dbe
, const gchar
* ctags_path
);
99 SymbolDBEngineOpenStatus
100 symbol_db_engine_open_db (SymbolDBEngine
*dbe
, const gchar
* base_db_path
,
101 const gchar
* prj_directory
, GError
**error
);
104 symbol_db_engine_close_db (SymbolDBEngine
*dbe
);
108 symbol_db_engine_is_connected (SymbolDBEngine
* dbe
);
111 symbol_db_engine_is_scanning (SymbolDBEngine
*dbe
);
115 symbol_db_engine_get_cnc_string (SymbolDBEngine
* dbe
);
119 symbol_db_engine_db_exists (SymbolDBEngine
* dbe
, const gchar
* prj_directory
);
122 symbol_db_engine_file_exists (SymbolDBEngine
* dbe
, const gchar
* abs_file_path
);
125 symbol_db_engine_add_new_workspace (SymbolDBEngine
*dbe
, const gchar
* workspace
);
128 symbol_db_engine_add_new_project (SymbolDBEngine
*dbe
, const gchar
* workspace
,
129 const gchar
* project
, const gchar
* version
);
132 symbol_db_engine_project_exists (SymbolDBEngine
*dbe
, /*gchar* workspace, */
133 const gchar
* project_name
,
134 const gchar
* project_version
);
138 symbol_db_engine_add_new_files_full_async (SymbolDBEngine
*dbe
,
139 const gchar
* project_name
,
140 const gchar
* project_version
,
141 const GPtrArray
*files_path
,
142 const GPtrArray
*languages
,
143 gboolean force_scan
);
146 symbol_db_engine_add_new_files_async (SymbolDBEngine
*dbe
,
147 IAnjutaLanguage
* lang_manager
,
148 const gchar
* project_name
,
149 const gchar
* project_version
,
150 const GPtrArray
*files_path
);
153 symbol_db_engine_update_project_symbols (SymbolDBEngine
*dbe
,
154 const gchar
*project_name
, gboolean force_all_files
);
158 symbol_db_engine_remove_file (SymbolDBEngine
*dbe
, const gchar
*project
,
159 const gchar
* rel_file
);
162 symbol_db_engine_remove_files (SymbolDBEngine
* dbe
, const gchar
*project
,
163 const GPtrArray
*rel_files
);
167 symbol_db_engine_update_files_symbols (SymbolDBEngine
*dbe
, const gchar
*project
,
168 const GPtrArray
*files_path
,
169 gboolean update_prj_analyse_time
);
172 symbol_db_engine_update_buffer_symbols (SymbolDBEngine
* dbe
, const gchar
* project
,
173 const GPtrArray
* real_files_list
,
174 const GPtrArray
* text_buffers
,
175 const GPtrArray
* buffer_sizes
);
178 symbol_db_engine_get_files_for_project (SymbolDBEngine
*dbe
);
181 symbol_db_engine_set_db_case_sensitive (SymbolDBEngine
*dbe
, gboolean case_sensitive
);
185 symbol_db_engine_get_statement (SymbolDBEngine
*dbe
, const gchar
*sql_str
);
188 symbol_db_engine_get_type_conversion_hash (SymbolDBEngine
*dbe
);
191 symbol_db_engine_get_project_directory (SymbolDBEngine
*dbe
);
195 symbol_db_engine_execute_select (SymbolDBEngine
*dbe
, GdaStatement
*stmt
,
200 #endif /* _SYMBOL_DB_ENGINE_H_ */