static InfAdoptedOperation* inf_text_default_insert_operation_transform(InfAdoptedOperation* operation, InfAdoptedOperation* against, InfAdoptedConcurrencyId cid) { g_assert(INF_TEXT_IS_DEFAULT_INSERT_OPERATION(operation)); if(INF_TEXT_IS_INSERT_OPERATION(against)) { return inf_text_insert_operation_transform_insert( INF_TEXT_INSERT_OPERATION(operation), INF_TEXT_INSERT_OPERATION(against), cid ); } else if(INF_TEXT_IS_DELETE_OPERATION(against)) { return inf_text_insert_operation_transform_delete( INF_TEXT_INSERT_OPERATION(operation), INF_TEXT_DELETE_OPERATION(against), cid ); } else { g_assert_not_reached(); return NULL; } }
static InfAdoptedConcurrencyId inf_text_default_insert_operation_get_concurrency_id( InfAdoptedOperation* operation, InfAdoptedOperation* against) { g_assert(INF_TEXT_IS_DEFAULT_INSERT_OPERATION(operation)); return inf_text_insert_operation_get_concurrency_id( INF_TEXT_INSERT_OPERATION(operation), against ); }
static InfTextInsertOperation* inf_text_default_insert_operation_transform_position( InfTextInsertOperation* operation, guint position) { InfTextDefaultInsertOperationPrivate* priv; GObject* result; priv = INF_TEXT_DEFAULT_INSERT_OPERATION_PRIVATE(operation); result = g_object_new( INF_TEXT_TYPE_DEFAULT_INSERT_OPERATION, "position", position, "chunk", priv->chunk, NULL ); return INF_TEXT_INSERT_OPERATION(result); }
/** * inf_text_insert_operation_need_concurrency_id: * @op: A #InfTextInsertOperation. * @against: Another #InfAdoptedOperation. * * Returns whether transforming @op against @against requires a concurrency ID * (see inf_adopted_operation_need_concurrency_id() for further information). * * Returns: Whether transforming @op against @against requires a concurrency * ID. */ gboolean inf_text_insert_operation_need_concurrency_id(InfTextInsertOperation* op, InfAdoptedOperation* against) { InfTextInsertOperation* insert_against; g_return_val_if_fail(INF_TEXT_IS_INSERT_OPERATION(op), FALSE); g_return_val_if_fail(INF_ADOPTED_IS_OPERATION(against), FALSE); if(INF_TEXT_IS_INSERT_OPERATION(against)) { insert_against = INF_TEXT_INSERT_OPERATION(against); if(inf_text_insert_operation_get_position(op) == inf_text_insert_operation_get_position(insert_against)) { return TRUE; } } return FALSE; }