## GoUndo GoUndo |

## Synopsis

    #define             GO_UNDO_TYPE
    #define             GO_UNDO                             (o)
    #define             IS_GO_UNDO                          (o)
    GType               go_undo_get_type                    (void);
                        GOUndo;
    void                go_undo_undo                        (GOUndo *u);
    void                go_undo_undo_with_data              (GOUndo *u,
                                                             gpointer data);
    GOUndo*             go_undo_combine                     (GOUndo *a,
                                                             GOUndo *b);
    #define             GO_UNDO_GROUP_TYPE
    #define             GO_UNDO_GROUP                       (o)
    #define             IS_GO_UNDO_GROUP                    (o)
    GType               go_undo_group_get_type              (void);
                        GOUndoGroup;
    GOUndoGroup*        go_undo_group_new                   (void);
    void                go_undo_group_add                   (GOUndoGroup *g,
                                                             GOUndo *u);
    #define             GO_UNDO_BINARY_TYPE
    #define             GO_UNDO_BINARY                      (o)
    #define             IS_GO_UNDO_BINARY                   (o)
    GType               go_undo_binary_get_type             (void);
    void                (*GOUndoBinaryFunc)                 (gpointer a,
                                                             gpointer b,
                                                             gpointer data);
                        GOUndoBinary;
    GOUndo*             go_undo_binary_new                  (gpointer a,
                                                             gpointer b,
                                                             GOUndoBinaryFunc undo,
                                                             GFreeFunc fa,
                                                             GFreeFunc fb);
    #define             GO_UNDO_UNARY_TYPE
    #define             GO_UNDO_UNARY                       (o)
    #define             IS_GO_UNDO_UNARY                    (o)
    GType               go_undo_unary_get_type              (void);
    void                (*GOUndoUnaryFunc)                  (gpointer a,
                                                             gpointer data);
                        GOUndoUnary;
    GOUndo*             go_undo_unary_new                   (gpointer a,
                                                             GOUndoUnaryFunc undo,
                                                             GFreeFunc fa);

## Object Hierarchy

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

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

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

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

## Description

## Details

### GO_UNDO_TYPE

    #define GO_UNDO_TYPE	    (go_undo_get_type ())

### GO_UNDO()

    #define GO_UNDO(o)	    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_UNDO_TYPE, GOUndo))

`o` : |

### IS_GO_UNDO()

    #define IS_GO_UNDO(o)	    (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_UNDO_TYPE))

`o` : |

### go_undo_get_type ()

    GType               go_undo_get_type                    (void);

Returns : |

### GOUndo

    typedef struct _GOUndo GOUndo;

### go_undo_undo ()

    void                go_undo_undo                        (GOUndo *u);

`u` : |

### go_undo_undo_with_data ()

    void                go_undo_undo_with_data              (GOUndo *u,
                                                             gpointer data);

`u` : |
`data` : |

### go_undo_combine ()

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

Combines two undo operations and returns the combination. 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 : |

### GO_UNDO_GROUP_TYPE

    #define GO_UNDO_GROUP_TYPE  (go_undo_group_get_type ())

### GO_UNDO_GROUP()

    #define GO_UNDO_GROUP(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_UNDO_GROUP_TYPE, GOUndoGroup))

`o` : |

### IS_GO_UNDO_GROUP()

    #define IS_GO_UNDO_GROUP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_UNDO_GROUP_TYPE))

`o` : |

### go_undo_group_get_type ()

    GType               go_undo_group_get_type              (void);

Returns : |

### GOUndoGroup

    typedef struct _GOUndoGroup GOUndoGroup;

### go_undo_group_new ()

    GOUndoGroup*        go_undo_group_new                   (void);

Returns : |

### go_undo_group_add ()

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

`g` : |
`u` : |

### GO_UNDO_BINARY_TYPE

    #define GO_UNDO_BINARY_TYPE  (go_undo_binary_get_type ())

### GO_UNDO_BINARY()

    #define GO_UNDO_BINARY(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_UNDO_BINARY_TYPE, GOUndoBinary))

`o` : |

### IS_GO_UNDO_BINARY()

    #define IS_GO_UNDO_BINARY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_UNDO_BINARY_TYPE))

`o` : |

### go_undo_binary_get_type ()

    GType               go_undo_binary_get_type             (void);

Returns : |

### GOUndoBinaryFunc ()

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

`a` : |
`b` : |
`data` : |

### GOUndoBinary

    typedef struct _GOUndoBinary GOUndoBinary;

### go_undo_binary_new ()

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

`a` : |
`b` : |
`undo` : |
`fa` : |
`fb` : |
Returns : |

### GO_UNDO_UNARY_TYPE

    #define GO_UNDO_UNARY_TYPE  (go_undo_unary_get_type ())

### GO_UNDO_UNARY()

    #define GO_UNDO_UNARY(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_UNDO_UNARY_TYPE, GOUndoUnary))

`o` : |

### IS_GO_UNDO_UNARY()

    #define IS_GO_UNDO_UNARY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_UNDO_UNARY_TYPE))

`o` : |

### go_undo_unary_get_type ()

    GType               go_undo_unary_get_type              (void);

Returns : |

### GOUndoUnaryFunc ()

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

`a` : |
`data` : |

### GOUndoUnary

    typedef struct _GOUndoUnary GOUndoUnary;

### go_undo_unary_new ()

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

`a` : |
`undo` : |
`fa` : |
Returns : |