diff options
Diffstat (limited to 'llparse-frontend/src/container/wrap.ts')
-rw-r--r-- | llparse-frontend/src/container/wrap.ts | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llparse-frontend/src/container/wrap.ts b/llparse-frontend/src/container/wrap.ts new file mode 100644 index 0000000..f3b886c --- /dev/null +++ b/llparse-frontend/src/container/wrap.ts @@ -0,0 +1,15 @@ +import * as assert from 'assert'; + +import { IWrap } from '../wrap'; + +export class ContainerWrap<T> { + protected readonly map: Map<string, IWrap<T>> = new Map(); + + constructor(public readonly ref: T) { + } + + public get<R extends IWrap<T>>(key: string): R { + assert(this.map.has(key), `Unknown implementation key "${key}"`); + return this.map.get(key)! as R; + } +} |