## ide-symbol ide-symbol |

## Functions

IdeSymbol * | ide_symbol_ref ()
void | ide_symbol_unref ()
IdeSymbolKind | ide_symbol_get_kind ()
IdeSymbolFlags | ide_symbol_get_flags ()
const gchar * | ide_symbol_get_name ()
IdeSourceLocation * | ide_symbol_get_canonical_location ()
IdeSourceLocation * | ide_symbol_get_declaration_location ()
IdeSourceLocation * | ide_symbol_get_definition_location ()
IdeSymbol * | ide_symbol_new ()

## Types and Values

enum | IdeSymbolKind
enum | IdeSymbolFlags

## Object Hierarchy

        GEnum
        ╰── IdeSymbolKind
        GFlags
        ╰── IdeSymbolFlags

## Description

## Functions

### ide_symbol_ref ()

    IdeSymbol *
    ide_symbol_ref (IdeSymbol *self);

### ide_symbol_unref ()

    void
    ide_symbol_unref (IdeSymbol *self);

### ide_symbol_get_kind ()

    IdeSymbolKind
    ide_symbol_get_kind (IdeSymbol *self);

### ide_symbol_get_flags ()

    IdeSymbolFlags
    ide_symbol_get_flags (IdeSymbol *self);

### ide_symbol_get_name ()

    const gchar *
    ide_symbol_get_name (IdeSymbol *self);

### ide_symbol_get_canonical_location ()

    IdeSourceLocation *
    ide_symbol_get_canonical_location (IdeSymbol *self);

Gets the location of the symbols "implementation". In C/C++ languages, you can have multiple declarations by only a single implementation.

#### Returns

An IdeSourceLocation or `NULL`.

[transfer none][nullable]

### ide_symbol_get_declaration_location ()

    IdeSourceLocation *
    ide_symbol_get_declaration_location (IdeSymbol *self);

The location of a symbol equates to the declaration of the symbol. In C and C++, this would mean the header location (or forward declaration in a C file before the implementation).

If the symbol provider did not register this information, `NULL` will be returned.

#### Returns

An IdeSourceLocation or `NULL`.

[transfer none][nullable]

### ide_symbol_get_definition_location ()

    IdeSourceLocation *
    ide_symbol_get_definition_location (IdeSymbol *self);

Like `ide_symbol_get_declaration_location()` but gets the first declaration (only one can be the definition).

#### Returns

An IdeSourceLocation or `NULL`.

[transfer none][nullable]

### ide_symbol_new ()

    IdeSymbol *
    ide_symbol_new (const gchar *name,
                    IdeSymbolKind kind,
                    IdeSymbolFlags flags,
                    IdeSourceLocation *declaration_location,
                    IdeSourceLocation *definition_location,
                    IdeSourceLocation *canonical_location);

#### Parameters

name | the symbol name |
kind | the symbol kind |
flags | the symbol flags |
declaration_location | the declaration location. | [allow-none]
definition_location | the definition location. | [allow-none]
canonical_location | the canonical location. | [allow-none]

#### Returns

a new IdeSymbol.

[transfer full]

## Types and Values

### enum IdeSymbolKind

#### Members

IDE_SYMBOL_NONE |  |
IDE_SYMBOL_SCALAR |  |
IDE_SYMBOL_CLASS |  |
IDE_SYMBOL_FUNCTION |  |
IDE_SYMBOL_METHOD |  |
IDE_SYMBOL_STRUCT |  |
IDE_SYMBOL_UNION |  |
IDE_SYMBOL_FIELD |  |
IDE_SYMBOL_ENUM |  |
IDE_SYMBOL_ENUM_VALUE |  |
IDE_SYMBOL_VARIABLE |  |
IDE_SYMBOL_HEADER |  |

### enum IdeSymbolFlags

#### Members

IDE_SYMBOL_FLAGS_NONE |  |
IDE_SYMBOL_FLAGS_IS_STATIC |  |
IDE_SYMBOL_FLAGS_IS_MEMBER |  |
IDE_SYMBOL_FLAGS_IS_DEPRECATED |  |