## IAnjutaSymbolManager

IAnjutaSymbolManager — Source code symbols manager inteface

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

    #include <libanjuta/interfaces/ianjuta-symbol-manager.h>

    #define             IANJUTA_TYPE_SYMBOL_MANAGER_SEARCH_FILESCOPE
    #define             IANJUTA_SYMBOL_MANAGER_ERROR
                        IAnjutaSymbolManager;
                        IAnjutaSymbolManagerIface;
    enum                IAnjutaSymbolManagerSearchFileScope;
    void                (*IAnjutaSymbolManagerSearchCallback)
                                                            (guint search_id,
                                                             IAnjutaIterable *result,
                                                             gpointer user_data);
    GQuark              ianjuta_symbol_manager_error_quark  (void);
    GType               ianjuta_symbol_manager_get_type     (void);
    IAnjutaIterable*    ianjuta_symbol_manager_get_class_parents
                                                            (IAnjutaSymbolManager *obj,
                                                             const IAnjutaSymbol *symbol,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);
    IAnjutaIterable*    ianjuta_symbol_manager_get_members  (IAnjutaSymbolManager *obj,
                                                             const IAnjutaSymbol *symbol,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);
    IAnjutaIterable*    ianjuta_symbol_manager_get_parent_scope
                                                            (IAnjutaSymbolManager *obj,
                                                             const IAnjutaSymbol *symbol,
                                                             const gchar *filename,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);
    IAnjutaIterable*    ianjuta_symbol_manager_get_scope    (IAnjutaSymbolManager *obj,
                                                             const gchar *filename,
                                                             gulong line,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);
    IAnjutaIterable*    ianjuta_symbol_manager_get_scope_chain
                                                            (IAnjutaSymbolManager *obj,
                                                             const gchar *filename,
                                                             gulong line,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);
    IAnjutaSymbol*      ianjuta_symbol_manager_get_symbol_by_id
                                                            (IAnjutaSymbolManager *obj,
                                                             gint symbol_id,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);
    IAnjutaIterable*    ianjuta_symbol_manager_get_symbol_more_info
                                                            (IAnjutaSymbolManager *obj,
                                                             const IAnjutaSymbol *symbol,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);
    IAnjutaIterable*    ianjuta_symbol_manager_search       (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *match_name,
                                                             gboolean partial_name_match,
                                                             IAnjutaSymbolManagerSearchFileScope filescope_search,
                                                             gboolean global_tags_search,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GError **err);
    IAnjutaIterable*    ianjuta_symbol_manager_search_file  (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             const GFile *file,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GError **err);
    guint               ianjuta_symbol_manager_search_file_async
                                                            (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             const GFile *file,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GCancellable *cancel,
                                                             AnjutaAsyncNotify *notify,
                                                             IAnjutaSymbolManagerSearchCallback callback,
                                                             gpointer callback_user_data,
                                                             GError **err);
    IAnjutaIterable*    ianjuta_symbol_manager_search_project
                                                            (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             IAnjutaSymbolManagerSearchFileScope filescope_search,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GError **err);
    guint               ianjuta_symbol_manager_search_project_async
                                                            (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             IAnjutaSymbolManagerSearchFileScope filescope_search,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GCancellable *cancel,
                                                             AnjutaAsyncNotify *notify,
                                                             IAnjutaSymbolManagerSearchCallback callback,
                                                             gpointer callback_user_data,
                                                             GError **err);
    IAnjutaIterable*    ianjuta_symbol_manager_search_symbol_in_scope
                                                            (IAnjutaSymbolManager *obj,
                                                             const gchar *pattern,
                                                             const IAnjutaSymbol *container_symbol,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);
    IAnjutaIterable*    ianjuta_symbol_manager_search_system
                                                            (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             IAnjutaSymbolManagerSearchFileScope filescope_search,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GError **err);
    guint               ianjuta_symbol_manager_search_system_async
                                                            (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             IAnjutaSymbolManagerSearchFileScope filescope_search,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GCancellable *cancel,
                                                             AnjutaAsyncNotify *notify,
                                                             IAnjutaSymbolManagerSearchCallback callback,
                                                             gpointer callback_user_data,
                                                             GError **err);

## Object Hierarchy

      GInterface
       +----IAnjutaSymbolManager

