IAnjutaSymbolQuery

IAnjutaSymbolQuery — Source code symbol query interface

Stability Level

Unstable, unless otherwise indicated

Signals

void async-result Run Last

Object Hierarchy

    GEnum
    ├── IAnjutaSymbolQueryDb
    ├── IAnjutaSymbolQueryFileScope
    ├── IAnjutaSymbolQueryMode
    ╰── IAnjutaSymbolQueryName
    GInterface
    ╰── IAnjutaSymbolQuery

Includes

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

Description

A query object will have this interface that allows to tweak various query parameters. Except for the IAnjutaSymbolQueryName and IAnjutaSymbolQueryDb parameters, everything else is changable post-creation.

Note that chaning a query parameter, except for limit and offset will result in re-preparing the query the next time it is executed, so it is not advisable to change it each time the query is executed. For such cases, create different queries with different parameters.

A query is signified by a name enumeration (IAnjutaSymbolQueryName) which practically determines the query type and its execution condition. Each query name is assigned to pre-defined query statement and can only be set during creation time. Then only its specific ianjuta_symbol_query_search_*() can be used to execute the query. These specific execution methods are provided to make it convenient to pass query parameters easily and to ensure all the needed parameters are given.

A query can run in different modes, defined by IAnjutaSymbolQueryMode, by default it is executed in synchrounous mode IANJUTA_SYMBOL_QUERY_MODE_SYNC and can be changed using ianjuta_symbol_query_set_mode(). IANJUTA_SYMBOL_QUERY_MODE_ASYNC runs it in asynchronous mode in a separate thread and can be canceled with ianjuta_symbol_query_cancel().

A query runs on a database, defined by IAnjutaSymbolQueryDb, and can be only selected at creatation time.

In addition, there are many other filters that can be set to the query to refine the query results. For example, ianjuta_symbol_query_set_fields() is used to set the needed symbol fields to retrieve, ianjuta_symbol_query_set_filters() is used to filter the results with symbol types, ianjuta_symbol_query_set_file_scope() limits the results to either public or private scope within the source file, ianjuta_symbol_query_set_group_by() is used to group the results on a given field, ianjuta_symbol_query_set_order_by is used to order the results on a given field.

ianjuta_symbol_query_set_limit() and ianjuta_symbol_query_set_offset() are used to change limit and offset of the resultset. Note again that these parameters do not require re-preparation of query, so can be safely used any time without performance hit.

Functions

ianjuta_symbol_query_error_quark ()

GQuark
ianjuta_symbol_query_error_quark (void);

Returns


ianjuta_symbol_query_cancel ()

void
ianjuta_symbol_query_cancel (IAnjutaSymbolQuery *obj,
                             GError **err);


ianjuta_symbol_query_search ()

IAnjutaIterable *
ianjuta_symbol_query_search (IAnjutaSymbolQuery *obj,
                             const gchar *pattern,
                             GError **err);

Executes IANJUTA_SYMBOL_QUERY_SEARCH query.

Parameters

obj

Self

 

pattern

Search pattern in compliance with SQL LIKE syntax

 

err

Error propagation and reporting.

 

Returns


ianjuta_symbol_query_search_all ()

IAnjutaIterable *
ianjuta_symbol_query_search_all (IAnjutaSymbolQuery *obj,
                                 GError **err);

Executes IANJUTA_SYMBOL_QUERY_SEARCH_ALL query.

Parameters

obj

Self

 

err

Error propagation and reporting.

 

Returns


ianjuta_symbol_query_search_class_parents ()

IAnjutaIterable *
ianjuta_symbol_query_search_class_parents
                               (IAnjutaSymbolQuery *obj,
                                IAnjutaSymbol *symbol,
                                GError **err);

Executes IANJUTA_SYMBOL_QUERY_SEARCH_CLASS_PARENTS query.

Parameters

obj

Self

 

symbol

The class symbol whose parents to get.

 

err

Error propagation and reporting.

 

Returns


ianjuta_symbol_query_search_file ()

IAnjutaIterable *
ianjuta_symbol_query_search_file (IAnjutaSymbolQuery *obj,
                                  const gchar *pattern,
                                  const GFile *file,
                                  GError **err);

Executes IANJUTA_SYMBOL_QUERY_SEARCH_FILE query.

Parameters

obj

Self

 

pattern

Search pattern in compliance with SQL LIKE syntax

 

file

The file whose symbols are searched.

 

err

Error propagation and reporting.

 

Returns


ianjuta_symbol_query_search_id ()

IAnjutaIterable *
ianjuta_symbol_query_search_id (IAnjutaSymbolQuery *obj,
                                gint symbol,
                                GError **err);

