## IAnjutaDebuggerVariable IAnjutaDebuggerVariable — Variables interface for debuggers |

## Stability Level

Unstable, unless otherwise indicated

## Functions

void | (*IAnjutaDebuggerVariableCallback) ()
GQuark | ianjuta_debugger_variable_error_quark ()
gboolean | ianjuta_debugger_variable_assign ()
gboolean | ianjuta_debugger_variable_create ()
gboolean | ianjuta_debugger_variable_destroy ()
gboolean | ianjuta_debugger_variable_evaluate ()
gboolean | ianjuta_debugger_variable_list_children ()
gboolean | ianjuta_debugger_variable_update ()

## Types and Values

#define | IANJUTA_DEBUGGER_VARIABLE_ERROR
struct | IAnjutaDebuggerVariableObject

## Object Hierarchy

        GInterface
        ╰── IAnjutaDebuggerVariable

## Includes

    #include <libanjuta/interfaces/ianjuta-debugger-variable.h>

## Description

This interface is used to examine and change values of expression. It is based on the MI2 variable object interface of gdb. A variable needs to be created before being able to get or set its value and list its children.

## Functions

### IAnjutaDebuggerVariableCallback ()

    void
    (*IAnjutaDebuggerVariableCallback) (const IAnjutaDebuggerVariableObject *data,
                                        gpointer user_data,
                                        GError *err);

This callback function is used to return a IAnjutaDebuggerVariableObject.

#### Parameters

data | a IAnjutaDebuggerVariableObject object |
user_data | user data passed to the function |
err | error |

### ianjuta_debugger_variable_error_quark ()

    GQuark
    ianjuta_debugger_variable_error_quark (void);

### ianjuta_debugger_variable_assign ()

    gboolean
    ianjuta_debugger_variable_assign (IAnjutaDebuggerVariable *obj,
                                      const gchar *name,
                                      const gchar *value,
                                      GError **err);

Set the value of one variable or child object.

#### Parameters

obj | Self |
name | Variable name |
value | Variable value |
err | Error propagation and reporting. |

#### Returns

TRUE if the request succeed and the callback is called. If FALSE, the callback will not be called.

### ianjuta_debugger_variable_create ()

    gboolean
    ianjuta_debugger_variable_create (IAnjutaDebuggerVariable *obj,
                                      const gchar *expression,
                                      IAnjutaDebuggerVariableCallback callback,
                                      gpointer user_data,
                                      GError **err);

Create a new variable object in the current thread and frame.

#### Parameters

obj | Self |
expression | Variable expression |
callback | Callback to call when the variable has been created |
user_data | User data that is passed back to the callback |
err | Error propagation and reporting. |

#### Returns

TRUE if the request succeed and the callback is called. If FALSE, the callback will not be called.

### ianjuta_debugger_variable_destroy ()

    gboolean
    ianjuta_debugger_variable_destroy (IAnjutaDebuggerVariable *obj,
                                       const gchar *name,
                                       GError **err);

Delete a previously created variable or child object including its own children.

#### Parameters

obj | Self |
name | Variable name |
err | Error propagation and reporting. |

#### Returns

TRUE if the request succeed and the callback is called. If FALSE, the callback will not be called.

### ianjuta_debugger_variable_evaluate ()

    gboolean
    ianjuta_debugger_variable_evaluate (IAnjutaDebuggerVariable *obj,
                                        const gchar *name,
                                        IAnjutaDebuggerGCharCallback callback,
                                        gpointer user_data,
                                        GError **err);

Get the value of one variable or child object.

#### Parameters

obj | Self |
name | Variable name |
callback | Callback to call with the variable value |
user_data | User data that is passed back to the callback |
err | Error propagation and reporting. |

#### Returns

TRUE if the request succeed and the callback is called. If FALSE, the callback will not be called.

### ianjuta_debugger_variable_list_children ()

    gboolean
    ianjuta_debugger_variable_list_children
                                   (IAnjutaDebuggerVariable *obj,
                                    const gchar *name,
                                    guint from,
                                    IAnjutaDebuggerGListCallback callback,
                                    gpointer user_data,
                                    GError **err);

List and create objects for variable object's children. The backend can returns only a part of the children, in this case a last variable with a NULL name is added to the list given to the callback function. If the remaining children are wanted, this function must be called again with a from argument corresponding to the first missing children.

#### Parameters

obj | Self |
name | Variable name |
from | Starting from this children (zero-based) |
callback | Callback to call when the children have been created with a list of variable objects |
user_data | User data that is passed back to the callback |
err | Error propagation and reporting. |

#### Returns

TRUE if the request succeed and the callback is called. If FALSE, the callback will not be called.

### ianjuta_debugger_variable_update ()

    gboolean
    ianjuta_debugger_variable_update (IAnjutaDebuggerVariable *obj,
                                      IAnjutaDebuggerGListCallback callback,
                                      gpointer user_data,
                                      GError **err);

List all changed variable objects since the last call.

#### Parameters

obj | Self |
callback | Callback to call with the list of all changed variable names |
user_data | User data that is passed back to the callback |
err | Error propagation and reporting. |

#### Returns

TRUE if the request succeed and the callback is called. If FALSE, the callback will not be called.

## Types and Values

### IANJUTA_DEBUGGER_VARIABLE_ERROR

    #define IANJUTA_DEBUGGER_VARIABLE_ERROR ianjuta_debugger_variable_error_quark()

### struct IAnjutaDebuggerVariableObject

    struct IAnjutaDebuggerVariableObject {
    	gchar *name;
    	gchar *expression;
    	gchar *type;
    	gchar *value;
    	gboolean changed;
    	gboolean exited;
    	gboolean deleted;
    	gint children;
    	gboolean has_more;
    };

Defines a variable object.

#### Members

gchar *`name`; | unique variable object name created by backend |
gchar *`expression`; | corresponding variable name or expression |
gchar *`type`; | variable type |
gchar *`value`; | variable value |
gboolean `changed`; | TRUE if the variable has changed |
gboolean `exited`; | TRUE if the variable is outside current scope |
gboolean `deleted`; | TRUE if the variable has been removed |
gint `children`; | Number of variable children, -1 if unknown |
gboolean `has_more`; | TRUE if the children value is wrong |