## Prerequisites

IAnjutaSymbolManager requires GObject.

## Signals

      "prj-scan-end"                                   : Run Last
      "prj-symbol-inserted"                            : Run Last
      "prj-symbol-removed"                             : Run Last
      "prj-symbol-updated"                             : Run Last
      "sys-scan-end"                                   : Run Last
      "sys-symbol-inserted"                            : Run Last
      "sys-symbol-removed"                             : Run Last
      "sys-symbol-updated"                             : Run Last

## Description

## Details

### IANJUTA_TYPE_SYMBOL_MANAGER_SEARCH_FILESCOPE

    #define IANJUTA_TYPE_SYMBOL_MANAGER_SEARCH_FILESCOPE (ianjuta_symbol_manager_search_filescope_get_type())

### IANJUTA_SYMBOL_MANAGER_ERROR

    #define IANJUTA_SYMBOL_MANAGER_ERROR ianjuta_symbol_manager_error_quark()

### IAnjutaSymbolManager

    typedef struct _IAnjutaSymbolManager IAnjutaSymbolManager;

### IAnjutaSymbolManagerIface

    typedef struct {
    	GTypeInterface g_iface;

    	/* Signal */
    	void (*prj_scan_end) (IAnjutaSymbolManager *obj, gint process_id);
    	/* Signal */
    	void (*prj_symbol_inserted) (IAnjutaSymbolManager *obj, gint symbol_id);
    	/* Signal */
    	void (*prj_symbol_removed) (IAnjutaSymbolManager *obj, gint symbol_id);
    	/* Signal */
    	void (*prj_symbol_updated) (IAnjutaSymbolManager *obj, gint symbol_id);
    	/* Signal */
    	void (*sys_scan_end) (IAnjutaSymbolManager *obj, gint process_id);
    	/* Signal */
    	void (*sys_symbol_inserted) (IAnjutaSymbolManager *obj, gint symbol_id);
    	/* Signal */
    	void (*sys_symbol_removed) (IAnjutaSymbolManager *obj, gint symbol_id);
    	/* Signal */
    	void (*sys_symbol_updated) (IAnjutaSymbolManager *obj, gint symbol_id);

    	IAnjutaIterable* (*get_class_parents) (IAnjutaSymbolManager *obj, const IAnjutaSymbol *symbol,  IAnjutaSymbolField info_fields, GError **err);
    	IAnjutaIterable* (*get_members) (IAnjutaSymbolManager *obj, const IAnjutaSymbol *symbol,  IAnjutaSymbolField info_fields, GError **err);
    	IAnjutaIterable* (*get_parent_scope) (IAnjutaSymbolManager *obj, const IAnjutaSymbol *symbol,  const gchar *filename,  IAnjutaSymbolField info_fields, GError **err);
    	IAnjutaIterable* (*get_scope) (IAnjutaSymbolManager *obj, const gchar* filename,  gulong line,  IAnjutaSymbolField info_fields, GError **err);
    	IAnjutaIterable* (*get_scope_chain) (IAnjutaSymbolManager *obj, const gchar* filename,  gulong line,  IAnjutaSymbolField info_fields, GError **err);
    	IAnjutaSymbol* (*get_symbol_by_id) (IAnjutaSymbolManager *obj, gint symbol_id,  IAnjutaSymbolField info_fields, GError **err);
    	IAnjutaIterable* (*get_symbol_more_info) (IAnjutaSymbolManager *obj, const IAnjutaSymbol *symbol,  IAnjutaSymbolField info_fields, GError **err);
    	IAnjutaIterable* (*search) (IAnjutaSymbolManager *obj, IAnjutaSymbolType match_types,  gboolean include_types,  IAnjutaSymbolField info_fields,  const gchar *match_name,  gboolean partial_name_match,  IAnjutaSymbolManagerSearchFileScope filescope_search,  gboolean global_tags_search,  gint results_limit,  gint results_offset, GError **err);
    	IAnjutaIterable* (*search_file) (IAnjutaSymbolManager *obj, IAnjutaSymbolType match_types,  gboolean include_types,  IAnjutaSymbolField info_fields,  const gchar *pattern,  const GFile *file,  gint results_limit,  gint results_offset, GError **err);
    	guint (*search_file_async) (IAnjutaSymbolManager *obj, IAnjutaSymbolType match_types,  gboolean include_types,  IAnjutaSymbolField info_fields,  const gchar *pattern,  const GFile *file,  gint results_limit,  gint results_offset,  GCancellable* cancel,  AnjutaAsyncNotify *notify,  IAnjutaSymbolManagerSearchCallback callback,  gpointer callback_user_data, GError **err);
    	IAnjutaIterable* (*search_project) (IAnjutaSymbolManager *obj, IAnjutaSymbolType match_types,  gboolean include_types,  IAnjutaSymbolField info_fields,  const gchar *pattern,  IAnjutaSymbolManagerSearchFileScope filescope_search,  gint results_limit,  gint results_offset, GError **err);
    	guint (*search_project_async) (IAnjutaSymbolManager *obj, IAnjutaSymbolType match_types,  gboolean include_types,  IAnjutaSymbolField info_fields,  const gchar *pattern,  IAnjutaSymbolManagerSearchFileScope filescope_search,  gint results_limit,  gint results_offset,  GCancellable* cancel,  AnjutaAsyncNotify *notify,  IAnjutaSymbolManagerSearchCallback callback,  gpointer callback_user_data, GError **err);
    	IAnjutaIterable* (*search_symbol_in_scope) (IAnjutaSymbolManager *obj, const gchar *pattern,  const IAnjutaSymbol *container_symbol,  IAnjutaSymbolType match_types,  gboolean include_types,  gint results_limit,  gint results_offset,  IAnjutaSymbolField info_fields, GError **err);
    	IAnjutaIterable* (*search_system) (IAnjutaSymbolManager *obj, IAnjutaSymbolType match_types,  gboolean include_types,  IAnjutaSymbolField info_fields,  const gchar *pattern,  IAnjutaSymbolManagerSearchFileScope filescope_search,  gint results_limit,  gint results_offset, GError **err);
    	guint (*search_system_async) (IAnjutaSymbolManager *obj, IAnjutaSymbolType match_types,  gboolean include_types,  IAnjutaSymbolField info_fields,  const gchar *pattern,  IAnjutaSymbolManagerSearchFileScope filescope_search,  gint results_limit,  gint results_offset,  GCancellable* cancel,  AnjutaAsyncNotify *notify,  IAnjutaSymbolManagerSearchCallback callback,  gpointer callback_user_data, GError **err);
    } IAnjutaSymbolManagerIface;

