Documentation
¶
Index ¶
- Variables
- type Ctr
- type Event
- type Loop
- type Manager
- func (man *Manager) AddEventAllModes(t etime.Times, event Event)
- func (man *Manager) AddStack(mode etime.Modes) *Stack
- func (man *Manager) ApplyAcrossAllModesAndTimes(fun func(etime.Modes, etime.Times))
- func (man *Manager) DocString() string
- func (man *Manager) GetLoop(modes etime.Modes, times etime.Times) *Loop
- func (man *Manager) Init()
- func (man *Manager) IsRunning() bool
- func (man *Manager) ResetCounters()
- func (man *Manager) ResetCountersByMode(modes etime.Modes)
- func (man *Manager) Run()
- func (man *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 NewManager ¶ added in v1.3.1
func NewManager() *Manager
NewManager returns a new initialized manager
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) Init ¶ added in v1.2.3
func (man *Manager) Init()
Init initializes variables on the Manager.
func (*Manager) ResetCounters ¶ added in v1.2.3
func (man *Manager) ResetCounters()
ResetCounters resets the Cur on all loop Counters, and resets the Man'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