58 lines
2.3 KiB
TypeScript
58 lines
2.3 KiB
TypeScript
/**
|
|
* @packageDocumentation
|
|
* @module std.base
|
|
*/
|
|
import { MapContainer } from "./MapContainer";
|
|
import { IHashContainer } from "../../internal/container/associative/IHashContainer";
|
|
import { IPair } from "../../utility/IPair";
|
|
import { Entry } from "../../utility/Entry";
|
|
import { MapElementList } from "../../internal/container/associative/MapElementList";
|
|
/**
|
|
* Common interface for hash maps.
|
|
*
|
|
* @template Key Key type
|
|
* @template T Mapped type
|
|
* @template Unique Whether duplicated key is blocked or not
|
|
* @template Source Derived type extending this {@link IHashMap}
|
|
*
|
|
* @author Jeongho Nam - https://github.com/samchon
|
|
*/
|
|
export interface IHashMap<Key, T, Unique extends boolean, Source extends IHashMap<Key, T, Unique, Source>> extends MapContainer<Key, T, Unique, Source, IHashMap.Iterator<Key, T, Unique, Source>, IHashMap.ReverseIterator<Key, T, Unique, Source>>, IHashContainer<Key, Entry<Key, T>, Source, IHashMap.Iterator<Key, T, Unique, Source>, IHashMap.ReverseIterator<Key, T, Unique, Source>, IPair<Key, T>> {
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
begin(): IHashMap.Iterator<Key, T, Unique, Source>;
|
|
/**
|
|
* Iterator to the first element in a specific bucket.
|
|
*
|
|
* @param index Index number of the specific bucket.
|
|
* @return Iterator from the specific bucket.
|
|
*/
|
|
begin(index: number): IHashMap.Iterator<Key, T, Unique, Source>;
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
end(): IHashMap.Iterator<Key, T, Unique, Source>;
|
|
/**
|
|
* Iterator to the end in a specific bucket.
|
|
*
|
|
* @param index Index number of the specific bucket.
|
|
* @return Iterator from the specific bucket.
|
|
*/
|
|
end(index: number): IHashMap.Iterator<Key, T, Unique, Source>;
|
|
}
|
|
export declare namespace IHashMap {
|
|
/**
|
|
* Iterator of {@link IHashMap}
|
|
*
|
|
* @author Jenogho Nam <http://samchon.org>
|
|
*/
|
|
type Iterator<Key, T, Unique extends boolean, Source extends IHashMap<Key, T, Unique, Source>> = MapElementList.Iterator<Key, T, Unique, Source>;
|
|
/**
|
|
* Reverse iterator of {@link IHashMap}
|
|
*
|
|
* @author Jenogho Nam <http://samchon.org>
|
|
*/
|
|
type ReverseIterator<Key, T, Unique extends boolean, Source extends IHashMap<Key, T, Unique, Source>> = MapElementList.ReverseIterator<Key, T, Unique, Source>;
|
|
}
|