[anjuta] symbol-db: queries api lifting.



commit 925682203507031b754b1cd7251da920e9ac8d4b
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]