ember-material-icons
Version:
Google Material icons for your ember-cli app
64 lines (63 loc) • 1.97 kB
TypeScript
import { Option } from './platform-utils';
export interface Destroyable {
destroy(): void;
}
export interface LinkedListNode {
next: Option<LinkedListNode>;
prev: Option<LinkedListNode>;
}
export declare class ListNode<T> implements LinkedListNode {
next: Option<ListNode<T>>;
prev: Option<ListNode<T>>;
value: T;
constructor(value: T);
}
export declare class LinkedList<T extends LinkedListNode> implements Slice<T> {
static fromSlice<U extends CloneableListNode>(slice: Slice<U>): LinkedList<U>;
private _head;
private _tail;
constructor();
head(): Option<T>;
tail(): Option<T>;
clear(): void;
isEmpty(): boolean;
toArray(): T[];
splice(start: T, end: T, reference: T): void;
nextNode(node: T): T;
prevNode(node: T): T;
forEachNode(callback: (node: T) => void): void;
contains(needle: T): boolean;
insertBefore(node: T, reference?: Option<T>): T;
append(node: T): T;
pop(): Option<T>;
prepend(node: T): T;
remove(node: T): T;
}
export interface Slice<T extends LinkedListNode> {
head(): Option<T>;
tail(): Option<T>;
nextNode(node: T): Option<T>;
prevNode(node: T): Option<T>;
forEachNode(callback: (node: T) => void): void;
toArray(): T[];
isEmpty(): boolean;
contains(needle: T): boolean;
}
export interface CloneableListNode extends LinkedListNode {
clone(): this;
}
export declare class ListSlice<T extends LinkedListNode> implements Slice<T> {
static toList<U extends CloneableListNode>(slice: Slice<U>): LinkedList<U>;
private _head;
private _tail;
constructor(head: Option<T>, tail: Option<T>);
forEachNode(callback: (node: T) => void): void;
contains(needle: T): boolean;
head(): Option<T>;
tail(): Option<T>;
toArray(): T[];
nextNode(node: T): Option<T>;
prevNode(node: T): Option<T>;
isEmpty(): boolean;
}
export declare const EMPTY_SLICE: ListSlice<LinkedListNode>;