### enum IAnjutaSymbolManagerSearchFileScope

    typedef enum {
    	IANJUTA_SYMBOL_MANAGER_SEARCH_FS_IGNORE = -1,
    	IANJUTA_SYMBOL_MANAGER_SEARCH_FS_PUBLIC = 1,
    	IANJUTA_SYMBOL_MANAGER_SEARCH_FS_PRIVATE = 0
    } IAnjutaSymbolManagerSearchFileScope;

`IANJUTA_SYMBOL_MANAGER_SEARCH_FS_IGNORE`: to be ignored (e.g. Will search both private and public scopes). `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`: only private or static (for C language) will be searched (the ones that _do_ belong to the file scope).

### IAnjutaSymbolManagerSearchCallback ()

    void                (*IAnjutaSymbolManagerSearchCallback)
                                                            (guint search_id,
                                                             IAnjutaIterable *result,
                                                             gpointer user_data);

`search_id` : |
`result` : |
`user_data` : |

### ianjuta_symbol_manager_error_quark ()

    GQuark              ianjuta_symbol_manager_error_quark  (void);

Returns : |

### ianjuta_symbol_manager_get_type ()

    GType               ianjuta_symbol_manager_get_type     (void);

Returns : |

### ianjuta_symbol_manager_get_class_parents ()

    IAnjutaIterable*    ianjuta_symbol_manager_get_class_parents
                                                            (IAnjutaSymbolManager *obj,
                                                             const IAnjutaSymbol *symbol,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);

`obj` : |
`symbol` : |
`info_fields` : |
`err` : |
Returns : |

### ianjuta_symbol_manager_get_members ()

    IAnjutaIterable*    ianjuta_symbol_manager_get_members  (IAnjutaSymbolManager *obj,
                                                             const IAnjutaSymbol *symbol,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);