Executes IANJUTA_SYMBOL_QUERY_SEARCH_ID query.

Parameters

obj

Self

 

symbol

The symbol id whose details to get.

 

err

Error propagation and reporting.

 

Returns


ianjuta_symbol_query_search_in_scope ()

IAnjutaIterable *
ianjuta_symbol_query_search_in_scope (IAnjutaSymbolQuery *obj,
                                      const gchar *pattern,
                                      IAnjutaSymbol *scope,
                                      GError **err);

Executes IANJUTA_SYMBOL_QUERY_SEARCH_IN_SCOPE query.

Parameters

obj

Self

 

pattern

Search pattern in compliance with SQL LIKE syntax

 

scope

The scope inside which symbols are searched.

 

err

Error propagation and reporting.

 

Returns


ianjuta_symbol_query_search_members ()

IAnjutaIterable *
ianjuta_symbol_query_search_members (IAnjutaSymbolQuery *obj,
                                     IAnjutaSymbol *symbol,
                                     GError **err);

Executes IANJUTA_SYMBOL_QUERY_SEARCH_MEMBERS query.

Parameters

obj

Self

 

symbol

The symbol whose members to get.

 

err

Error propagation and reporting.

 

Returns


ianjuta_symbol_query_search_parent_scope ()

IAnjutaIterable *
ianjuta_symbol_query_search_parent_scope
                               (IAnjutaSymbolQuery *obj,
                                IAnjutaSymbol *symbol,
                                GError **err);

Executes IANJUTA_SYMBOL_QUERY_SEARCH_PARENT_SCOPE query.

Parameters

obj

Self

 

symbol

The symbol whose parent scope is to be found.

 

err

Error propagation and reporting.

 

Returns


ianjuta_symbol_query_search_parent_scope_file ()

IAnjutaIterable *
ianjuta_symbol_query_search_parent_scope_file
                               (IAnjutaSymbolQuery *obj,
                                IAnjutaSymbol *symbol,
                                const gchar *file_path,
                                GError **err);

Executes IANJUTA_SYMBOL_QUERY_SEARCH_PARENT_SCOPE_FILE query.

Parameters

obj

Self

 

symbol

The symbol whose parent scope is to be found.

 

file_path

The file where the parent scope is to be found.

 

err

Error propagation and reporting.

 

Returns


ianjuta_symbol_query_search_scope ()

IAnjutaIterable *
ianjuta_symbol_query_search_scope (IAnjutaSymbolQuery *obj,
                                   const gchar *file_path,
                                   gint line,
                                   GError **err);

Executes IANJUTA_SYMBOL_QUERY_SEARCH_SCOPE query.

Parameters

obj

Self

 

file_path

The file where the scope is.

 

line

The line where the scope is.

 

err

Error propagation and reporting.

 

Returns


ianjuta_symbol_query_set_fields ()

void
ianjuta_symbol_query_set_fields (IAnjutaSymbolQuery *obj,
                                 gint n_fields,
                                 IAnjutaSymbolField *fields,
                                 GError **err);

Sets the fields of Query.

Parameters

obj

Self

 

n_fields

Then number of fields to retrieve.

 

fields

The fields to retrieve in the query. The array length must be n_fields .

 

err

Error propagation and reporting.

 

ianjuta_symbol_query_set_file_scope ()

void
ianjuta_symbol_query_set_file_scope (IAnjutaSymbolQuery *obj,
                                     IAnjutaSymbolQueryFileScope filescope_search,
                                     GError **err);

Sets the filescope search of Query.

Parameters

obj

Self

 

filescope_search

The filescope to search.

 

err

Error propagation and reporting.

 

ianjuta_symbol_query_set_filters ()

void
ianjuta_symbol_query_set_filters (IAnjutaSymbolQuery *obj,
                                  IAnjutaSymbolType filters,
                                  gboolean include_types,
                                  GError **err);

Sets the bit mask of symbol type filters. if include_types is TRUE, symbols satisfying the given symbol types are selected, otherwise they are excluded.

Parameters

obj

Self

 

filters

The mode of query.

 

include_types

TRUE if filter is positive, FALSE if reversed.

 

err

Error propagation and reporting.

 

ianjuta_symbol_query_set_group_by ()

void
ianjuta_symbol_query_set_group_by (IAnjutaSymbolQuery *obj,
                                   IAnjutaSymbolField field,
                                   GError **err);

Sets the field with which result of query is grouped. As a result there will be no duplicates of with this field.

Parameters

obj

Self

 

field

The field to group results.

 

err

