|
[anjuta/cxxparser] symbol-db: queries api lifting.: msg#08225svn-commits-list
commit 5b1826b27f6134372184589a821ce76d9f1ecdbf Author: Massimo Corà <mcora@xxxxxxxxxxxxx> 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) { _______________________________________________ SVN-commits-list mailing list (read only) http://mail.gnome.org/mailman/listinfo/svn-commits-list Want to limit the commits to a few modules? Go to above URL, log in to edit your options and select the modules ('topics') you want.
|
|
||||||||||||||||||||||||||
|
|
|
| News | Mail Home | sitemap | FAQ | advertise |