## InfAdoptedSplitOperation InfAdoptedSplitOperation — Operation wrapping two operations |

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

    #include <libinfinity/adopted/inf-adopted-split-operation.h>

                        InfAdoptedSplitOperation;
    struct              InfAdoptedSplitOperationClass;
    InfAdoptedSplitOperation * inf_adopted_split_operation_new
                                                            (InfAdoptedOperation *first,
                                                             InfAdoptedOperation *second);
    GSList *            inf_adopted_split_operation_unsplit (InfAdoptedSplitOperation *operation);
    InfAdoptedOperation * inf_adopted_split_operation_transform_other
                                                            (InfAdoptedSplitOperation *op,
                                                             InfAdoptedOperation *other,
                                                             gint concurrency_id);

## Object Hierarchy

      GObject
       +----InfAdoptedSplitOperation

## Implemented Interfaces

InfAdoptedSplitOperation implements InfAdoptedOperation.

## Properties

      "first"                    InfAdoptedOperation*  : Read / Write / Construct Only
      "second"                   InfAdoptedOperation*  : Read / Write / Construct Only

## Description

InfAdoptedSplitOperation is a wrapper around that two InfAdoptedOperations. This is normally not required directly but may be a result of some transformation.

## Details

### InfAdoptedSplitOperation

    typedef struct _InfAdoptedSplitOperation InfAdoptedSplitOperation;

InfAdoptedSplitOperation is an opaque data type. You should only access it via the public API functions.

### struct InfAdoptedSplitOperationClass

    struct InfAdoptedSplitOperationClass {
    };

This structure does not contain any public fields.

### inf_adopted_split_operation_new ()

    InfAdoptedSplitOperation * inf_adopted_split_operation_new
                                                            (InfAdoptedOperation *first,
                                                             InfAdoptedOperation *second);

Creates a new InfAdoptedSplitOperation. A split operation is simply a wrapper around two operations (which may in turn be split operations).

`first` : | one of the InfAdoptedOperations to be wrapped
`second` : | the other InfAdoptedOperation to be wrapped
Returns : | A new InfAdoptedSplitOperation.

### inf_adopted_split_operation_unsplit ()

    GSList *            inf_adopted_split_operation_unsplit (InfAdoptedSplitOperation *operation);

Returns a list of the operations contained by the split operation. If the splitted operation are in turn split operations, they will also be unsplitted. The returned list is guarenteed to not contain a InfAdoptedSplitOperation.

`operation` : | A InfAdoptedSplitOperation.
Returns : | A list of operations. Free with `g_slist_free()` when done.

### inf_adopted_split_operation_transform_other ()

    InfAdoptedOperation * inf_adopted_split_operation_transform_other
                                                            (InfAdoptedSplitOperation *op,
                                                             InfAdoptedOperation *other,
                                                             gint concurrency_id);

Transforms `other` against `op`.

`op` : | A InfAdoptedSplitOperation.
`other` : | An arbitrary InfAdoptedOperation.
`concurrency_id` : | The concurrency id for the transformation of `other` against `op`.
Returns : | The transformed operation.

## Property Details

### The `"first"` property

      "first"                    InfAdoptedOperation*  : Read / Write / Construct Only

The first operation of the split operation.

### The `"second"` property

      "second"                   InfAdoptedOperation*  : Read / Write / Construct Only

The second operation of the split operation.