## IAnjutaSymbolManager

IAnjutaSymbolManager — Source code symbols manager inteface

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

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

    #define             IANJUTA_SYMBOL_MANAGER_ERROR
                        IAnjutaSymbolManager;
                        IAnjutaSymbolManagerIface;
    GQuark              ianjuta_symbol_manager_error_quark  (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);
    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);

## 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_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);
    	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_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;

### ianjuta_symbol_manager_error_quark ()

    GQuark              ianjuta_symbol_manager_error_quark  (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

`obj` : | Self
`symbol` : | Symbol which you want to know the parent scope of.
`filename` : | Can be NULL. 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_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.

## 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