Issie logo Issie

ModelType Module

Types and nested modules

Type/Module Description

Constants

CheckBoxStyle

What one openable row of the wave selector stands for, which is both how it is styled and the key under which the model remembers whether it is open. A row is a group of components within one sheet instance, or the sheet instance itself. There were also cases for a single component and a single port, from when the list was nested a level deeper than it is; nothing has built one since, so the rows that would have used them are gone and only their styling and their summary text remained.

CircuitCheck

Whether the open design currently builds into a simulation, which is all the Simulation tab needs in order to decide whether its button reads "Start Simulation" or "See Problems", and whether to offer the waveform simulator. It is here, in the model, because answering it means flattening the whole hierarchy: the tab used to ask on every render, so a large design was flattened again for every frame it was visible. Now it is answered once per edit, on a delay, and the last answer stands while a new one is worked out - a button that is briefly a moment out of date, in exchange for an editor that does not stop. The verdict is reached by validateCircuitSimulation, which builds the graph and no FastSimulation, so answering it allocates no step arrays.

CodeEditorModel

Elmish Model type for a rich text code editor

ComponentGroup

Groups components together in the wave selection table. NB: There are fields which are commented out: these can be added back in later on if we want to group those components together by type rather than separately by name.

DataViewport

Everything that could change what DATA the view needs from the .NET simulation, as ONE value derived by one pure function of the model (WaveSimTop.dataViewportOf). This record's field list IS the enumeration that has to be kept right, in one reviewable place: the fetch decision is an equality - current viewport <> the viewport the last COMPLETED fetch was for => fetch the whole current one - and no cache is ever consulted to decide. See docs/dev/sidecarInvariants.md.

DiagEl

DragAddition

How the components of an in-progress drag came to exist, if they were added at all. DragAndDrop is also entered when moving EXISTING components that end up overlapping, and by undo snapshots, so the drag settling back to idle does not by itself mean "components added". A paste is distinguished from a catalogue placement because its components must inherit the parameter slots of the ones they were copied from.

DragGhost

What a catalogue drag draws following the cursor.

DragMode

DragPlacement

A catalogue component being dragged onto the canvas, before it exists. Nothing is created until the drop, and where the catalogue item asks for parameters, not until that popup is accepted: what follows the cursor is drawn from a symbol that is never added to any model. That is what makes the gesture free to abandon - a drag ending anywhere but the canvas leaves nothing behind - and it keeps the popup in front of the component exactly as it is for a click.

DriverT

Identifies which Component and Port drives a waveform. Must be an Output port (Input ports cannot drive waveforms).

EditorMsg

Possible messages used by editor

FetchSnapshot

What one fetch was for - recorded on its completion as what WAS fetched, never what is current by then. Each part is Some only when that viewport differed when the fetch was issued.

FileCommandType

Gap

A gap in a waveform. Stores information about gaps between NonBinaryTransitions. Used in displayValuesOnWave, and also to store hatched information.

GapStore

ImportDecision

IntMode

Interval

A text position interval in the code editor. This is used to represent the start and end of a selection or an error. All characters in raster scan order are considered part of the interval.

MemoryEditorData

MenuCommand

Model

Msg

Notifications

Pane

Which half of the window the keyboard is pointing at.

PinnedCanvas

The draw block state a read-only sheet is held at, captured once the sheet has finished loading and written back over the live model after every message - see ModelHelpers.pinDrawBlock. Exactly the state a sheet is SAVED from, and nothing else. SymbolUpdate.extractComponent is the sole path from symbols to saved state, and it ignores Symbol.Appearance, so colour, opacity, port visibility and corner handles are all absent here and stay free to change: selection and hover go on working on a read-only sheet at no cost. The bounding boxes are here only because they are derived from the symbols, and would otherwise follow symbols that did not move. The two clipboards are here for a different reason: pinning them is what stops anything being copied OUT of a library sheet, since a copy writes the clipboard and nothing else. Whatever the user had copied before they looked inside survives, which is what they would expect.

PopupDialogData

Possible fields that may (or may not) be used in a dialog popup.

PopupProgress

ProjectBrowserState