Error propagation and reporting.

 

ianjuta_symbol_query_set_limit ()

void
ianjuta_symbol_query_set_limit (IAnjutaSymbolQuery *obj,
                                gint limit,
                                GError **err);

Sets the limit of Query results. No more than limit results are returned.

Parameters

obj

Self

 

limit

The limit of query.

 

err

Error propagation and reporting.

 

ianjuta_symbol_query_set_mode ()

void
ianjuta_symbol_query_set_mode (IAnjutaSymbolQuery *obj,
                               IAnjutaSymbolQueryMode mode,
                               GError **err);

Sets the mode of Query.

Parameters

obj

Self

 

mode

The mode of query.

 

err

Error propagation and reporting.

 

ianjuta_symbol_query_set_offset ()

void
ianjuta_symbol_query_set_offset (IAnjutaSymbolQuery *obj,
                                 gint offset,
                                 GError **err);

Sets the offset index of Query results.

Parameters

obj

Self

 

offset

Offset of the resultset.

 

err

Error propagation and reporting.

 

ianjuta_symbol_query_set_order_by ()

void
ianjuta_symbol_query_set_order_by (IAnjutaSymbolQuery *obj,
                                   IAnjutaSymbolField field,
                                   GError **err);

Sets the field with which result of query is ordered.

Parameters

obj

Self

 

field

The field to order the result.

 

err

Error propagation and reporting.

 

Types and Values

IANJUTA_SYMBOL_QUERY_ERROR

#define IANJUTA_SYMBOL_QUERY_ERROR ianjuta_symbol_query_error_quark()


enum IAnjutaSymbolQueryDb

Sets the database to use for the query. System database is where all system library symbols are found. While project database is where currently open project's symbols are found.

Members

IANJUTA_SYMBOL_QUERY_DB_PROJECT

Select project database.

 

IANJUTA_SYMBOL_QUERY_DB_SYSTEM

Select system database.

 

enum IAnjutaSymbolQueryFileScope

Defines file scope of symbols to query.

Members

IANJUTA_SYMBOL_QUERY_SEARCH_FS_IGNORE

Ignore file scope

 

IANJUTA_SYMBOL_QUERY_SEARCH_FS_PUBLIC

Only public symbols visible to rest of project.

 

IANJUTA_SYMBOL_QUERY_SEARCH_FS_PRIVATE

Only private symbols visible inside a file.

 

enum IAnjutaSymbolQueryMode

This parameter determines the mode of query execution. By default, IANJUTA_SYMBOL_QUERY_MODE_SYNC is selected.

Members

IANJUTA_SYMBOL_QUERY_MODE_SYNC

Syncronous query. The result is immediately available as retrun value of search call.

 

IANJUTA_SYMBOL_QUERY_MODE_ASYNC

Asynchronous query. The search call return immediately and result delievered as a signal later. The actual query is done in a separate thread.

 

IANJUTA_SYMBOL_QUERY_MODE_QUEUED

If the database is busy scanning, then the query is performed later when database is ready. It returns NULL and result is delivered through async-result signal. Only query can stay queued, so calling search multiple times would result in only the last one being active.

 

enum IAnjutaSymbolQueryName

Names of query that defined what kind of query it is.

Members

IANJUTA_SYMBOL_QUERY_SEARCH

Query to perform basic substring search.

 

IANJUTA_SYMBOL_QUERY_SEARCH_ALL

Query to get all symbols

 

IANJUTA_SYMBOL_QUERY_SEARCH_FILE

Query to perform substring search in a file.

 

IANJUTA_SYMBOL_QUERY_SEARCH_IN_SCOPE

Query to perform substring search in a scope.

 

IANJUTA_SYMBOL_QUERY_SEARCH_ID

Query to find the symbol of given ID.

 

IANJUTA_SYMBOL_QUERY_SEARCH_MEMBERS

Query to find members of a scope (eg. class).

 

IANJUTA_SYMBOL_QUERY_SEARCH_CLASS_PARENTS

Query to get parents of a class.

 

IANJUTA_SYMBOL_QUERY_SEARCH_SCOPE

Query to find scope name of a file position.

 

IANJUTA_SYMBOL_QUERY_SEARCH_PARENT_SCOPE

Query to get the parent scope of a symbol.

 

IANJUTA_SYMBOL_QUERY_SEARCH_PARENT_SCOPE_FILE

Query to get the parent scope of a symbol in the file.

 

Signal Details

The “async-result” signal

void
user_function (IAnjutaSymbolQuery *ianjutasymbolquery,
               GObject            *arg1,
               gpointer            user_data)

Flags: Run Last