Exemple #1
0
void YSelection::delInterval( const YInterval& i )
{
    bool containsFrom;
    bool containsTo;
    unsigned int idFrom = locatePosition( i.from(), &containsFrom );
    unsigned int idTo = locatePosition( i.to(), &containsTo );
    if ( idFrom == idTo && !containsFrom && !containsTo ) return ;
    // dbg() << "delInterval: from=" << idFrom << "," << containsFrom << "; to=" << idTo << "," << containsTo << endl;

    if ( containsFrom && i.from() <= mMap[ idFrom ].from() ) {
        containsFrom = false;
    }
    if ( containsTo && i.to() >= mMap[ idTo ].to() ) {
        ++idTo;
        containsTo = false;
    }
    if ( containsTo && containsFrom && idFrom == idTo ) {
        ++idTo;
        insertInterval( idTo, mMap[ idFrom ] );
    }

    if ( containsFrom )
        mMap[ idFrom ].setTo( YBound(i.from().pos(), !i.from().opened()) );
    if ( containsTo )
        mMap[ idTo ].setFrom( YBound(i.to().pos(), !i.to().opened()) );
    removeInterval( idFrom + (containsFrom ? 1 : 0), idTo - idFrom - (containsFrom && containsTo ? 1 : 0) );
}
Exemple #2
0
void YSelection::addInterval( const YInterval& i )
{
    bool containsFrom;
    bool containsTo;
    unsigned int idFrom = locatePosition( i.from(), &containsFrom );
    unsigned int idTo = locatePosition( i.to(), &containsTo );
    if ( containsFrom && containsTo ) {
        if ( idFrom != idTo ) {
            mMap[ idFrom ].setTo( mMap[ idTo ].to() );
            removeInterval( idFrom + 1, idTo - idFrom );
        }
    } else if ( containsFrom ) {
        mMap[ idFrom ].setTo( i.to() );
        removeInterval( idFrom + 1, idTo - idFrom - 1 );
    } else if ( containsTo ) {
        mMap[ idTo ].setFrom( i.from() );
        removeInterval( idFrom, idTo - idFrom );
    } else if ( idTo != idFrom ) {
        mMap[ idFrom ].setFrom( i.from() );
        mMap[ idFrom ].setTo( i.to() );
        removeInterval( idFrom + 1, idTo - idFrom );
    } else {
        insertInterval( idFrom, i );
    }
}
void SortedList::sortedInsert(const ListItemType& newItem)
   throw(ListException)
{
   bool found;
   int newPosition = locatePosition(newItem, found);
   insert(newPosition, newItem);
}  // end sortedInsert
void SortedList::sortedRemove(const ListItemType& anItem)
   throw(ListException)
{
   bool found;
   int position = locatePosition(anItem, found);
   if (found) // item actually found
      remove(position);
   else
      throw ListException(
         "ListException: Item to remove not found");
}  // end sortedRemove
Exemple #5
0
bool YSelection::contains( const YCursor pos ) const
{
    bool ret = false;
    locatePosition( YBound(pos), &ret );
    return ret;
}