/*!
@header ECKeyToListMap
@abstract Module of Encore
@availability OS X, GNUstep
@copyright 2004, 2005, 2006 Oliver Langer
Author: Oliver Langer
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-------------------------------------------------------------------------
Modification history
29.10.05 ola initial version
22.08.06 ola license changed
-------------------------------------------------------------------------
*/
#if !defined(__ECKeyToListMap_H)
#define __ECKeyToListMap_H
#include
#include
#include
#include
#include
#include
/*!
* @class ECKeyToListMap
* @abstract This class implements mapping key --> list, where a key uniquely
* maps to a list of items. The main purpose of this class is to support
* operations like add(list_key, item), where item has to be added to the
* list selected by the given key.
*/
@interface ECKeyToListMap : ECObject {
@private
NSMutableDictionary *keyToArrayDictionary;
}
- init;
- (void) dealloc;
/* operations belonging to NSCoding: */
- (void) encodeWithCoder: (NSCoder *) aCoder;
- (id) initWithCoder: (NSCoder *) aDecoder;
- (BOOL) isEqual: (id) object;
- (unsigned) hash;
/*!
* @method addListItem
* @abstract adds an item to a list which is identified by "aKey". If the
* list does not exist then it will be created.
* @param aListItem item to add
* @param aKey corresponding key identifying the list
* @throws ECIllegalArgumentException if an item equal to the specified one
* already exists in the specified list.
* @result self
*/
- addListItem: (id) aListItem forKey: (id) aKey;
/*!
* @method allKeys
* @result returns the keys of all lists
*/
- (id ) allKeys;
/*!
* @method existsListItem
* @param aListItem item to look for
* @param aKey key identifying a list
* @return YES if the specified item exists in the specified list
*/
- (BOOL) existsListItem: (id) aListItem forKey: (id) aKey;
/*!
* @method listItemsOfKey
* @param aKey key specifying a list
* @result returns all items of the specified list
*/
- (id ) listItemsOfKey: (id) aKey;
/*!
* @method removeListItem
* @abstract removes the specified item. Does nothing if the item does not
* exist.
* @param aListItem item to remove
* @param aKey specifies the list
* @result self
*/
- removeListItem: (id) aListItem forKey: (id) aKey;
@end
#endif