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

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_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 : |