Documentation ¶
Index ¶
- Variables
- type Ctr
- type Event
- type Loop
- type Manager
- func (loopman *Manager) AddEventAllModes(t etime.Times, event Event)
- func (loopman Manager) AddStack(mode etime.Modes) *Stack
- func (loopman *Manager) ApplyAcrossAllModesAndTimes(fun func(etime.Modes, etime.Times))
- func (loopman Manager) DocString() string
- func (loopman *Manager) GetLoop(modes etime.Modes, times etime.Times) *Loop
- func (loopman Manager) Init() *Manager
- func (stepper Manager) IsRunning() bool
- func (stepper *Manager) ResetCounters()
- func (stepper *Manager) ResetCountersByMode(modes etime.Modes)
- func (stepper *Manager) Run()
- func (stepper *Manager) Step(numSteps int, stopscale etime.Times)
- type NamedFunc
- type NamedFuncs
- type NamedFuncsBool
- type Stack
Constants ¶
This section is empty.
Variables ¶
var ( // If you want to debug the flow of time, set this to true. PrintControlFlow = false // If PrintControlFlow = true, this cuts off printing at timescales that are faster than this -- default is to print all. NoPrintBelow = etime.AllTimes )
Functions ¶
This section is empty.
Types ¶
type Ctr ¶ added in v1.2.3
type Ctr struct { Cur int `desc:"current counter value"` Max int `desc:"maximum counter value -- only used if > 0"` }
Ctr combines an integer with a maximum value. It supports time tracking within looper.
func (*Ctr) Incr ¶ added in v1.2.3
func (ct *Ctr) Incr()
Incr increments the counter by 1. Does not interact with Max.
type Event ¶ added in v1.2.3
type Event struct { Name string `desc:"Might be 'plus' or 'minus' for example."` AtCtr int `desc:"The time that this Event occurs."` OnEvent NamedFuncs `desc:"Callback function for the Event."` }
A Event represents a length of time within a loop, if behavior is expected to change in distinct phases.
type Loop ¶
type Loop struct { Counter Ctr `` /* 167-byte string literal not displayed */ OnStart NamedFuncs `desc:"OnStart is called at the beginning of each loop."` // Either Main or the inner loop occurs between OnStart and OnEnd Main NamedFuncs `` /* 158-byte string literal not displayed */ OnEnd NamedFuncs `desc:"OnStart is called at the end of each loop."` IsDone NamedFuncsBool `desc:"If true, end loop. Maintained as an unordered map because they should not have side effects."` Events []Event `desc:"Events occur when Ctr.Cur gets to their OccurTime."` }
Loop contains one level of a multi-level iteration scheme. It wraps around an inner loop recorded in a Stack, or around Main functions. It records how many times the loop should be repeated in the Counter. It records what happens at the beginning and end of each loop. For example, a loop with 1 start, 1 end, and a Counter with max=3 will do: Start, Inner, End, Start, Inner, End, Start, Inner, End Where the Inner loop is specified by a Stack or by Main, and Start and End are functions on the loop. See Stack for more details on how loops are combined.
type Manager ¶ added in v1.2.3
type Manager struct { Stacks map[etime.Modes]*Stack StopFlag bool `desc:"If true, stop model ASAP."` StopNext bool `desc:"If true, stop model at the end of the current StopLevel."` StopLevel etime.Times `desc:"Time level to stop at the end of."` StepIterations int `desc:"How many steps to do."` Mode etime.Modes `desc:"The current evaluation mode."` // contains filtered or unexported fields }
Manager holds data relating to multiple stacks of loops, as well as the logic for stepping through it. It also holds helper methods for constructing the data. It's also a control object for stepping through Stacks of Loops. It holds data about how the flow is going.
func (*Manager) AddEventAllModes ¶ added in v1.2.3
AddEventAllModes adds a Event to the stack for all modes.
func (*Manager) ApplyAcrossAllModesAndTimes ¶ added in v1.2.3
ApplyAcrossAllModesAndTimes applies a function across all evaluation modes and timescales within the Manager. The function might call GetLoop(curMode, curTime) and modify it.
func (Manager) DocString ¶ added in v1.2.3
DocString returns an indented summary of the loops and functions in the stack.
func (*Manager) GetLoop ¶ added in v1.2.3
GetLoop returns the Loop associated with an evaluation mode and timescale.
func (*Manager) ResetCounters ¶ added in v1.2.3
func (stepper *Manager) ResetCounters()
ResetCounters resets the Cur on all loop Counters, and resets the Stepper's place in the loops.
func (*Manager) ResetCountersByMode ¶ added in v1.2.3
ResetCountersByMode is like ResetCounters, but only for one mode.
type NamedFunc ¶
type NamedFunc struct { Name string Func func() }
NamedFunc lets you keep an ordered map of functions.
type NamedFuncs ¶ added in v1.2.3
type NamedFuncs []NamedFunc
NamedFunc is an ordered map of functions.
func (*NamedFuncs) Add ¶ added in v1.2.3
func (funcs *NamedFuncs) Add(name string, fun func()) *NamedFuncs
Add adds a named function to a list.
func (NamedFuncs) HasNameLike ¶ added in v1.2.3
func (funcs NamedFuncs) HasNameLike(nameSubstring string) bool
HasNameLike is a helper function to check if there's an existing function that contains a substring. This could be helpful to ensure that you don't add duplicate logic to a list of functions. If you plan on using this, add a comment documenting which name is important, because the default assumption is that names are just documentation.
func (NamedFuncs) String ¶ added in v1.2.3
func (funcs NamedFuncs) String() string
String describes named functions.
type NamedFuncsBool ¶ added in v1.2.3
NamedFuncsBool is like NamedFuncs, but for functions that return a bool.
func (*NamedFuncsBool) Add ¶ added in v1.2.3
func (funcs *NamedFuncsBool) Add(name string, f func() bool)
Add adds a function by name.
type Stack ¶
type Stack struct { Loops map[etime.Times]*Loop `desc:"An ordered map of Loops, from the outer loop at the start to the inner loop at the end."` Order []etime.Times `` /* 183-byte string literal not displayed */ }
Stack contains a list of Loops Ordered from top to bottom. For example, a Stack might be created like this:
myStack.Init().AddTime(etime.Run, 2).AddTime(etime.Trial, 3) myStack.Loops[etime.Run].OnStart.Add("NewRun", initRunFunc) myStack.Loops[etime.Trial].OnStart.Add("PresentTrial", trialFunc)
When run, myStack will behave like this: initRunFunc, trialFunc, trialFunc, trialFunc, initRunFunc, trialFunc, trialFunc, trialFunc