The project browser's state while it is open. Its own field rather than borrowed dialog text: the refresh timer has to be able to ask whether the browser is still open, and a timer that answered from shared popup state would go on writing into whatever dialog opened next.

RightTab

RunData

ScrollbarMouseAction

Describe WaveSim's scrollbar's mouse actions' type of operation.

SeqNum

Information required to display a waveform. One waveform the viewer knows about: which signal it is, what it is called and where its data lies. What it LOOKS like is not here - see WaveDrawn, which memoises that as a function of this and the view. It used to be: every Wave carried its SVG and the five view settings that SVG had been made under, so the model held a picture of the screen that had to be kept in step with the screen, and "is this waveform up to date" was a question about the model rather than about what is drawn. What the .NET simulator is doing, as far as the renderer knows - and therefore what a synchronous question about it can be answered with. **This is the "is building" state that keeps everything else synchronous.** Building a design and running it are the only things a simulator does that take long enough not to be answerable while a frame is drawn, and both are commands the renderer issues. So they are modelled the Elmish way - a message that starts one, a message that says it finished, and this in the model in between - and every other question about the simulator is answered at once, with "nothing yet" exactly while this says a build is in flight. See the module note on SimInterface. It was module-level state in SidecarSession, on the argument that what another process holds is not model state. It is: what the renderer BELIEVES about that process is a fact about the renderer, the UI has to draw it, and a belief the view can only reach through a side channel is one the view cannot draw from. Identifies one asynchronous operation asked of the .NET simulator: sent with the request, returned with the answer, and the key under which the model remembers what the operation was. **Its own numbering, not the wire's correlation id.** `SidecarClient` gives every REQUEST a correlation id and the sidecar echoes it, which is how a promise finds its reply. An operation is not a request: a build is `sendDesign` - itself one frame per sheet - followed by `SimBuild`, and a fetch is a run followed by a read. One id per request cannot name a thing made of several, so this numbers the operations and `SidecarClient` goes on numbering the frames. Unique among the operations OUTSTANDING, not for all time. An entry leaves the table when its answer arrives and there are never many, so a uint32 wrapping cannot collide with anything still in it.

SidecarAnswer

What an operation answered. One case per operation, so that an answer cannot be handled as though it were the answer to something else.

SidecarOp

One asynchronous operation asked of the .NET simulator and not yet answered. It carries its own parameters, which is what lets one reply message serve every operation: the answer names the operation, the table says what that operation was, and the update function works out what to do from the two together. Without them there would be a message type per feature, each carrying the context its own handler happened to need.

SidecarSessionState

The session the sidecar holds, which is what an operation commands. Not an operation in flight and so not in the table above: a build that has finished leaves a session behind, and it is the session that the next run or read names. Whether a build is RUNNING is read off the table (`ModelHelpers.sidecarIsBuilding`), so there is one place that says so rather than a state here that could disagree with it.

SimSubTab

SimulationProgress

SpinPayload

StructureViewport

Which instances' port SLICES the selector and wave reconciliation need - the structure viewport beside the data one, separate because its lifetime is the build's: it only ever grows under one epoch, where the data viewport moves with every scroll.

TTMsg

TTType

TopMenu

Which dropdown on the renderer's own menu bar is open. Edit and View hold what used to be on the Electron menus of the same names.

UICommandType

UserData

Wave

WaveSimModel

Contains all information required by waveform simulator. One WaveSimModel per sheet.

WaveSimState

Determines whether the user is able to see the wave viewer pane. Changes value depending on the state of the circuit and whether the wave simulator has been run.

Functions and values

Function or value Description

algebraError_

Full Usage: algebraError_

Returns: Lens<PopupDialogData, SimulationError option>
Returns: Lens<PopupDialogData, SimulationError option>

algebraInputs_

Full Usage: algebraInputs_

Returns: Lens<PopupDialogData, SimulationIO list option>
Returns: Lens<PopupDialogData, SimulationIO list option>

algebraIns_

Full Usage: algebraIns_

Returns: Lens<TTType, SimulationIO list>
Returns: Lens<TTType, SimulationIO list>

badLabel_

Full Usage: badLabel_

