# Class IntegerSet.

Inherits Garbage

This class contains a set of integers.

A IntegerSet is just a set of nonnegative integers. It can add new members to the set, find its members by value() or index() (sorted by size, with 1 first), look for the largest contained number, and produce an SQL "where" clause matching its contents.

## IntegerSet::IntegerSet( const IntegerSet & other )

Constructs a set that's an exact copy of *other.* This constructor is a little expensive, both in time and space.

## IntegerSet::IntegerSet()

Constructs an empty set.

Reimplements Garbage::Garbage().

## void IntegerSet::add( const IntegerSet & set )

Adds each value in *set* to this set.

## void IntegerSet::add( uint n1, uint n2 )

Adds all numbers between *n1* and *n2* to the set, including both *n1* and *n2.*

*n1* and *n2* must both be nonzero.

## void IntegerSet::clear()

Removes all numbers from this set.

## bool IntegerSet::contains( const IntegerSet & other ) const

Returns true if this set contains all values in *other,* and false if not.

## bool IntegerSet::contains( uint value ) const

Returns true if *value* is present in this set, and false if not.

## uint IntegerSet::count() const

Returns the number of numbers in this IntegerSet.

## EString IntegerSet::csl() const

Returns the contents of this set as a comma-separated list of decimal numbers.

## uint IntegerSet::index( uint value ) const

Returns the index of *value* index, or 0 if *value* is not in this Set.

If this set contains the UIDs in a mailbox, this function converts from UIDs to MSNs. See Session::msn().

## IntegerSet IntegerSet::intersection( const IntegerSet & other ) const

Returns a set containing all values which are contained in both this IntegerSet and in *other.*

## bool IntegerSet::isEmpty() const

Returns true if the set is empty, and false if not.

## uint IntegerSet::largest() const

Returns the largest number in this IntegerSet, or 0 if the set is empty.

## void IntegerSet::recount() const

This private helper ensures that all blocks have an accurate count of set bits, and that no blocks are empty.

## void IntegerSet::remove( const IntegerSet & other )

Removes all values contained in *other* from this set.

## void IntegerSet::remove( uint value )

Removes *value* from this set. Does nothing unless *value* is present in the set.

## void IntegerSet::remove( uint v1, uint v2 )

Removes *v1,* *v2* and all values between them from this set.

## EString IntegerSet::set() const

Returns the contents of this set in IMAP syntax. The shortest possible representation is returned, with strictly increasing values, without repetitions, with ":" and "," as necessary.

If the set is empty, so is the returned string.

## uint IntegerSet::smallest() const

Returns the smallest UID in this IntegerSet, or 0 if the set is empty.

## uint IntegerSet::value( uint index ) const

Returns the value at *index,* or 0 if *index* is greater than count().

If this set contains the UIDs in a mailbox, this function converts from MSNs to UIDs. See Session::uid().

This web page based on source code belonging to The Archiveopteryx Developers. All rights reserved.