enso/app/gui2/parser-codegen/schema.ts

36 lines
971 B
TypeScript
Raw Normal View History

export type Schema = {
types: Types
serialization: Serialization
}
export type TypeId = string
export type Types = {
[id: TypeId]: Type
}
export type Type = {
name: string
fields: Fields
parent?: string
}
export type Fields = {
[name: string]: TypeRef
}
export type TypeRef = Class | Primitive | Sequence | Option | Result
export type Class = { class: 'type'; id: TypeId }
export type Primitive = { class: 'primitive'; type: PrimitiveType }
export type Sequence = { class: 'sequence'; type: TypeRef }
export type Option = { class: 'option'; type: TypeRef }
export type Result = { class: 'result'; type0: TypeRef; type1: TypeRef }
export type PrimitiveType = 'bool' | 'u32' | 'u64' | 'i32' | 'i64' | 'char' | 'string'
export type Serialization = {
[id: TypeId]: Layout
}
export type Layout = {
discriminants?: DiscriminantMap
fields: [name: string, offset: number][]
size: number
}
export type DiscriminantMap = {
[discriminant: number]: TypeId
}