Returns: Lens<PopupDialogData, bool>
Returns: Lens<PopupDialogData, bool>

buildVisible_

Full Usage: buildVisible_

Returns: Lens<Model, bool>
Returns: Lens<Model, bool>

catalogueSearch_

Full Usage: catalogueSearch_

Returns: Lens<Model, string>
Returns: Lens<Model, string>

checkPending_

Full Usage: checkPending_

Returns: Lens<CircuitCheck, bool>
Returns: Lens<CircuitCheck, bool>

circuitCheck_

Full Usage: circuitCheck_

Returns: Lens<Model, CircuitCheck>
Returns: Lens<Model, CircuitCheck>

codeEditorState_

Full Usage: codeEditorState_

Returns: Lens<Model, CodeEditorModel option>
Returns: Lens<Model, CodeEditorModel option>

constraintErrorMsg_

Full Usage: constraintErrorMsg_

Returns: Lens<PopupDialogData, string option>
Returns: Lens<PopupDialogData, string option>

constraintIOSel_

Full Usage: constraintIOSel_

Returns: Lens<PopupDialogData, CellIO option>
Returns: Lens<PopupDialogData, CellIO option>

constraintTypeSel_

Full Usage: constraintTypeSel_

Returns: Lens<PopupDialogData, ConstraintType option>
Returns: Lens<PopupDialogData, ConstraintType option>

currentProj_

Full Usage: currentProj_

Returns: Lens<Model, Project option>
Returns: Lens<Model, Project option>

currentStepSimulationStep_

Full Usage: currentStepSimulationStep_

Returns: Lens<Model, Result<SimulationData, SimulationError> option>
Returns: Lens<Model, Result<SimulationData, SimulationError> option>

currentTruthTable_

Full Usage: currentTruthTable_

Returns: Lens<Model, Result<TruthTable, SimulationError> option>
Returns: Lens<Model, Result<TruthTable, SimulationError> option>

currentViewport_

Full Usage: currentViewport_

Returns: Lens<Model, DataViewport option>
Returns: Lens<Model, DataViewport option>

cursorPos_

Full Usage: cursorPos_

Returns: Lens<CodeEditorModel, XYPos>
Returns: Lens<CodeEditorModel, XYPos>

defaultCursor_

Full Usage: defaultCursor_

Returns: Lens<WaveSimModel, CursorType>
Returns: Lens<WaveSimModel, CursorType>

dragPlacement_

Full Usage: dragPlacement_

Returns: Lens<Model, DragPlacement option>
Returns: Lens<Model, DragPlacement option>

draggedColumn_

Full Usage: draggedColumn_

Returns: Lens<TTType, CellIO option>
Returns: Lens<TTType, CellIO option>

errors_

Full Usage: errors_

Returns: Lens<CodeEditorModel, Interval list>
Returns: Lens<CodeEditorModel, Interval list>

failedFetch_

Full Usage: failedFetch_

Returns: Lens<Model, FetchSnapshot option>
Returns: Lens<Model, FetchSnapshot option>

fetchedData_

Full Usage: fetchedData_

Returns: Lens<Model, DataViewport option>
Returns: Lens<Model, DataViewport option>

fetchedStructure_

Full Usage: fetchedStructure_

Returns: Lens<Model, StructureViewport option>
Returns: Lens<Model, StructureViewport option>

firstClock_

Full Usage: firstClock_

Returns: Lens<WSConfig, int>
Returns: Lens<WSConfig, int>

fontSize_

Full Usage: fontSize_

Returns: Lens<WSConfig, int>
Returns: Lens<WSConfig, int>

fontWeight_

Full Usage: fontWeight_

Returns: Lens<WSConfig, int>
Returns: Lens<WSConfig, int>

fromDiagram_

Full Usage: fromDiagram_

Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>
Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>

fromFiles_

Full Usage: fromFiles_

Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>
Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>

fromMemoryEditor_

Full Usage: fromMemoryEditor_

Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>
Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>

fromProperties_

Full Usage: fromProperties_

Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>
Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>

fromSimulation_

Full Usage: fromSimulation_

Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>
Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>

fromWaveSim_

