/*
* Javolution - Java(TM) Solution for Real-Time and Embedded Systems
* Copyright (C) 2012 - Javolution (http://javolution.org/)
* All rights reserved.
*
* Permission to use, copy, modify, and distribute this software is
* freely granted, provided that this notice is preserved.
*/
package javolution.util.internal.table.sorted;
import javolution.util.internal.table.AtomicTableImpl;
import javolution.util.service.SortedTableService;
import javolution.util.service.TableService;
/**
* An atomic view over a sorted table.
*/
public class AtomicSortedTableImpl<E> extends AtomicTableImpl<E> implements
SortedTableService<E> {
private static final long serialVersionUID = 0x600L; // Version.
public AtomicSortedTableImpl(TableService<E> target) {
super(target);
}
@Override
public synchronized boolean addIfAbsent(E element) {
boolean changed = target().addIfAbsent(element);
if (changed && !updateInProgress()) immutable = cloneTarget();
return changed;
}
@Override
public int positionOf(E element) {
return targetView().positionOf(element);
}
@Override
public SortedTableService<E>[] split(int n, boolean updateable) {
return SubSortedTableImpl.splitOf(this, n, false); // Sub-views over this.
}
/** Returns the actual target */
@Override
protected SortedTableService<E> target() {
return (SortedTableService<E>) super.target();
}
@Override
protected SortedTableService<E> targetView() {
return (SortedTableService<E>) super.targetView();
}
}