[anjuta/cxxparser] symbol-db: queries api lifting.
- From: Massimo Cora' <mcora src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [anjuta/cxxparser] symbol-db: queries api lifting.
- Date: Fri, 31 Jul 2009 23:26:53 +0000 (UTC)
commit 5b1826b27f6134372184589a821ce76d9f1ecdbf
Author: Massimo Corà <mcora src gnome org>
Date: Thu Jul 30 16:00:44 2009 +0200
symbol-db: queries api lifting.
cleaned up some queries.
libanjuta/interfaces/libanjuta.idl | 29 ++++-
.../language-support-cpp-java/cpp-java-assist.c | 4 +-
plugins/symbol-db/symbol-db-engine-priv.h | 41 ++++++-
plugins/symbol-db/symbol-db-engine-queries.c | 129 ++++++++++++++------
plugins/symbol-db/symbol-db-engine-queries.h | 30 +++--
plugins/symbol-db/symbol-db-engine-utils.c | 46 ++++----
plugins/symbol-db/symbol-db-engine-utils.h | 2 +-
plugins/symbol-db/symbol-db-iface.c | 46 +-------
plugins/symbol-db/symbol-db-iface.h | 1 -
plugins/symbol-db/symbol-db-search-command.c | 27 +----
plugins/symbol-db/symbol-db-view.c | 52 +++-----
11 files changed, 227 insertions(+), 180 deletions(-)
---
diff --git a/libanjuta/interfaces/libanjuta.idl b/libanjuta/interfaces/libanjuta.idl
index 4815aab..6f9e75a 100644
--- a/libanjuta/interfaces/libanjuta.idl
+++ b/libanjuta/interfaces/libanjuta.idl
@@ -4909,6 +4909,7 @@ interface IAnjutaSymbol
* @IANJUTA_SYMBOL_TYPE_MACRO_WITH_ARG: Parameterized macro
* @IANJUTA_SYMBOL_TYPE_FILE: File (Pseudo tag)
* @IANJUTA_SYMBOL_TYPE_OTHER: Other (non C/C++/Java tag)
+ * @IANJUTA_SYMBOL_TYPE_SCOPE_CONTAINER: types which are subjected to create a scope.
* @IANJUTA_SYMBOL_TYPE_MAX: Maximum value, means all known values.
*/
enum Type
@@ -4934,6 +4935,7 @@ interface IAnjutaSymbol
TYPE_MACRO_WITH_ARG = 262144,
TYPE_FILE = 524288,
TYPE_OTHER = 1048576,
+ TYPE_SCOPE_CONTAINER = IANJUTA_SYMBOL_TYPE_CLASS | IANJUTA_SYMBOL_TYPE_ENUM | IANJUTA_SYMBOL_TYPE_ENUMERATOR | IANJUTA_SYMBOL_TYPE_INTERFACE | IANJUTA_SYMBOL_TYPE_NAMESPACE | IANJUTA_SYMBOL_TYPE_PACKAGE | IANJUTA_SYMBOL_TYPE_STRUCT | IANJUTA_SYMBOL_TYPE_TYPEDEF | IANJUTA_SYMBOL_TYPE_UNION,
TYPE_MAX = 2097151
}
@@ -5115,6 +5117,23 @@ interface IAnjutaSymbolManager
#include "ianjuta-iterable.h"
#include "ianjuta-symbol.h"
+ /**
+ * IAnjutaSymbolManagerSearchFileScope:
+ *
+ * @IANJUTA_SYMBOL_MANAGER_SEARCH_FS_IGNORE: to be ignored (e.g. Will search both private and public scopes).
+ * You cannot use bitwise OR in this parameter.
+ * @IANJUTA_SYMBOL_MANAGER_SEARCH_FS_PUBLIC: only global public function will be searched
+ * (the ones that _do not_ belong to the file scope).
+ * @IANJUTA_SYMBOL_MANAGER_SEARCH_FS_PRIVATE: even private or static (for C language) will be searched
+ * (the ones that _do_ belong to the file scope).
+ */
+ enum SearchFileScope
+ {
+ SEARCH_FS_IGNORE = -1,
+ SEARCH_FS_PUBLIC = 1,
+ SEARCH_FS_PRIVATE = 0
+ }
+
/**
* ianjuta_symbol_manager_search:
* @obj: Self
@@ -5125,8 +5144,9 @@ interface IAnjutaSymbolManager
* @match_name: fixme
* @partial_name_match: if TRUE it will search for %match_name%, it FALSE for the exact
* string match_name.
- * @global_symbols_search: if TRUE it will search only for public/extern functions.
- * If FALSE it will search also for static/private functions.
+ * @filescope_search: if #IANJUTA_SYMBOL_MANAGER_SEARCH_FS_PUBLIC it will search only for public/extern functions.
+ * If #IANJUTA_SYMBOL_MANAGER_SEARCH_FS_PRIVATE it will search also for static/private functions.
+ * If #IANJUTA_SYMBOL_MANAGER_SEARCH_FS_IGNORE it'll search for both public and private
* @global_tags_search: If TRUE it'll search only for system tags, using pkg-config to retrieve installed packages
* info. If FALSE only current project's symbols will be searched.
* @results_limit: Limit results to an upper bound. -1 If you don't want to use this par.
@@ -5139,7 +5159,7 @@ interface IAnjutaSymbolManager
* Returns: an iteratable object, or NULL if error occurs or if no symbols are found.
*
*/
- IAnjutaIterable* search (IAnjutaSymbolType match_types, gboolean include_types, IAnjutaSymbolField info_fields, const gchar *match_name, gboolean partial_name_match, gboolean global_symbols_search, gboolean global_tags_search, gint results_limit, gint results_offset);
+ IAnjutaIterable* search (IAnjutaSymbolType match_types, gboolean include_types, IAnjutaSymbolField info_fields, const gchar *match_name, gboolean partial_name_match, SearchFileScope filescope_search, gboolean global_tags_search, gint results_limit, gint results_offset);
/**
* ianjuta_symbol_manager_search_system:
@@ -5300,7 +5320,6 @@ interface IAnjutaSymbolManager
* ianjuta_symbol_manager_get_members:
* @obj: Self
* @info_fields: Kind of infos you would like to have available on the resulting Symbols.
- * @global_search: fixme
* @err: Error propagation and reporting.
*
* Database query. The returned #IAnjutaIterable object must be unreffed after use.
@@ -5308,7 +5327,7 @@ interface IAnjutaSymbolManager
* Returns: an iteratable object, or NULL if error occurs or if no symbols are found.
*
*/
- IAnjutaIterable* get_members (const IAnjutaSymbol *symbol, IAnjutaSymbolField info_fields, gboolean global_search);
+ IAnjutaIterable* get_members (const IAnjutaSymbol *symbol, IAnjutaSymbolField info_fields);
/**
* ianjuta_symbol_manager_get_parents:
diff --git a/plugins/language-support-cpp-java/cpp-java-assist.c b/plugins/language-support-cpp-java/cpp-java-assist.c
index 36e7c93..cc9f22e 100644
--- a/plugins/language-support-cpp-java/cpp-java-assist.c
+++ b/plugins/language-support-cpp-java/cpp-java-assist.c
@@ -356,7 +356,7 @@ cpp_java_assist_create_scope_completion_cache (CppJavaAssist *assist,
ianjuta_symbol_manager_get_members(assist->priv->isymbol_manager,
IANJUTA_SYMBOL(symbol),
IANJUTA_SYMBOL_FIELD_SIMPLE,
- TRUE, NULL);
+ NULL);
if (members && ianjuta_iterable_get_length (members, NULL))
{
gboolean found = FALSE;
@@ -389,7 +389,7 @@ cpp_java_assist_create_scope_completion_cache (CppJavaAssist *assist,
ianjuta_symbol_manager_get_members(assist->priv->isymbol_manager,
IANJUTA_SYMBOL(symbol),
IANJUTA_SYMBOL_FIELD_SIMPLE,
- TRUE, NULL);
+ NULL);
if (members)
{
assist->priv->completion_cache =
diff --git a/plugins/symbol-db/symbol-db-engine-priv.h b/plugins/symbol-db/symbol-db-engine-priv.h
index 25c45bb..d948e29 100644
--- a/plugins/symbol-db/symbol-db-engine-priv.h
+++ b/plugins/symbol-db/symbol-db-engine-priv.h
@@ -240,7 +240,7 @@ typedef struct _ChildDynQueryNode {
} DynChildQueryNode;
-/* WARNING: these must match the ones on libanjuta.idl [AnjutaSymbol::Field] */
+/* WARNING: these must match the ones on libanjuta.idl [IAnjutaSymbol::Field] */
typedef enum {
SYMINFO_SIMPLE = 1,
SYMINFO_FILE_PATH = 2,
@@ -257,6 +257,45 @@ typedef enum {
} SymExtraInfo;
+/* WARNING: these must match the ones on libanjuta.idl [IAnjutaSymbol::Type] */
+typedef enum
+{
+ SYMTYPE_UNDEF = 1,
+ SYMTYPE_CLASS = 2,
+ SYMTYPE_ENUM = 4,
+ SYMTYPE_ENUMERATOR = 8,
+ SYMTYPE_FIELD = 16,
+ SYMTYPE_FUNCTION = 32,
+ SYMTYPE_INTERFACE = 64,
+ SYMTYPE_MEMBER = 128,
+ SYMTYPE_METHOD = 256,
+ SYMTYPE_NAMESPACE = 512,
+ SYMTYPE_PACKAGE = 1024,
+ SYMTYPE_PROTOTYPE = 2048,
+ SYMTYPE_STRUCT = 4096,
+ SYMTYPE_TYPEDEF = 8192,
+ SYMTYPE_UNION = 16384,
+ SYMTYPE_VARIABLE = 32768,
+ SYMTYPE_EXTERNVAR = 65536,
+ SYMTYPE_MACRO = 131072,
+ SYMTYPE_MACRO_WITH_ARG = 262144,
+ SYMTYPE_FILE = 524288,
+ SYMTYPE_OTHER = 1048576,
+ SYMTYPE_SCOPE_CONTAINER = SYMTYPE_CLASS | SYMTYPE_ENUM | SYMTYPE_ENUMERATOR |
+ SYMTYPE_INTERFACE | SYMTYPE_NAMESPACE | SYMTYPE_PACKAGE |
+ SYMTYPE_STRUCT | SYMTYPE_TYPEDEF | SYMTYPE_UNION,
+ SYMTYPE_MAX = 2097151,
+
+} SymType;
+
+/* WARNING: these must match the ones on libanjuta.idl [IAnjutaSymbolManager:SearchFileScope] */
+typedef enum
+{
+ SYMSEARCH_FILESCOPE_IGNORE = -1,
+ SYMSEARCH_FILESCOPE_PUBLIC = 1,
+ SYMSEARCH_FILESCOPE_PRIVATE = 0
+
+} SymSearchFileScope;
/* the SymbolDBEngine Private structure */
struct _SymbolDBEnginePriv
diff --git a/plugins/symbol-db/symbol-db-engine-queries.c b/plugins/symbol-db/symbol-db-engine-queries.c
index d7ea836..b7c79f2 100644
--- a/plugins/symbol-db/symbol-db-engine-queries.c
+++ b/plugins/symbol-db/symbol-db-engine-queries.c
@@ -550,7 +550,7 @@ symbol_db_engine_get_class_parents (SymbolDBEngine *dbe, const gchar *klass_name
SymbolDBEngineIterator *
symbol_db_engine_get_global_members_filtered (SymbolDBEngine *dbe,
- const GPtrArray *filter_kinds,
+ SymType filter_kinds,
gboolean include_kinds,
gboolean group_them,
gint results_limit,
@@ -572,13 +572,14 @@ symbol_db_engine_get_global_members_filtered (SymbolDBEngine *dbe,
GdaHolder *param;
GValue *ret_value;
gboolean ret_bool;
+ GPtrArray *filter_kinds_array;
/* use to merge multiple extra_parameters flags */
gint other_parameters = 0;
g_return_val_if_fail (dbe != NULL, NULL);
priv = dbe->priv;
-
+
SDB_LOCK(priv);
/* check for an already flagged sym_info with KIND. SYMINFO_KIND on sym_info
@@ -586,6 +587,12 @@ symbol_db_engine_get_global_members_filtered (SymbolDBEngine *dbe,
*/
sym_info = sym_info & ~SYMINFO_KIND;
+ /* determine the filter_kinds thing */
+ if (filter_kinds == SYMTYPE_UNDEF)
+ filter_kinds_array = NULL;
+ else
+ filter_kinds_array = symbol_db_util_fill_type_array (filter_kinds);
+
if (group_them == TRUE)
{
other_parameters |= DYN_GET_GLOBAL_MEMBERS_FILTERED_EXTRA_PAR_GROUP_YES;
@@ -614,7 +621,7 @@ symbol_db_engine_get_global_members_filtered (SymbolDBEngine *dbe,
/* test if user gave an array with more than 255 filter_kinds. In that case
* we'll not be able to save/handle it, so consider it as a NULL array
*/
- if (filter_kinds == NULL || filter_kinds->len > 255 || filter_kinds->len <= 0)
+ if (filter_kinds_array == NULL || filter_kinds_array->len > 255 || filter_kinds_array->len <= 0)
{
if ((dyn_node = sdb_engine_get_dyn_query_node_by_id (dbe,
DYN_PREP_QUERY_GET_CLASS_PARENTS, sym_info,
@@ -665,7 +672,7 @@ symbol_db_engine_get_global_members_filtered (SymbolDBEngine *dbe,
}
/* set the number of parameters in the less important byte */
- other_parameters |= filter_kinds->len;
+ other_parameters |= filter_kinds_array->len;
if ((dyn_node = sdb_engine_get_dyn_query_node_by_id (dbe,
DYN_PREP_QUERY_GET_CLASS_PARENTS, sym_info,
@@ -697,7 +704,7 @@ symbol_db_engine_get_global_members_filtered (SymbolDBEngine *dbe,
"AND sym_kind.kind_name NOT IN (## /* name:'filter0' type:gchararray */");
}
- for (i = 1; i < filter_kinds->len; i++)
+ for (i = 1; i < filter_kinds_array->len; i++)
{
g_string_append_printf (filter_str ,
",## /* name:'filter%d' type:gchararray */", i);
@@ -765,12 +772,12 @@ symbol_db_engine_get_global_members_filtered (SymbolDBEngine *dbe,
other_parameters & DYN_GET_GLOBAL_MEMBERS_FILTERED_EXTRA_PAR_INCLUDE_KINDS_NO)
{
gint i;
- for (i = 0; i < filter_kinds->len; i++)
+ for (i = 0; i < filter_kinds_array->len; i++)
{
gchar *curr_str = g_strdup_printf ("filter%d", i);
param = gda_set_get_holder ((GdaSet*)dyn_node->plist, curr_str);
- MP_SET_HOLDER_BATCH_STR(priv, param, g_ptr_array_index (filter_kinds, i),
+ MP_SET_HOLDER_BATCH_STR(priv, param, g_ptr_array_index (filter_kinds_array, i),
ret_bool, ret_value);
g_free (curr_str);
}
@@ -778,6 +785,13 @@ symbol_db_engine_get_global_members_filtered (SymbolDBEngine *dbe,
/*DEBUG_PRINT ("symbol_db_engine_get_global_members_filtered () query_str is %s",
dyn_node->query_str);*/
+
+ /* free the filter kinds, if it's not null */
+ if (filter_kinds_array)
+ {
+ g_ptr_array_foreach (filter_kinds_array, (GFunc)g_free, NULL);
+ g_ptr_array_free (filter_kinds_array, TRUE);
+ }
/* execute the query with parametes just set */
data = gda_connection_statement_execute_select (priv->db_connection,
@@ -824,7 +838,7 @@ symbol_db_engine_get_global_members_filtered (SymbolDBEngine *dbe,
SymbolDBEngineIterator *
symbol_db_engine_get_scope_members_by_symbol_id_filtered (SymbolDBEngine *dbe,
gint scope_parent_symbol_id,
- const GPtrArray *filter_kinds,
+ SymType filter_kinds,
gboolean include_kinds,
gint results_limit,
gint results_offset,
@@ -845,6 +859,7 @@ symbol_db_engine_get_scope_members_by_symbol_id_filtered (SymbolDBEngine *dbe,
GdaHolder *param;
GValue *ret_value;
gboolean ret_bool;
+ GPtrArray *filter_kinds_array;
g_return_val_if_fail (dbe != NULL, NULL);
priv = dbe->priv;
@@ -860,6 +875,12 @@ symbol_db_engine_get_scope_members_by_symbol_id_filtered (SymbolDBEngine *dbe,
/* syminfo kind is already included in results */
sym_info = sym_info & ~SYMINFO_KIND;
+ /* determine the filter_kinds thing */
+ if (filter_kinds == SYMTYPE_UNDEF)
+ filter_kinds_array = NULL;
+ else
+ filter_kinds_array = symbol_db_util_fill_type_array (filter_kinds);
+
/* init parameters */
other_parameters = 0;
@@ -894,11 +915,11 @@ symbol_db_engine_get_scope_members_by_symbol_id_filtered (SymbolDBEngine *dbe,
/* we'll take into consideration the number of filter_kinds only it the number
* is fillable in a byte.
*/
- if (filter_kinds != NULL && filter_kinds->len < 255
- && filter_kinds->len > 0)
+ if (filter_kinds_array != NULL && filter_kinds_array->len < 255
+ && filter_kinds_array->len > 0)
{
/* set the number of parameters in the less important byte */
- other_parameters |= filter_kinds->len;
+ other_parameters |= filter_kinds_array->len;
}
if ((dyn_node = sdb_engine_get_dyn_query_node_by_id (dbe,
@@ -930,7 +951,7 @@ symbol_db_engine_get_scope_members_by_symbol_id_filtered (SymbolDBEngine *dbe,
"AND sym_kind.kind_name NOT IN (## /* name:'filter0' type:gchararray */");
}
- for (i = 1; i < filter_kinds->len; i++)
+ for (i = 1; i < filter_kinds_array->len; i++)
{
g_string_append_printf (filter_str ,
",## /* name:'filter%d' type:gchararray */", i);
@@ -1006,12 +1027,12 @@ symbol_db_engine_get_scope_members_by_symbol_id_filtered (SymbolDBEngine *dbe,
DYN_GET_SCOPE_MEMBERS_BY_SYMBOL_ID_FILTERED_EXTRA_PAR_INCLUDE_KINDS_NO)
{
gint i;
- for (i = 0; i < filter_kinds->len; i++)
+ for (i = 0; i < filter_kinds_array->len; i++)
{
gchar *curr_str = g_strdup_printf ("filter%d", i);
param = gda_set_get_holder ((GdaSet*)dyn_node->plist, curr_str);
- MP_SET_HOLDER_BATCH_STR(priv, param, g_ptr_array_index (filter_kinds, i),
+ MP_SET_HOLDER_BATCH_STR(priv, param, g_ptr_array_index (filter_kinds_array, i),
ret_bool, ret_value);
g_free (curr_str);
}
@@ -1025,6 +1046,13 @@ symbol_db_engine_get_scope_members_by_symbol_id_filtered (SymbolDBEngine *dbe,
MP_SET_HOLDER_BATCH_INT(priv, param, scope_parent_symbol_id, ret_bool, ret_value);
+ /* free the filter kinds, if it's not null */
+ if (filter_kinds_array)
+ {
+ g_ptr_array_foreach (filter_kinds_array, (GFunc)g_free, NULL);
+ g_ptr_array_free (filter_kinds_array, TRUE);
+ }
+
/* execute the query with parametes just set */
data = gda_connection_statement_execute_select (priv->db_connection,
(GdaStatement*)dyn_node->stmt,
@@ -2176,7 +2204,7 @@ SymbolDBEngineIterator *
symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
const gchar *pattern,
const gchar *full_local_file_path,
- const GPtrArray *filter_kinds,
+ SymType filter_kinds,
gboolean include_kinds,
gint results_limit,
gint results_offset,
@@ -2199,6 +2227,7 @@ symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
GValue *ret_value;
gboolean ret_bool;
gchar *db_rel_path;
+ GPtrArray *filter_kinds_array;
g_return_val_if_fail (dbe != NULL, NULL);
priv = dbe->priv;
@@ -2213,7 +2242,12 @@ symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
other_parameters = 0;
dyn_node = NULL;
-
+ /* determine the filter_kinds thing */
+ if (filter_kinds == SYMTYPE_UNDEF)
+ filter_kinds_array = NULL;
+ else
+ filter_kinds_array = symbol_db_util_fill_type_array (filter_kinds);
+
/* check for match */
if (g_strrstr (pattern, "%") == NULL)
{
@@ -2242,7 +2276,8 @@ symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
offset = g_strdup_printf ("OFFSET ## /* name:'offset' type:gint */");
}
- if (filter_kinds == NULL || filter_kinds->len > 255 || filter_kinds->len <= 0)
+ if (filter_kinds_array == NULL || filter_kinds_array->len > 255 ||
+ filter_kinds_array->len <= 0)
{
if ((dyn_node = sdb_engine_get_dyn_query_node_by_id (dbe,
DYN_PREP_QUERY_FIND_SYMBOL_BY_NAME_PATTERN_FILE, sym_info,
@@ -2293,7 +2328,7 @@ symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
}
/* set the number of parameters in the less important byte */
- other_parameters |= filter_kinds->len;
+ other_parameters |= filter_kinds_array->len;
if ((dyn_node = sdb_engine_get_dyn_query_node_by_id (dbe,
DYN_PREP_QUERY_FIND_SYMBOL_BY_NAME_PATTERN_FILE, sym_info,
@@ -2318,7 +2353,7 @@ symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
{
filter_str = g_string_append (filter_str ,
"AND sym_kind.kind_name IN (## /* name:'filter0' type:gchararray */");
- for (i = 1; i < filter_kinds->len; i++)
+ for (i = 1; i < filter_kinds_array->len; i++)
{
g_string_append_printf (filter_str ,
",## /* name:'filter%d' type:gchararray */", i);
@@ -2329,7 +2364,7 @@ symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
{
filter_str = g_string_append (filter_str ,
"AND sym_kind.kind_name NOT IN (## /* name:'filter0' type:gchararray */");
- for (i = 1; i < filter_kinds->len; i++)
+ for (i = 1; i < filter_kinds_array->len; i++)
{
g_string_append_printf (filter_str ,
",## /* name:'filter%d' type:gchararray */", i);
@@ -2399,11 +2434,12 @@ symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
other_parameters & DYN_FIND_SYMBOL_BY_NAME_PATTERN_FILE_EXTRA_PAR_INCLUDE_KINDS_NO)
{
gint i;
- for (i = 0; i < filter_kinds->len; i++)
+ for (i = 0; i < filter_kinds_array->len; i++)
{
gchar *curr_str = g_strdup_printf ("filter%d", i);
param = gda_set_get_holder ((GdaSet*)dyn_node->plist, curr_str);
- MP_SET_HOLDER_BATCH_STR(priv, param, g_ptr_array_index (filter_kinds, i), ret_bool, ret_value);
+ MP_SET_HOLDER_BATCH_STR(priv, param, g_ptr_array_index (filter_kinds_array, i),
+ ret_bool, ret_value);
g_free (curr_str);
}
}
@@ -2428,7 +2464,14 @@ symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
MP_SET_HOLDER_BATCH_STR(priv, param, db_rel_path, ret_bool, ret_value);
/*DEBUG_PRINT ("query: %s", dyn_node->query_str);*/
-
+
+ /* free the filter kinds, if it's not null */
+ if (filter_kinds_array)
+ {
+ g_ptr_array_foreach (filter_kinds_array, (GFunc)g_free, NULL);
+ g_ptr_array_free (filter_kinds_array, TRUE);
+ }
+
/* execute the query with parametes just set */
data = gda_connection_statement_execute_select (priv->db_connection,
(GdaStatement*)dyn_node->stmt,
@@ -2490,9 +2533,9 @@ SymbolDBEngineIterator *
symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
const gchar *pattern,
gboolean exact_match,
- const GPtrArray *filter_kinds,
+ SymType filter_kinds,
gboolean include_kinds,
- gint global_symbols_search,
+ SymSearchFileScope filescope_search,
GList *session_projects,
gint results_limit,
gint results_offset,
@@ -2515,6 +2558,7 @@ symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
gboolean offset_free = FALSE;
GValue *ret_value;
gboolean ret_bool;
+ GPtrArray *filter_kinds_array;
g_return_val_if_fail (dbe != NULL, NULL);
@@ -2528,6 +2572,12 @@ symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
other_parameters = 0;
dyn_node = NULL;
+ /* determine the filter_kinds thing */
+ if (filter_kinds == SYMTYPE_UNDEF)
+ filter_kinds_array = NULL;
+ else
+ filter_kinds_array = symbol_db_util_fill_type_array (filter_kinds);
+
/* check for a null pattern. If NULL we'll set a patter like '%'
* and exact_match = FALSE . In this way we will match everything.
@@ -2553,19 +2603,19 @@ symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
match_str = " LIKE ## /* name:'pattern' type:gchararray */";
}
- if (global_symbols_search == 1)
+ if (filescope_search == SYMSEARCH_FILESCOPE_PUBLIC)
{
other_parameters |=
DYN_FIND_SYMBOL_BY_NAME_PATTERN_FILTERED_EXTRA_PAR_GLOBAL_SEARCH_YES;
file_scope_str = " AND symbol.is_file_scope = 0 ";
}
- else if (global_symbols_search == 0)
+ else if (filescope_search == SYMSEARCH_FILESCOPE_PRIVATE)
{
other_parameters |=
DYN_FIND_SYMBOL_BY_NAME_PATTERN_FILTERED_EXTRA_PAR_GLOBAL_SEARCH_NO;
file_scope_str = " AND symbol.is_file_scope = 1 ";
}
- else /* -1 */
+ else /* SYMSEARCH_FILESCOPE_IGNORE */
{
other_parameters |=
DYN_FIND_SYMBOL_BY_NAME_PATTERN_FILTERED_EXTRA_PAR_GLOBAL_SEARCH_IGNORE;
@@ -2602,7 +2652,8 @@ symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
}
}
- if (filter_kinds == NULL || filter_kinds->len > 255 || filter_kinds->len <= 0)
+ if (filter_kinds_array == NULL || filter_kinds_array->len > 255 ||
+ filter_kinds_array->len <= 0)
{
if ((dyn_node = sdb_engine_get_dyn_query_node_by_id (dbe,
DYN_PREP_QUERY_FIND_SYMBOL_BY_NAME_PATTERN_FILTERED, sym_info,
@@ -2674,7 +2725,7 @@ symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
}
/* set the number of parameters in the less important byte */
- other_parameters |= filter_kinds->len;
+ other_parameters |= filter_kinds_array->len;
if ((dyn_node = sdb_engine_get_dyn_query_node_by_id (dbe,
DYN_PREP_QUERY_FIND_SYMBOL_BY_NAME_PATTERN_FILTERED, sym_info,
@@ -2700,7 +2751,7 @@ symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
{
filter_str = g_string_append (filter_str ,
"AND sym_kind.kind_name IN (## /* name:'filter0' type:gchararray */");
- for (i = 1; i < filter_kinds->len; i++)
+ for (i = 1; i < filter_kinds_array->len; i++)
{
g_string_append_printf (filter_str ,
",## /* name:'filter%d' type:gchararray */", i);
@@ -2711,7 +2762,7 @@ symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
{
filter_str = g_string_append (filter_str ,
"AND sym_kind.kind_name NOT IN (## /* name:'filter0' type:gchararray */");
- for (i = 1; i < filter_kinds->len; i++)
+ for (i = 1; i < filter_kinds_array->len; i++)
{
g_string_append_printf (filter_str ,
",## /* name:'filter%d' type:gchararray */", i);
@@ -2799,11 +2850,12 @@ symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
other_parameters & DYN_FIND_SYMBOL_BY_NAME_PATTERN_FILTERED_EXTRA_PAR_INCLUDE_KINDS_NO)
{
gint i;
- for (i = 0; i < filter_kinds->len; i++)
+ for (i = 0; i < filter_kinds_array->len; i++)
{
gchar *curr_str = g_strdup_printf ("filter%d", i);
param = gda_set_get_holder ((GdaSet*)dyn_node->plist, curr_str);
- MP_SET_HOLDER_BATCH_STR(priv, param, g_ptr_array_index (filter_kinds, i), ret_bool, ret_value);
+ MP_SET_HOLDER_BATCH_STR(priv, param, g_ptr_array_index (filter_kinds_array, i),
+ ret_bool, ret_value);
g_free (curr_str);
}
}
@@ -2836,7 +2888,14 @@ symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
/*DEBUG_PRINT ("symbol_db_engine_find_symbol_by_name_pattern_filtered query: %s",
dyn_node->query_str);*/
-
+
+ /* free the filter kinds, if it's not null */
+ if (filter_kinds_array)
+ {
+ g_ptr_array_foreach (filter_kinds_array, (GFunc)g_free, NULL);
+ g_ptr_array_free (filter_kinds_array, TRUE);
+ }
+
/* execute the query with parametes just set */
data = gda_connection_statement_execute_select (priv->db_connection,
(GdaStatement*)dyn_node->stmt,
diff --git a/plugins/symbol-db/symbol-db-engine-queries.h b/plugins/symbol-db/symbol-db-engine-queries.h
index 0f31cb6..c40f003 100644
--- a/plugins/symbol-db/symbol-db-engine-queries.h
+++ b/plugins/symbol-db/symbol-db-engine-queries.h
@@ -62,10 +62,14 @@ symbol_db_engine_find_symbol_by_name_pattern (SymbolDBEngine *dbe,
* @param pattern Pattern you want to search for. If NULL it will use '%' and LIKE for query.
* Please provide a pattern with '%' if you also specify a exact_match = FALSE
* @param exact_match Should the pattern be searched for an exact match?
- * @param filter_kinds Can be NULL. In that case these filters will not be taken into consideration.
+ * @param filter_kinds Can be set to SYMTYPE_UNDEF. In that case these filters will not be taken into consideration.
* @param include_kinds Should the filter_kinds (if not null) be applied as inluded or excluded?
- * @param global_symbols_search If 1 only global public function will be searched. If 0
- * even private or static (for C language) will be searched. -1 to be ignored.
+ * @param filescope_search If SYMSEARCH_FILESCOPE_PUBLIC only global public
+ * function will be searched (the ones that _do not_ belong to the file scope).
+ * If SYMSEARCH_FILESCOPE_PRIVATE even private or
+ * static (for C language) will be searched (the ones that _do_ belong to the file scope).
+ * SYMSEARCH_FILESCOPE_IGNORE to be ignored (e.g. Will search both private and public scopes).
+ * You cannot use bitwise OR in this parameter.
* @param session_projects Should the search, a global search, be filtered by some packages (projects)?
* If yes then provide a GList, if no then pass NULL.
* @param results_limit Limit results to an upper bound. -1 If you don't want to use this par.
@@ -76,9 +80,9 @@ SymbolDBEngineIterator *
symbol_db_engine_find_symbol_by_name_pattern_filtered (SymbolDBEngine *dbe,
const gchar *pattern,
gboolean exact_match,
- const GPtrArray *filter_kinds,
+ SymType filter_kinds,
gboolean include_kinds,
- gint global_symbols_search,
+ SymSearchFileScope filescope_search,
GList *session_projects,
gint results_limit,
gint results_offset,
@@ -89,7 +93,7 @@ SymbolDBEngineIterator *
symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
const gchar *pattern,
const gchar *full_local_file_path,
- const GPtrArray *filter_kinds,
+ SymType filter_kinds,
gboolean include_kinds,
gint results_limit,
gint results_offset,
@@ -101,8 +105,10 @@ symbol_db_engine_find_symbol_by_name_pattern_on_file (SymbolDBEngine *dbe,
* given symbol name.
*/
SymbolDBEngineIterator *
-symbol_db_engine_get_class_parents (SymbolDBEngine *dbe, const gchar *klass_name,
- const GPtrArray *scope_path, SymExtraInfo sym_info);
+symbol_db_engine_get_class_parents (SymbolDBEngine *dbe,
+ const gchar *klass_name,
+ const GPtrArray *scope_path,
+ SymExtraInfo sym_info);
/**
* Use this function to get parent symbols of a given class.
@@ -135,7 +141,7 @@ symbol_db_engine_get_file_symbols (SymbolDBEngine *dbe,
/**
* Use this function to get global symbols only. I.e. private or file-only scoped symbols
* will NOT be returned.
- * @param filter_kinds Can be NULL. In that case we'll return all the kinds of symbols found
+ * @param filter_kinds Can be set to SYMTYPE_UNDEF. In that case these filters will not be taken into consideration.
* at root level [global level]. A maximum of 255 filter_kinds are admitted.
* @param include_kinds Should we include in the result the filter_kinds or not?
* @param group_them If TRUE then will be issued a 'group by symbol.name' option.
@@ -146,7 +152,7 @@ symbol_db_engine_get_file_symbols (SymbolDBEngine *dbe,
*/
SymbolDBEngineIterator *
symbol_db_engine_get_global_members_filtered (SymbolDBEngine *dbe,
- const GPtrArray *filter_kinds,
+ SymType filter_kinds,
gboolean include_kinds,
gboolean group_them,
gint results_limit,
@@ -229,14 +235,14 @@ symbol_db_engine_get_scope_members_by_symbol_id (SymbolDBEngine *dbe,
* A filtered version of the symbol_db_engine_get_scope_members_by_symbol_id ().
* You can specify which kind of symbols to retrieve, and if to include them or exclude.
* Kinds are 'namespace', 'class' etc.
- * @param filter_kinds cannot be NULL.
+ * @param filter_kinds Can be set to SYMTYPE_UNDEF. In that case these filters will not be taken into consideration.
* @param results_limit Limit results to an upper bound. -1 If you don't want to use this par.
* @param results_offset Skip results_offset results. -1 If you don't want to use this par.
*/
SymbolDBEngineIterator *
symbol_db_engine_get_scope_members_by_symbol_id_filtered (SymbolDBEngine *dbe,
gint scope_parent_symbol_id,
- const GPtrArray *filter_kinds,
+ SymType filter_kinds,
gboolean include_kinds,
gint results_limit,
gint results_offset,
diff --git a/plugins/symbol-db/symbol-db-engine-utils.c b/plugins/symbol-db/symbol-db-engine-utils.c
index 1bb1a85..98bb8cd 100644
--- a/plugins/symbol-db/symbol-db-engine-utils.c
+++ b/plugins/symbol-db/symbol-db-engine-utils.c
@@ -319,117 +319,117 @@ symbol_db_util_is_pattern_exact_match (const gchar *pattern)
}
GPtrArray *
-symbol_db_util_fill_type_array (IAnjutaSymbolType match_types)
+symbol_db_util_fill_type_array (SymType match_types)
{
GPtrArray *filter_array;
filter_array = g_ptr_array_new ();
- if (match_types & IANJUTA_SYMBOL_TYPE_CLASS)
+ if (match_types & SYMTYPE_CLASS)
{
g_ptr_array_add (filter_array, g_strdup ("class"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_ENUM)
+ if (match_types & SYMTYPE_ENUM)
{
g_ptr_array_add (filter_array, g_strdup ("enum"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_ENUMERATOR)
+ if (match_types & SYMTYPE_ENUMERATOR)
{
g_ptr_array_add (filter_array, g_strdup ("enumerator"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_FIELD)
+ if (match_types & SYMTYPE_FIELD)
{
g_ptr_array_add (filter_array, g_strdup ("field"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_FUNCTION)
+ if (match_types & SYMTYPE_FUNCTION)
{
g_ptr_array_add (filter_array, g_strdup ("function"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_INTERFACE)
+ if (match_types & SYMTYPE_INTERFACE)
{
g_ptr_array_add (filter_array, g_strdup ("interface"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_MEMBER)
+ if (match_types & SYMTYPE_MEMBER)
{
g_ptr_array_add (filter_array, g_strdup ("member"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_METHOD)
+ if (match_types & SYMTYPE_METHOD)
{
g_ptr_array_add (filter_array, g_strdup ("method"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_NAMESPACE)
+ if (match_types & SYMTYPE_NAMESPACE)
{
g_ptr_array_add (filter_array, g_strdup ("namespace"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_PACKAGE)
+ if (match_types & SYMTYPE_PACKAGE)
{
g_ptr_array_add (filter_array, g_strdup ("package"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_PROTOTYPE)
+ if (match_types & SYMTYPE_PROTOTYPE)
{
g_ptr_array_add (filter_array, g_strdup ("prototype"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_STRUCT)
+ if (match_types & SYMTYPE_STRUCT)
{
g_ptr_array_add (filter_array, g_strdup ("struct"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_TYPEDEF)
+ if (match_types & SYMTYPE_TYPEDEF)
{
g_ptr_array_add (filter_array, g_strdup ("typedef"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_STRUCT)
+ if (match_types & SYMTYPE_STRUCT)
{
g_ptr_array_add (filter_array, g_strdup ("struct"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_UNION)
+ if (match_types & SYMTYPE_UNION)
{
g_ptr_array_add (filter_array, g_strdup ("union"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_VARIABLE)
+ if (match_types & SYMTYPE_VARIABLE)
{
g_ptr_array_add (filter_array, g_strdup ("variable"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_EXTERNVAR)
+ if (match_types & SYMTYPE_EXTERNVAR)
{
g_ptr_array_add (filter_array, g_strdup ("externvar"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_MACRO)
+ if (match_types & SYMTYPE_MACRO)
{
g_ptr_array_add (filter_array, g_strdup ("macro"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_MACRO_WITH_ARG)
+ if (match_types & SYMTYPE_MACRO_WITH_ARG)
{
g_ptr_array_add (filter_array, g_strdup ("macro_with_arg"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_FILE)
+ if (match_types & SYMTYPE_FILE)
{
g_ptr_array_add (filter_array, g_strdup ("file"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_VARIABLE)
+ if (match_types & SYMTYPE_VARIABLE)
{
g_ptr_array_add (filter_array, g_strdup ("variable"));
}
- if (match_types & IANJUTA_SYMBOL_TYPE_OTHER)
+ if (match_types & SYMTYPE_OTHER)
{
g_ptr_array_add (filter_array, g_strdup ("other"));
}
diff --git a/plugins/symbol-db/symbol-db-engine-utils.h b/plugins/symbol-db/symbol-db-engine-utils.h
index da3493e..55567a6 100644
--- a/plugins/symbol-db/symbol-db-engine-utils.h
+++ b/plugins/symbol-db/symbol-db-engine-utils.h
@@ -71,7 +71,7 @@ symbol_db_util_get_sym_type_conversion_hash (SymbolDBEngine *dbe);
* @return a GPtrArray that must be freed from caller.
*/
GPtrArray *
-symbol_db_util_fill_type_array (IAnjutaSymbolType match_types);
+symbol_db_util_fill_type_array (SymType match_types);
/**
* Try to get all the files with zero symbols: these should be the ones
diff --git a/plugins/symbol-db/symbol-db-iface.c b/plugins/symbol-db/symbol-db-iface.c
index 4a8df06..6dcc121 100644
--- a/plugins/symbol-db/symbol-db-iface.c
+++ b/plugins/symbol-db/symbol-db-iface.c
@@ -46,7 +46,6 @@ isymbol_manager_search (IAnjutaSymbolManager *sm,
SymbolDBPlugin *sdb_plugin;
SymbolDBEngine *dbe_project;
SymbolDBEngine *dbe_globals;
- GPtrArray *filter_array;
gchar *pattern;
gboolean exact_match = !partial_name_match;
@@ -54,17 +53,6 @@ isymbol_manager_search (IAnjutaSymbolManager *sm,
dbe_project = SYMBOL_DB_ENGINE (sdb_plugin->sdbe_project);
dbe_globals = SYMBOL_DB_ENGINE (sdb_plugin->sdbe_globals);
- if (match_types & IANJUTA_SYMBOL_TYPE_UNDEF)
- {
- filter_array = NULL;
- /*DEBUG_PRINT ("%s", "filter_array is NULL");*/
- }
- else
- {
- filter_array = symbol_db_util_fill_type_array (match_types);
- /*DEBUG_PRINT ("filter_array filled with %d kinds", filter_array->len);*/
- }
-
if (exact_match == FALSE)
pattern = g_strdup_printf ("%s%%", match_name == NULL ? "" : match_name);
else
@@ -81,7 +69,7 @@ isymbol_manager_search (IAnjutaSymbolManager *sm,
global_tags_search == FALSE ? dbe_project : dbe_globals,
pattern,
exact_match,
- filter_array,
+ match_types,
include_types,
global_symbols_search,
global_tags_search == FALSE ? NULL : sdb_plugin->session_packages,
@@ -90,11 +78,6 @@ isymbol_manager_search (IAnjutaSymbolManager *sm,
info_fields);
g_free (pattern);
- if (filter_array)
- {
- g_ptr_array_foreach (filter_array, (GFunc)g_free, NULL);
- g_ptr_array_free (filter_array, TRUE);
- }
return IANJUTA_ITERABLE (iterator);
}
@@ -102,7 +85,6 @@ IAnjutaIterable*
isymbol_manager_get_members (IAnjutaSymbolManager *sm,
const IAnjutaSymbol *symbol,
IAnjutaSymbolField info_fields,
- gboolean global_search,
GError **err)
{
SymbolDBEngineIteratorNode *node;
@@ -261,24 +243,14 @@ do_search_prj_glb (SymbolDBEngine *dbe, IAnjutaSymbolType match_types,
{
SymbolDBEngineIterator *iterator;
gboolean exact_match;
- GPtrArray *filter_array;
exact_match = symbol_db_util_is_pattern_exact_match (pattern);
- if (match_types & IANJUTA_SYMBOL_TYPE_UNDEF)
- {
- filter_array = NULL;
- }
- else
- {
- filter_array = symbol_db_util_fill_type_array (match_types);
- }
-
iterator =
symbol_db_engine_find_symbol_by_name_pattern_filtered (dbe,
pattern,
exact_match,
- filter_array,
+ match_types,
include_types,
1,
session_packages,
@@ -485,7 +457,6 @@ isymbol_manager_search_file (IAnjutaSymbolManager *sm, IAnjutaSymbolType match_t
SymbolDBPlugin *sdb_plugin;
SymbolDBEngine *dbe;
SymbolDBEngineIterator *iterator;
- GPtrArray *filter_array;
gchar *abs_file_path;
g_return_val_if_fail (file != NULL, NULL);
@@ -501,21 +472,12 @@ isymbol_manager_search_file (IAnjutaSymbolManager *sm, IAnjutaSymbolType match_t
g_warning ("isymbol_manager_search_file (): GFile has no absolute path");
return NULL;
}
-
- if (match_types & IANJUTA_SYMBOL_TYPE_UNDEF)
- {
- filter_array = NULL;
- }
- else
- {
- filter_array = symbol_db_util_fill_type_array (match_types);
- }
-
+
iterator =
symbol_db_engine_find_symbol_by_name_pattern_on_file (dbe,
pattern,
abs_file_path,
- filter_array,
+ match_types,
include_types,
results_limit,
results_offset,
diff --git a/plugins/symbol-db/symbol-db-iface.h b/plugins/symbol-db/symbol-db-iface.h
index 1751ca5..11ce5f6 100644
--- a/plugins/symbol-db/symbol-db-iface.h
+++ b/plugins/symbol-db/symbol-db-iface.h
@@ -108,7 +108,6 @@ IAnjutaIterable*
isymbol_manager_get_members (IAnjutaSymbolManager *sm,
const IAnjutaSymbol *symbol,
IAnjutaSymbolField info_fields,
- gboolean global_search,
GError **err);
IAnjutaIterable*
diff --git a/plugins/symbol-db/symbol-db-search-command.c b/plugins/symbol-db/symbol-db-search-command.c
index 7eefe96..245915d 100644
--- a/plugins/symbol-db/symbol-db-search-command.c
+++ b/plugins/symbol-db/symbol-db-search-command.c
@@ -74,7 +74,6 @@ do_search_file (SymbolDBSearchCommand *sdbsc)
{
SymbolDBSearchCommandPriv *priv;
SymbolDBEngineIterator *iterator;
- GPtrArray *filter_array;
gchar *abs_file_path;
priv = sdbsc->priv;
@@ -86,20 +85,11 @@ do_search_file (SymbolDBSearchCommand *sdbsc)
return NULL;
}
- if (priv->match_types & IANJUTA_SYMBOL_TYPE_UNDEF)
- {
- filter_array = NULL;
- }
- else
- {
- filter_array = symbol_db_util_fill_type_array (priv->match_types);
- }
-
iterator =
symbol_db_engine_find_symbol_by_name_pattern_on_file (priv->dbe,
priv->pattern,
abs_file_path,
- filter_array,
+ priv->match_types,
priv->include_types,
priv->results_limit,
priv->results_offset,
@@ -115,28 +105,17 @@ do_search_prj_glb (SymbolDBSearchCommand *sdbsc)
{
SymbolDBEngineIterator *iterator;
gboolean exact_match;
- GPtrArray *filter_array;
- SymbolDBSearchCommandPriv *priv;
-
+ SymbolDBSearchCommandPriv *priv;
priv = sdbsc->priv;
exact_match = symbol_db_util_is_pattern_exact_match (priv->pattern);
- if (priv->match_types & IANJUTA_SYMBOL_TYPE_UNDEF)
- {
- filter_array = NULL;
- }
- else
- {
- filter_array = symbol_db_util_fill_type_array (priv->match_types);
- }
-
iterator =
symbol_db_engine_find_symbol_by_name_pattern_filtered (priv->dbe,
priv->pattern,
exact_match,
- filter_array,
+ priv->match_types,
priv->include_types,
1,
priv->session_packages,
diff --git a/plugins/symbol-db/symbol-db-view.c b/plugins/symbol-db/symbol-db-view.c
index 8a0d282..9db1790 100644
--- a/plugins/symbol-db/symbol-db-view.c
+++ b/plugins/symbol-db/symbol-db-view.c
@@ -940,10 +940,10 @@ static void
sdb_view_namespace_row_expanded (SymbolDBView *dbv, SymbolDBEngine *dbe,
GtkTreeIter *expanded_iter, gint expanded_symbol_id)
{
+
SymbolDBViewPriv *priv;
SymbolDBEngineIterator *iterator;
GtkTreeStore *store;
- GPtrArray *filter_array;
gpointer node;
g_return_if_fail (dbv != NULL);
@@ -960,23 +960,18 @@ sdb_view_namespace_row_expanded (SymbolDBView *dbv, SymbolDBEngine *dbe,
return;
}
- filter_array = g_ptr_array_new ();
- g_ptr_array_add (filter_array, "class");
- g_ptr_array_add (filter_array, "struct");
-
/* get results from database */
iterator = symbol_db_engine_get_scope_members_by_symbol_id_filtered (dbe,
expanded_symbol_id,
- filter_array,
+ SYMTYPE_CLASS |
+ SYMTYPE_STRUCT,
TRUE,
-1,
-1,
SYMINFO_SIMPLE|
SYMINFO_KIND|
SYMINFO_ACCESS
- );
-
- g_ptr_array_free (filter_array, TRUE);
+ );
if (iterator != NULL)
{
@@ -1013,7 +1008,6 @@ sdb_view_global_row_expanded (SymbolDBView *dbv, SymbolDBEngine *dbe,
GtkTreeStore *store;
SymbolDBViewPriv *priv;
SymbolDBEngineIterator *iterator;
- GPtrArray *filter_array;
gpointer node;
g_return_if_fail (dbv != NULL);
@@ -1030,14 +1024,12 @@ sdb_view_global_row_expanded (SymbolDBView *dbv, SymbolDBEngine *dbe,
return;
}
- filter_array = g_ptr_array_new ();
- g_ptr_array_add (filter_array, "class");
- g_ptr_array_add (filter_array, "struct");
-
/* check for the presence of namespaces.
* If that's the case then populate the root with a 'Global' node.
*/
- iterator = symbol_db_engine_get_global_members_filtered (dbe, filter_array,
+ iterator = symbol_db_engine_get_global_members_filtered (dbe,
+ SYMTYPE_CLASS |
+ SYMTYPE_STRUCT,
TRUE,
TRUE,
-1,
@@ -1045,7 +1037,6 @@ sdb_view_global_row_expanded (SymbolDBView *dbv, SymbolDBEngine *dbe,
SYMINFO_SIMPLE |
SYMINFO_ACCESS |
SYMINFO_KIND);
- g_ptr_array_free (filter_array, TRUE);
if (iterator != NULL)
{
@@ -1082,7 +1073,6 @@ sdb_view_vars_row_expanded (SymbolDBView *dbv, SymbolDBEngine *dbe,
SymbolDBViewPriv *priv;
SymbolDBEngineIterator *iterator;
GtkTreeStore *store;
- GPtrArray *filter_array;
gint positive_symbol_expanded;
gpointer node;
@@ -1100,14 +1090,12 @@ sdb_view_vars_row_expanded (SymbolDBView *dbv, SymbolDBEngine *dbe,
{
return;
}
-
- filter_array = g_ptr_array_new ();
- g_ptr_array_add (filter_array, "class");
- g_ptr_array_add (filter_array, "struct");
-
+
if (positive_symbol_expanded == ROOT_GLOBAL)
{
- iterator = symbol_db_engine_get_global_members_filtered (dbe, filter_array,
+ iterator = symbol_db_engine_get_global_members_filtered (dbe,
+ SYMTYPE_CLASS |
+ SYMTYPE_STRUCT,
FALSE,
TRUE,
-1,
@@ -1120,7 +1108,8 @@ sdb_view_vars_row_expanded (SymbolDBView *dbv, SymbolDBEngine *dbe,
{
iterator = symbol_db_engine_get_scope_members_by_symbol_id_filtered (dbe,
positive_symbol_expanded,
- filter_array,
+ SYMTYPE_CLASS |
+ SYMTYPE_STRUCT,
FALSE,
-1,
-1,
@@ -1128,10 +1117,8 @@ sdb_view_vars_row_expanded (SymbolDBView *dbv, SymbolDBEngine *dbe,
SYMINFO_KIND|
SYMINFO_ACCESS
);
- }
+ }
- g_ptr_array_free (filter_array, TRUE);
-
if (iterator != NULL)
{
NodeIdleExpand *node_expand;
@@ -1552,8 +1539,7 @@ sdb_view_build_and_display_base_tree (SymbolDBView *dbv, SymbolDBEngine *dbe)
GtkTreeStore *store;
SymbolDBViewPriv *priv;
SymbolDBEngineIterator *iterator;
- gboolean we_have_namespaces;
- GPtrArray *filter_array;
+ gboolean we_have_namespaces;
GtkTreeRowReference *global_tree_row_ref;
GtkTreeIter global_child_iter;
const GdkPixbuf *global_pixbuf;
@@ -1565,21 +1551,19 @@ sdb_view_build_and_display_base_tree (SymbolDBView *dbv, SymbolDBEngine *dbe)
store = GTK_TREE_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (dbv)));
we_have_namespaces = FALSE;
-
- filter_array = g_ptr_array_new ();
- g_ptr_array_add (filter_array, "namespace");
/* check for the presence of namespaces.
* If that's the case then populate the root with a 'Global' node.
*/
- iterator = symbol_db_engine_get_global_members_filtered (dbe, filter_array, TRUE,
+ iterator = symbol_db_engine_get_global_members_filtered (dbe,
+ SYMTYPE_NAMESPACE,
+ TRUE,
TRUE,
-1,
-1,
SYMINFO_SIMPLE |
SYMINFO_ACCESS |
SYMINFO_KIND);
- g_ptr_array_free (filter_array, TRUE);
if (iterator != NULL)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]