## GOUndo GOUndo |

## Synopsis

    GType               go_undo_binary_get_type             (void);
    GOUndo *            go_undo_binary_new                  (gpointer a,
                                                             gpointer b,
                                                             GOUndoBinaryFunc undo,
                                                             GFreeFunc fa,
                                                             GFreeFunc fb);
    GOUndo *            go_undo_combine                     (GOUndo *a,
                                                             GOUndo *b);
    GType               go_undo_get_type                    (void);
    void                go_undo_group_add                   (GOUndoGroup *g,
                                                             GOUndo *u);
    GType               go_undo_group_get_type              (void);
    GOUndoGroup *       go_undo_group_new                   (void);
    GType               go_undo_unary_get_type              (void);
    GOUndo *            go_undo_unary_new                   (gpointer a,
                                                             GOUndoUnaryFunc undo,
                                                             GFreeFunc fa);
    void                go_undo_undo                        (GOUndo *u);
    void                go_undo_undo_with_data              (GOUndo *u,
                                                             gpointer data);

## Description

## Details

### go_undo_binary_get_type ()

    GType               go_undo_binary_get_type             (void);

Returns : |

### go_undo_binary_new ()

    GOUndo *            go_undo_binary_new                  (gpointer a,
                                                             gpointer b,
                                                             GOUndoBinaryFunc undo,
                                                             GFreeFunc fa,
                                                             GFreeFunc fb);

This function creates a new undo object for undo operations of two arguments. (In addition, an undo-time argument is added for context.)

`a` : | first argument for undo operation
`b` : | second argument for undo operation
`undo` : | function to call with arguments `a` and `b` for undo.
`fa` : | optional function to free `a`.
`fb` : | optional function to free `b`.
Returns : | a new undo object.

### go_undo_combine ()

    GOUndo *            go_undo_combine                     (GOUndo *a,
                                                             GOUndo *b);

This function takes ownership of the argument references and gives ownership of the result to the caller. Either argument may be NULL in which case the other is returned.

`a` : | optional first undo operation
`b` : | optional last undo operation
Returns : | the combination of two undo operations.

### go_undo_get_type ()

    GType               go_undo_get_type                    (void);

Returns : |

### go_undo_group_add ()

    void                go_undo_group_add                   (GOUndoGroup *g,
                                                             GOUndo *u);

This function adds `u` to `g`.

`g` : | undo group
`u` : | undo object

### go_undo_group_get_type ()

    GType               go_undo_group_get_type              (void);

Returns : |

### go_undo_group_new ()

    GOUndoGroup *       go_undo_group_new                   (void);

This function creates a new undo group for compounding undo objects.

Returns : | a new, empty undo group.

### go_undo_unary_get_type ()

    GType               go_undo_unary_get_type              (void);

Returns : |

### go_undo_unary_new ()

    GOUndo *            go_undo_unary_new                   (gpointer a,
                                                             GOUndoUnaryFunc undo,
                                                             GFreeFunc fa);

This function creates a new undo object for undo operations of one argument. (In addition, an undo-time argument is added for context.)

`a` : | argument for undo operation
`undo` : | function to call with argument `a` for undo.
`fa` : | optional function to free `a`.
Returns : | a new undo object.

### go_undo_undo ()

    void                go_undo_undo                        (GOUndo *u);

Execute the stored undo operation.

`u` : | undo object

### go_undo_undo_with_data ()

    void                go_undo_undo_with_data              (GOUndo *u,
                                                             gpointer data);

Execute the stored undo operation. `data` is supplied to the undo operation as an extra argument. It is meant not to affect the undo operation in any way, but rather supply a context through which progress and errors can be reported.

`u` : | undo object
`data` : | user data