Full Usage: fromWaveSim_

Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>
Returns: Lens<Notifications, ((Msg -> unit) -> ReactElement) option>

gridCache_

Full Usage: gridCache_

Returns: Lens<TTType, ReactElement option>
Returns: Lens<TTType, ReactElement option>

gridStyles_

Full Usage: gridStyles_

Returns: Lens<TTType, Map<CellIO, CSSProp list>>
Returns: Lens<TTType, Map<CellIO, CSSProp list>>

hiddenColumns_

Full Usage: hiddenColumns_

Returns: Lens<TTType, CellIO list>
Returns: Lens<TTType, CellIO list>

hoveredColumn_

Full Usage: hoveredColumn_

Returns: Lens<TTType, CellIO option>
Returns: Lens<TTType, CellIO option>

importDecisions_

Full Usage: importDecisions_

Returns: Lens<PopupDialogData, Map<string, ImportDecision option>>
Returns: Lens<PopupDialogData, Map<string, ImportDecision option>>

inputConstraints_

Full Usage: inputConstraints_

Returns: Lens<TTType, ConstraintSet>
Returns: Lens<TTType, ConstraintSet>

int2_

Full Usage: int2_

Returns: Lens<PopupDialogData, bigint option>
Returns: Lens<PopupDialogData, bigint option>

int3_

Full Usage: int3_

Returns: Lens<PopupDialogData, bigint option>
Returns: Lens<PopupDialogData, bigint option>

int_

Full Usage: int_

Returns: Lens<PopupDialogData, int option>
Returns: Lens<PopupDialogData, int option>

intlist2_

Full Usage: intlist2_

Returns: Lens<PopupDialogData, int list option>
Returns: Lens<PopupDialogData, int list option>

intlist_

Full Usage: intlist_

Returns: Lens<PopupDialogData, int list option>
Returns: Lens<PopupDialogData, int list option>

ioOrder_

Full Usage: ioOrder_

Returns: Lens<TTType, CellIO[]>
Returns: Lens<TTType, CellIO[]>

lastClock_

Full Usage: lastClock_

Returns: Lens<WSConfig, int>
Returns: Lens<WSConfig, int>

ldcM

Full Usage: ldcM

Returns: Lens<Model, LoadedComponent list>
Returns: Lens<Model, LoadedComponent list>

ldcOptM

Full Usage: ldcOptM

Returns: Prism<Model, LoadedComponent list>
Returns: Prism<Model, LoadedComponent list>

lines_

Full Usage: lines_

Returns: Lens<CodeEditorModel, string list>
Returns: Lens<CodeEditorModel, string list>

memoryEditorData_

Full Usage: memoryEditorData_

Returns: Lens<PopupDialogData, MemoryEditorData option>
Returns: Lens<PopupDialogData, MemoryEditorData option>

memorySetup_

Full Usage: memorySetup_

Returns: Lens<PopupDialogData, (int * int * InitMemData * string option) option>
Returns: Lens<PopupDialogData, (int * int * InitMemData * string option) option>

nameM

Full Usage: nameM

Returns: Lens<Model, string>
Returns: Lens<Model, string>

nameOptM

Full Usage: nameOptM

Returns: Prism<Model, string>
Returns: Prism<Model, string>

newConstraint_

Full Usage: newConstraint_

Returns: Lens<PopupDialogData, Constraint option>
Returns: Lens<PopupDialogData, Constraint option>

notifications_

Full Usage: notifications_

Returns: Lens<Model, Notifications>
Returns: Lens<Model, Notifications>

openLibrary_

Full Usage: openLibrary_

Returns: Lens<Model, OpenedLibrary option>
Returns: Lens<Model, OpenedLibrary option>

openLoadedComponentOfModel_

Full Usage: openLoadedComponentOfModel_

Returns: Prism<Model, LoadedComponent>
Returns: Prism<Model, LoadedComponent>

openedLibrarySheets_

Full Usage: openedLibrarySheets_

Returns: Lens<Model, Set<string>>
Returns: Lens<Model, Set<string>>

outputConstraints_

Full Usage: outputConstraints_

Returns: Lens<TTType, ConstraintSet>
Returns: Lens<TTType, ConstraintSet>

