## GOUndoUnary GOUndoUnary |

## Synopsis

    struct              GOUndo;
    struct              GOUndoBinary;
    struct              GOUndoBinaryClass;
    void                (*GOUndoBinaryFunc)                 (gpointer a,
                                                             gpointer b,
                                                             gpointer data);
    struct              GOUndoClass;
    struct              GOUndoGroup;
    struct              GOUndoGroupClass;
    struct              GOUndoUnary;
    struct              GOUndoUnaryClass;
    void                (*GOUndoUnaryFunc)                  (gpointer a,
                                                             gpointer data);
    GOUndo *            go_undo_binary_new                  (gpointer a,
                                                             gpointer b,
                                                             GOUndoBinaryFunc undo,
                                                             GFreeFunc fa,
                                                             GFreeFunc fb);
    GOUndo *            go_undo_combine                     (GOUndo *a,
                                                             GOUndo *b);
    void                go_undo_group_add                   (GOUndoGroup *g,
                                                             GOUndo *u);
    GOUndoGroup *       go_undo_group_new                   (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);

## Object Hierarchy

      GObject
       +----GOUndo
             +----GOUndoBinary
             +----GOUndoGroup
             +----GOUndoUnary

      GObject
       +----GOUndo
             +----GOUndoBinary

      GObject
       +----GOUndo
             +----GOUndoGroup

      GObject
       +----GOUndo
             +----GOUndoUnary

## Description

## Details

### struct GOUndo

    struct GOUndo;

### struct GOUndoBinary

    struct GOUndoBinary;

### struct GOUndoBinaryClass

    struct GOUndoBinaryClass {
    	GOUndoClass base;
    };

GOUndoClass `base`; | base class.

### GOUndoBinaryFunc ()

    void                (*GOUndoBinaryFunc)                 (gpointer a,
                                                             gpointer b,
                                                             gpointer data);

### struct GOUndoClass

    struct GOUndoClass {
    	GObjectClass base;

    	void (*undo) (GOUndo *u, gpointer data);
    };

GObjectClass `base`; | base class.
`undo` () | undo. };

### struct GOUndoGroup

    struct GOUndoGroup;

### struct GOUndoGroupClass

    struct GOUndoGroupClass {
    	GOUndoClass base;
    };

GOUndoClass `base`; | base class.

### struct GOUndoUnary

    struct GOUndoUnary;

### struct GOUndoUnaryClass

    struct GOUndoUnaryClass {
    	GOUndoClass base;
    };

GOUndoClass `base`; | base class.

### GOUndoUnaryFunc ()

    void                (*GOUndoUnaryFunc)                  (gpointer a,
                                                             gpointer data);

### 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. [scope async]
`fa` : | optional function to free `a`. [scope async]
`fb` : | optional function to free `b`. [scope async]
Returns : | a new undo object. [transfer full]

### 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. [transfer full]
`b` : | optional last undo operation. [transfer full]
Returns : | the combination of two undo operations. [transfer full]

### 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_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_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. [scope async]
`fa` : | optional function to free `a`. [scope async]
Returns : | a new undo object. [transfer full]

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