Database query. The returned IAnjutaIterable object must be unreffed after use.

`obj` : | Self
`symbol` : |
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols.
`err` : | Error propagation and reporting.
Returns : | an iteratable object, or NULL if error occurs or if no symbols are found.

### ianjuta_symbol_manager_get_parent_scope ()

    IAnjutaIterable*    ianjuta_symbol_manager_get_parent_scope
                                                            (IAnjutaSymbolManager *obj,
                                                             const IAnjutaSymbol *symbol,
                                                             const gchar *filename,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);

Database query. The returned IAnjutaIterable object must be unreffed after use. Find the parent scope given a symbol. The query is performed in the project db.

`obj` : | Self
`symbol` : | Symbol which you want to know the parent scope of.
`filename` : | Can be NULL for a wider search (i.e. not just limited to that file). Full path filename where to search for the parent scope symbol.
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols.
`err` : | Error propagation and reporting.
Returns : | The returned IAnjutaIterable object should contain just one element if the query is successful, no element or NULL is returned if function went wrong. The returned IAnjutaIterable object must be unreffed after use.

### ianjuta_symbol_manager_get_scope ()

    IAnjutaIterable*    ianjuta_symbol_manager_get_scope    (IAnjutaSymbolManager *obj,
                                                             const gchar *filename,
                                                             gulong line,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);

Database query. The returned IAnjutaIterable object must be unreffed after use. It gets the scope specified by the line of the file.

`obj` : | Self
`filename` : | full path of the file. `line` line of `filename` in which symbol exist.
`line` : |
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols.
`err` : | Error propagation and reporting.
Returns : | The returned iterator should contain just one element if the query is successful, no element or NULL is returned if function went wrong.

### ianjuta_symbol_manager_get_scope_chain ()

    IAnjutaIterable*    ianjuta_symbol_manager_get_scope_chain
                                                            (IAnjutaSymbolManager *obj,
                                                             const gchar *filename,
                                                             gulong line,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);