paramCompSpec_

Full Usage: paramCompSpec_

Returns: Lens<PopupDialogData, ParamBoxDialogState option>
Returns: Lens<PopupDialogData, ParamBoxDialogState option>

pendingDragAddition_

Full Usage: pendingDragAddition_

Returns: Lens<Model, DragAddition option>
Returns: Lens<Model, DragAddition option>

popupDialogData_

Full Usage: popupDialogData_

Returns: Lens<Model, PopupDialogData>
Returns: Lens<Model, PopupDialogData>

popupViewFunc_

Full Usage: popupViewFunc_

Returns: Lens<Model, ((Msg -> Unit) -> Model -> ReactElement) option>
Returns: Lens<Model, ((Msg -> Unit) -> Model -> ReactElement) option>

prevIOOrder_

Full Usage: prevIOOrder_

Returns: Lens<TTType, CellIO[] option>
Returns: Lens<TTType, CellIO[] option>

probeRead_

Full Usage: probeRead_

Returns: Lens<Model, (WaveIndexT * int * bigint) option>
Returns: Lens<Model, (WaveIndexT * int * bigint) option>

progress_

Full Usage: progress_

Returns: Lens<PopupDialogData, PopupProgress option>
Returns: Lens<PopupDialogData, PopupProgress option>

projectBrowser_

Full Usage: projectBrowser_

Returns: Lens<Model, ProjectBrowserState option>
Returns: Lens<Model, ProjectBrowserState option>

projectOpt_

Full Usage: projectOpt_

Returns: Prism<Model, Project>
Returns: Prism<Model, Project>

projectPath_

Full Usage: projectPath_

Returns: Lens<PopupDialogData, string>
Returns: Lens<PopupDialogData, string>

project_

Full Usage: project_

Returns: Lens<Model, Project>
Returns: Lens<Model, Project>

putWaveSim wsm model

Full Usage: putWaveSim wsm model

Parameters:
Returns: Model

Update the WaveSimModel of the current waveSim sheet.

wsm : WaveSimModel
model : Model
Returns: Model

ramRows_

Full Usage: ramRows_

Returns: Lens<WaveSimModel, Map<FComponentId, (RamKey * RamView)>>
Returns: Lens<WaveSimModel, Map<FComponentId, (RamKey * RamView)>>

ramStartLocation_

Full Usage: ramStartLocation_

Returns: Lens<WaveSimModel, Map<FComponentId, (string * bigint)>>
Returns: Lens<WaveSimModel, Map<FComponentId, (string * bigint)>>

readOnlyBaseline_

Full Usage: readOnlyBaseline_

Returns: Lens<Model, PinnedCanvas option>
Returns: Lens<Model, PinnedCanvas option>

rightPaneTabVisible_

Full Usage: rightPaneTabVisible_

Returns: Lens<Model, RightTab>
Returns: Lens<Model, RightTab>

runAfterRender_

Full Usage: runAfterRender_

Returns: Lens<Model, RunData option>
Returns: Lens<Model, RunData option>

savedSheetIsOutOfDate_

Full Usage: savedSheetIsOutOfDate_

Returns: Lens<Model, bool>
Returns: Lens<Model, bool>

selectedComponent_

Full Usage: selectedComponent_

Returns: Lens<Model, Component option>
Returns: Lens<Model, Component option>

sheetMenuPinned_

Full Usage: sheetMenuPinned_

Returns: Lens<Model, bool>
Returns: Lens<Model, bool>

sheetSearchString_

Full Usage: sheetSearchString_

Returns: Lens<WaveSimModel, string>
Returns: Lens<WaveSimModel, string>

sheet_

Full Usage: sheet_

Returns: Lens<Model, Model>
Returns: Lens<Model, Model>

showLibrarySheets_

Full Usage: showLibrarySheets_

Returns: Lens<Model, bool>
Returns: Lens<Model, bool>

showOnlySelected_

Full Usage: showOnlySelected_

Returns: Lens<WaveSimModel, bool>
Returns: Lens<WaveSimModel, bool>

sidecarBuildEndedMs_

Full Usage: sidecarBuildEndedMs_

