@glimmer/interfaces
Version:
84 lines (70 loc) • 1.73 kB
TypeScript
import * as WireFormat from './wire-format';
import { SymbolTable } from '../tier1/symbol-table';
import { CompilableTemplate } from '../template';
export const enum HighLevelOperand {
Label = 1,
IsStrictMode = 2,
EvalSymbols = 3,
Block = 4,
StdLib = 5,
NonSmallInt = 6,
SymbolTable = 7,
Layout = 8,
}
export interface LabelOperand {
type: HighLevelOperand.Label;
value: string;
}
export interface IsStrictModeOperand {
type: HighLevelOperand.IsStrictMode;
value: undefined;
}
export interface EvalSymbolsOperand {
type: HighLevelOperand.EvalSymbols;
value: undefined;
}
export interface BlockOperand {
type: HighLevelOperand.Block;
value: WireFormat.SerializedInlineBlock | WireFormat.SerializedBlock;
}
export interface StdLibOperand {
type: HighLevelOperand.StdLib;
value:
| 'main'
| 'trusting-append'
| 'cautious-append'
| 'trusting-non-dynamic-append'
| 'cautious-non-dynamic-append';
}
export interface NonSmallIntOperand {
type: HighLevelOperand.NonSmallInt;
value: number;
}
export interface SymbolTableOperand {
type: HighLevelOperand.SymbolTable;
value: SymbolTable;
}
export interface LayoutOperand {
type: HighLevelOperand.Layout;
value: CompilableTemplate;
}
export type HighLevelBuilderOperand =
| LabelOperand
| IsStrictModeOperand
| EvalSymbolsOperand
| StdLibOperand
| BlockOperand
| NonSmallIntOperand
| SymbolTableOperand
| LayoutOperand;
export type SingleBuilderOperand =
| HighLevelBuilderOperand
| number
| string
| boolean
| undefined
| null
| number[]
| string[];
export type Operand = number;
export type EncoderOperands = [] | [Operand] | [Operand, Operand] | [Operand, Operand, Operand];