importonly abstract class BaseVariantDataSource extends AbstractDataSource
{
	public import function GetItem( index : Uint32 ) : Variant;
	public import function HasItem( data : Variant ) : Bool;
}

importonly class VariantDataSource extends BaseVariantDataSource
{
	public import function AppendItem( data : Variant );
	public import function InsertItemAt( index : Uint32, data : Variant );
	public import function RemoveItem( data : Variant );
	public import function RemoveItemAt( index : Uint32 );
	public import function Clear();
	public import function GetArray() : array< Variant >;
	public import function Reset( variants : array< Variant > );
}

import class VariantDataView extends BaseVariantDataSource
{
	public import function SetSource( source : weak< BaseVariantDataSource > );
	public import function Filter();
	public import function EnableSorting();
	public import function DisableSorting();
	public import function IsSortingEnabled() : Bool;
	public import function Sort();

	public virtual function FilterItem( data : Variant ) : Bool
	{
		return true;
	}

	public virtual function SortItem( left : Variant, right : Variant ) : Bool
	{
		return true;
	}

}

