summaryrefslogtreecommitdiffstats
path: root/llparse-frontend/src/container/wrap.ts
diff options
context:
space:
mode:
Diffstat (limited to 'llparse-frontend/src/container/wrap.ts')
-rw-r--r--llparse-frontend/src/container/wrap.ts15
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;
+ }
+}