Returns: Lens<Model, float>
Returns: Lens<Model, float>

sidecarInFlight_

Full Usage: sidecarInFlight_

Returns: Lens<Model, Map<SeqNum, SidecarOp>>
Returns: Lens<Model, Map<SeqNum, SidecarOp>>

sidecarRunEndedMs_

Full Usage: sidecarRunEndedMs_

Returns: Lens<Model, float>
Returns: Lens<Model, float>

sidecarSession_

Full Usage: sidecarSession_

Returns: Lens<Model, SidecarSessionState>
Returns: Lens<Model, SidecarSessionState>

simSubTabVisible_

Full Usage: simSubTabVisible_

Returns: Lens<Model, SimSubTab>
Returns: Lens<Model, SimSubTab>

simulateInRenderer_

Full Usage: simulateInRenderer_

Returns: Lens<Model, bool>
Returns: Lens<Model, bool>

sortType_

Full Usage: sortType_

Returns: Lens<TTType, (CellIO * SortType) option>
Returns: Lens<TTType, (CellIO * SortType) option>

stepRunTarget_

Full Usage: stepRunTarget_

Returns: Lens<Model, SimulationProgress option>
Returns: Lens<Model, SimulationProgress option>

stimulusGeneration_

Full Usage: stimulusGeneration_

Returns: Lens<Model, int>
Returns: Lens<Model, int>

suppressErrorPopups_

Full Usage: suppressErrorPopups_

Returns: Lens<Model, bool>
Returns: Lens<Model, bool>

tTType_

Full Usage: tTType_

Returns: Lens<Model, TTType>
Returns: Lens<Model, TTType>

text2_

Full Usage: text2_

Returns: Lens<PopupDialogData, string option>
Returns: Lens<PopupDialogData, string option>

text_

Full Usage: text_

Returns: Lens<PopupDialogData, string option>
Returns: Lens<PopupDialogData, string option>

topSheetChoiceDeclined_

Full Usage: topSheetChoiceDeclined_

Returns: Lens<Model, Set<string>>
Returns: Lens<Model, Set<string>>

uISheetTrail_

Full Usage: uISheetTrail_

Returns: Lens<Model, string list>
Returns: Lens<Model, string list>

userData_

Full Usage: userData_

Returns: Lens<Model, UserData>
Returns: Lens<Model, UserData>

verdict_

Full Usage: verdict_

Returns: Lens<CircuitCheck, (Result<bool, SimulationError> * LoadedComponent list) option>
Returns: Lens<CircuitCheck, (Result<bool, SimulationError> * LoadedComponent list) option>

verilogCode_

Full Usage: verilogCode_

Returns: Lens<PopupDialogData, string option>
Returns: Lens<PopupDialogData, string option>

verilogErrors_

Full Usage: verilogErrors_

Returns: Lens<PopupDialogData, ErrorInfo list>
Returns: Lens<PopupDialogData, ErrorInfo list>

viewportChangedAtMs_

Full Usage: viewportChangedAtMs_

Returns: Lens<Model, float>
Returns: Lens<Model, float>

wSConfigDialog_

Full Usage: wSConfigDialog_

Returns: Lens<WaveSimModel, WSConfig option>
Returns: Lens<WaveSimModel, WSConfig option>

wSConfig_

Full Usage: wSConfig_

Returns: Lens<WaveSimModel, WSConfig>
Returns: Lens<WaveSimModel, WSConfig>

waveScrollSerial_

Full Usage: waveScrollSerial_

Returns: Lens<Model, int>
Returns: Lens<Model, int>

waveScrollSettling_

Full Usage: waveScrollSettling_

Returns: Lens<Model, bool>
Returns: Lens<Model, bool>

waveSimSheet_

Full Usage: waveSimSheet_

Returns: Lens<Model, string option>
Returns: Lens<Model, string option>

waveSim_

Full Usage: waveSim_

Returns: Lens<Model, Map<string, WaveSimModel>>
Returns: Lens<Model, Map<string, WaveSimModel>>

windowWidth_

Full Usage: windowWidth_

Returns: Lens<Model, float>
Returns: Lens<Model, float>

Type something to start searching.