## IAnjutaDebuggerVariable IAnjutaDebuggerVariable — Variables interface for debuggers |

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

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

    #define             IANJUTA_DEBUGGER_VARIABLE_ERROR
    struct              IAnjutaDebuggerVariableObject;
    void                (*IAnjutaDebuggerVariableCallback)  (const IAnjutaDebuggerVariableObject *data,
                                                             gpointer user_data,
                                                             GError *err);
    struct              IAnjutaDebuggerVariableIface;
    GQuark              ianjuta_debugger_variable_error_quark
                                                            (void);
    gboolean            ianjuta_debugger_variable_assign    (IAnjutaDebuggerVariable *obj,
                                                             const gchar *name,
                                                             const gchar *value,
                                                             GError **err);
    gboolean            ianjuta_debugger_variable_create    (IAnjutaDebuggerVariable *obj,
                                                             const gchar *expression,
                                                             IAnjutaDebuggerVariableCallback callback,
                                                             gpointer user_data,
                                                             GError **err);
    gboolean            ianjuta_debugger_variable_destroy   (IAnjutaDebuggerVariable *obj,
                                                             const gchar *name,
                                                             GError **err);
    gboolean            ianjuta_debugger_variable_evaluate  (IAnjutaDebuggerVariable *obj,
                                                             const gchar *name,
                                                             IAnjutaDebuggerGCharCallback callback,
                                                             gpointer user_data,
                                                             GError **err);
    gboolean            ianjuta_debugger_variable_list_children
                                                            (IAnjutaDebuggerVariable *obj,
                                                             const gchar *name,
                                                             guint from,
                                                             IAnjutaDebuggerGListCallback callback,
                                                             gpointer user_data,
                                                             GError **err);
    gboolean            ianjuta_debugger_variable_update    (IAnjutaDebuggerVariable *obj,
                                                             IAnjutaDebuggerGListCallback callback,
                                                             gpointer user_data,
                                                             GError **err);

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

## Details

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

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

### IAnjutaDebuggerVariableCallback ()

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

This callback function is used to return a IAnjutaDebuggerVariableObject.

`data` : | a IAnjutaDebuggerVariableObject object
`user_data` : | user data passed to the function

### struct IAnjutaDebuggerVariableIface

    struct IAnjutaDebuggerVariableIface {
    	IAnjutaDebuggerIface g_iface;

    	gboolean (*assign) (IAnjutaDebuggerVariable *obj, const gchar *name,  const gchar *value, GError **err);
    	gboolean (*create) (IAnjutaDebuggerVariable *obj, const gchar *expression,  IAnjutaDebuggerVariableCallback callback,  gpointer user_data, GError **err);
    	gboolean (*destroy) (IAnjutaDebuggerVariable *obj, const gchar *name, GError **err);
    	gboolean (*evaluate) (IAnjutaDebuggerVariable *obj, const gchar *name,  IAnjutaDebuggerGCharCallback callback,  gpointer user_data, GError **err);
    	gboolean (*list_children) (IAnjutaDebuggerVariable *obj, const gchar *name,  guint from,  IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
    	gboolean (*update) (IAnjutaDebuggerVariable *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
    };

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

`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.

`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.

`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.

`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.

`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.

`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.