Walk the path up to the root scope given a full_local_file_path and a line number. The returned iterator will be populated with IAnjutaSymbol(s) so that it could be easily browsed by a client app. e.g. namespace FooBase { class FooKlass {

}

void FooKlass::`foo_func()` { <-------------- this is the scoped symbol }

`obj` : | Self
`filename` : | Full path filename where to search for the parent scope symbol. Can be NULL for a wider search (i.e. not just limited to that file).
`line` : | Line of the file where the symbol is.
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols.
`err` : | Error propagation and reporting.
Returns : | NULL on error or if scope isn't found. The returned iterator'll contain symbols in this order: foo_func, FooKlass, FooBase.

### ianjuta_symbol_manager_get_symbol_by_id ()

    IAnjutaSymbol*      ianjuta_symbol_manager_get_symbol_by_id
                                                            (IAnjutaSymbolManager *obj,
                                                             gint symbol_id,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);

Database query. The returned IAnjutaIterable object must be unreffed after use. A symbol is identified by an unique id. If you have its id you can also have its object IAnjutaSymbol.

`obj` : | Self `symbol_id` unique id of the symbol you want to know about.
`symbol_id` : |
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols. `return` NULL on error.
`err` : |
Returns : | The returned IAnjutaIterable object should contain just one element if the query is successful, no element or NULL is returned if function went wrong. The returned IAnjutaIterable object must be unreffed after use.

### ianjuta_symbol_manager_get_symbol_more_info ()

    IAnjutaIterable*    ianjuta_symbol_manager_get_symbol_more_info
                                                            (IAnjutaSymbolManager *obj,
                                                             const IAnjutaSymbol *symbol,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);

Database query. The returned IAnjutaIterable object must be unreffed after use. While at first sight this function may seem as useless, in a deeper inspection you can see that you can achieve speed improvements for example avoiding to pass many info_fields requests to a search query, which itself could require complicated joins between the db tables, slowing down the thing. It's up to you to see which method is more performant.

`obj` : | Self `symbol` symbol of which you want to know more infos about.
`symbol` : |
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols.
`err` : | Error propagation and reporting.
Returns : | The returned IAnjutaIterable object should contain just one element if the query is successful, no element or NULL is returned if function went wrong. The returned IAnjutaIterable object must be unreffed after use.

### ianjuta_symbol_manager_search ()

    IAnjutaIterable*    ianjuta_symbol_manager_search       (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *match_name,
                                                             gboolean partial_name_match,
                                                             IAnjutaSymbolManagerSearchFileScope filescope_search,
                                                             gboolean global_tags_search,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GError **err);

Database query. The returned IAnjutaIterable object must be unreffed after use.

`obj` : | Self
`match_types` : | If passed IANJUTA_SYMBOL_TYPE_UNDEF the function will not perfom any filter.
`include_types` : | Should the result contain or exclude the match_types? TRUE to include them, FALSE to exclude. For example use may want all symbols but classes.
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols.
`match_name` : | Name of the symbol you want to search for. If you just want to get all the symbols then you need to use "%" as pattern. NULL _is not_ accepted.
`partial_name_match` : | if TRUE it will search for `match_name`%, it FALSE for the exact string match_name.
`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.
`results_offset` : | Skip results_offset results. -1 If you don't want to use this par.
`err` : | Error propagation and reporting. `deprecated` This function is deprecated and should not be used in new code.
Returns : | an iteratable object, or NULL if error occurs or if no symbols are found.

### ianjuta_symbol_manager_search_file ()

    IAnjutaIterable*    ianjuta_symbol_manager_search_file  (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             const GFile *file,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GError **err);

Database query. The returned IAnjutaIterable object must be unreffed after use. The search is case sensitive. Symbols are searched only in the specified file. There won't be distinction in symbols with file_scope = 1 or 0

`obj` : | Self
`match_types` : | If passed IANJUTA_SYMBOL_TYPE_UNDEF the function will not perfom any filter.
`include_types` : | Should the result contain or exclude the match_types? TRUE to include them, FALSE to exclude. For example use may want all symbols but classes.

`info_fields` :

Kind of infos you would like to have available on the resulting Symbols. `pattern` Pattern you want to search for. It can me something like 'foo_func' (exact match) or something like 'foo_fun%' (LIKE match, matching all the symbol prefixed with 'foo_fun'). NULL _is not_ accepted `file` GFile of the file, belonging to the project, which you want to scan symbols for. Note that if the file doesn't belong to the project, it won't be scanned correctly.

`pattern` : |
`file` : |
`results_limit` : | Limit results to an upper bound. -1 If you don't want to use this par.
`results_offset` : | Skip results_offset results. -1 If you don't want to use this par.
`err` : | Error propagation and reporting.
Returns : | an iteratable object, or NULL if error occurs or if no symbols are found.

### ianjuta_symbol_manager_search_file_async ()

    guint               ianjuta_symbol_manager_search_file_async
                                                            (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             const GFile *file,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GCancellable *cancel,
                                                             AnjutaAsyncNotify *notify,
                                                             IAnjutaSymbolManagerSearchCallback callback,
                                                             gpointer callback_user_data,
                                                             GError **err);

Async database query. The returned IAnjutaIterable object must be unreffed after use. The search is case sensitive. Symbols are searched only in the specified file. There won't be distinction in symbols with file_scope = 1 or 0

`obj` : | Self
`match_types` : | If passed IANJUTA_SYMBOL_TYPE_UNDEF the function will not perfom any filter.
`include_types` : | Should the result contain or exclude the match_types? TRUE to include them, FALSE to exclude. For example use may want all symbols but classes.
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols. `pattern` Pattern you want to search for. It can me something like 'foo_func' (exact match) or something like 'foo_fun%' (LIKE match, matching all the symbol prefixed with 'foo_fun'). NULL _is not_ accepted `file` GFile of the file, belonging to the project, which you want to scan symbols for.
`pattern` : |
`file` : |
`results_limit` : | Limit results to an upper bound. -1 If you don't want to use this par.
`results_offset` : | Skip results_offset results. -1 If you don't want to use this par.
`cancel` : | An optional GCancellable object to cancel the operation, or NULL.
`notify` : | AnjutaAsyncNotify object for finish notification and error reporting.
`callback` : | SearchCallback callback to call when query result data from database is available
`callback_user_data` : | User data passed to callback
`err` : | Error propagation and reporting.
Returns : | guint handle to identify the query result. It would infact be possible to have more async queries at the same time. This is for identify them. Returns 0 on error.

### ianjuta_symbol_manager_search_project ()

    IAnjutaIterable*    ianjuta_symbol_manager_search_project
                                                            (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             IAnjutaSymbolManagerSearchFileScope filescope_search,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GError **err);

Database query. The returned IAnjutaIterable object must be unreffed after use. The search is case sensitive. Symbols are searched in current opened project.

`obj` : | Self
`match_types` : | If passed IANJUTA_SYMBOL_TYPE_UNDEF the function will not perfom any filter.
`include_types` : | Should the result contain or exclude the match_types? TRUE to include them, FALSE to exclude. For example use may want all symbols but classes.
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols. `pattern` Pattern you want to search for. It can me something like 'foo_func' (exact match) or something like 'foo_fun%' (LIKE match, matching all the symbol prefixed with 'foo_fun'). NULL _is not_ accepted
`pattern` : |
`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
`results_limit` : | Limit results to an upper bound. -1 If you don't want to use this par.
`results_offset` : | Skip results_offset results. -1 If you don't want to use this par.
`err` : | Error propagation and reporting.
Returns : | an iteratable object, or NULL if error occurs or if no symbols are found.

### ianjuta_symbol_manager_search_project_async ()

    guint               ianjuta_symbol_manager_search_project_async
                                                            (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             IAnjutaSymbolManagerSearchFileScope filescope_search,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GCancellable *cancel,
                                                             AnjutaAsyncNotify *notify,
                                                             IAnjutaSymbolManagerSearchCallback callback,
                                                             gpointer callback_user_data,
                                                             GError **err);

Async database query. The returned IAnjutaIterable object must be unreffed after use. The search is case sensitive. Symbols are searched in the global packages (system) context.

`obj` : | Self
`match_types` : | If passed IANJUTA_SYMBOL_TYPE_UNDEF the function will not perfom any filter.
`include_types` : | Should the result contain or exclude the match_types? TRUE to include them, FALSE to exclude. For example use may want all symbols but classes.
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols. `pattern` Pattern you want to search for. It can me something like 'foo_func' (exact match) or something like 'foo_fun%' (LIKE match, matching all the symbol prefixed with 'foo_fun'). NULL _is not_ accepted
`pattern` : |
`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
`results_limit` : | Limit results to an upper bound. -1 If you don't want to use this par.
`results_offset` : | Skip results_offset results. -1 If you don't want to use this par.
`cancel` : | An optional GCancellable object to cancel the operation, or NULL.
`notify` : | AnjutaAsyncNotify object for finish notification and error reporting.
`callback` : | SearchCallback callback to call when query result data from database is available
`callback_user_data` : | User data passed to callback
`err` : | Error propagation and reporting.
Returns : | guint handle to identify the query result. It would infact be possible to have more async queries at the same time. This is for identify them. Returns 0 on error.

### ianjuta_symbol_manager_search_symbol_in_scope ()

    IAnjutaIterable*    ianjuta_symbol_manager_search_symbol_in_scope
                                                            (IAnjutaSymbolManager *obj,
                                                             const gchar *pattern,
                                                             const IAnjutaSymbol *container_symbol,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             IAnjutaSymbolField info_fields,
                                                             GError **err);

Usually, for instance in a completion engine we have to search for symbols that are part of a container symbol, even for their existence. This function would be useful and fast in those cases.

`obj` :

Self `pattern` Pattern you want to search for. If NULL it will use '%' and LIKE for query. `container_symbol_id` The container symbol id where you want to search in. `match_types` Can be set to IANJUTA_SYMBOL_TYPE_UNDEF. In that case these filters will not be taken into consideration. `include_kinds` Should the filter_kinds (if not null) be applied as inluded or excluded? `results_limit` Limit results to an upper bound. -1 If you don't want to use this par. `results_offset` Skip results_offset results. -1 If you don't want to use this par. `info_fields` Infos about symbols you want to know.

`pattern` : |
`container_symbol` : |
`match_types` : |
`include_types` : |
`results_limit` : |
`results_offset` : |
`info_fields` : |
`err` : |
Returns : |

### ianjuta_symbol_manager_search_system ()

    IAnjutaIterable*    ianjuta_symbol_manager_search_system
                                                            (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             IAnjutaSymbolManagerSearchFileScope filescope_search,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GError **err);

Database query. The returned IAnjutaIterable object must be unreffed after use. The search is case sensitive. Symbols are searched in global (system) packages. User must have installed the -dev packages of, for istance, gtk+, glib, etc.

`obj` : | Self
`match_types` : | If passed IANJUTA_SYMBOL_TYPE_UNDEF the function will not perfom any filter.
`include_types` : | Should the result contain or exclude the match_types? TRUE to include them, FALSE to exclude. For example use may want all symbols but classes.
`info_fields` : | Kind of infos you would like to have available on the resulting Symbols. `pattern` Pattern you want to search for. It can me something like 'foo_func' (exact match) or something like 'foo_fun%' (LIKE match, matching all the symbol prefixed with 'foo_fun'). NULL _is not_ accepted
`pattern` : |
`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
`results_limit` : | Limit results to an upper bound. -1 If you don't want to use this par.
`results_offset` : | Skip results_offset results. -1 If you don't want to use this par.
`err` : | Error propagation and reporting.
Returns : | an iteratable object, or NULL if error occurs or if no symbols are found.

### ianjuta_symbol_manager_search_system_async ()

    guint               ianjuta_symbol_manager_search_system_async
                                                            (IAnjutaSymbolManager *obj,
                                                             IAnjutaSymbolType match_types,
                                                             gboolean include_types,
                                                             IAnjutaSymbolField info_fields,
                                                             const gchar *pattern,
                                                             IAnjutaSymbolManagerSearchFileScope filescope_search,
                                                             gint results_limit,
                                                             gint results_offset,
                                                             GCancellable *cancel,
                                                             AnjutaAsyncNotify *notify,
                                                             IAnjutaSymbolManagerSearchCallback callback,
                                                             gpointer callback_user_data,
                                                             GError **err);

`obj` : |
`match_types` : |
`include_types` : |
`info_fields` : |
`pattern` : |
`filescope_search` : |
`results_limit` : |
`results_offset` : |
`cancel` : |
`notify` : |
`callback` : |
`callback_user_data` : |
`err` : |
Returns : |

## Signal Details

### The `"prj-scan-end"` signal

    void                user_function                      (IAnjutaSymbolManager *ianjutasymbolmanager,
                                                            gint                  arg1,
                                                            gpointer              user_data)                 : Run Last

`ianjutasymbolmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"prj-symbol-inserted"` signal

    void                user_function                      (IAnjutaSymbolManager *ianjutasymbolmanager,
                                                            gint                  arg1,
                                                            gpointer              user_data)                 : Run Last

`ianjutasymbolmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"prj-symbol-removed"` signal

    void                user_function                      (IAnjutaSymbolManager *ianjutasymbolmanager,
                                                            gint                  arg1,
                                                            gpointer              user_data)                 : Run Last

`ianjutasymbolmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"prj-symbol-updated"` signal

    void                user_function                      (IAnjutaSymbolManager *ianjutasymbolmanager,
                                                            gint                  arg1,
                                                            gpointer              user_data)                 : Run Last

`ianjutasymbolmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"sys-scan-end"` signal

    void                user_function                      (IAnjutaSymbolManager *ianjutasymbolmanager,
                                                            gint                  arg1,
                                                            gpointer              user_data)                 : Run Last

`ianjutasymbolmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"sys-symbol-inserted"` signal

    void                user_function                      (IAnjutaSymbolManager *ianjutasymbolmanager,
                                                            gint                  arg1,
                                                            gpointer              user_data)                 : Run Last

`ianjutasymbolmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"sys-symbol-removed"` signal

    void                user_function                      (IAnjutaSymbolManager *ianjutasymbolmanager,
                                                            gint                  arg1,
                                                            gpointer              user_data)                 : Run Last

`ianjutasymbolmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

### The `"sys-symbol-updated"` signal

    void                user_function                      (IAnjutaSymbolManager *ianjutasymbolmanager,
                                                            gint                  arg1,
                                                            gpointer              user_data)                 : Run Last

`ianjutasymbolmanager` : | the object which received the signal.
`arg1` : |
`user_data` : | user data set when the signal handler was connected.

## See Also

IAnjutaSymbol