Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // sandbox.swift
- // NewStar
- //
- // Created by schala1 on 2/25/15.
- // Copyright (c) 2015 StartStop. All rights reserved.
- //
- import Foundation
- import Darwin
- class test
- {
- var val = 0
- init()
- {
- }
- func incVal(var v: Int = 1)
- {
- self.val += v
- }
- func devVal(var v: Int = 1)
- {
- self.val -= v
- }
- func getVal() -> Int
- {
- return self.val
- }
- }
- class readyState : GState
- {
- var n : Int = 0;
- override init()
- {
- println("Entering ")
- }
- override func entryCb<T>(fsmCtx: GenericFSM<T>, dt: CFTimeInterval)
- {
- println("readyState::entryCb")
- }
- override func updateCb<T>(fsmCtx: GenericFSM<T>, dt: CFTimeInterval)
- {
- while(fsmCtx.nEvents() > 0)
- {
- var event = fsmCtx.popEvent()
- if(event.getEventBaseType() != EventType.Empty)
- {
- if(event.getEventBaseType() == EventType.Time)
- {
- self.n += 1
- println("readyState::updateCb = \(n)");
- if(self.n % 5 == 0)
- {
- fsmCtx.setState("printState")
- }
- }
- }
- // TODO not sure but finish this
- }
- if(self.age > 5.0)
- {
- fsmCtx.addEvent(SSTimeDeltaReached())
- }
- }
- override func exitCb<T>(fsmCtx: GenericFSM<T>, dt: CFTimeInterval)
- {
- println("readyState::exitCb")
- }
- }
- class printState : GState
- {
- override init()
- {
- println("Entering printState::init")
- }
- override func entryCb<T>(fsmCtx: GenericFSM<T>, dt: CFTimeInterval)
- {
- println("printState::entryCb")
- }
- override func updateCb<T>(fsmCtx: GenericFSM<T>, dt: CFTimeInterval)
- {
- var ctxObj = fsmCtx.m_ctx as test
- ctxObj.incVal()
- println("printState::updateCb = \(ctxObj.getVal())")
- // We have printed the value, no move back to the ready state
- fsmCtx.setState("readyState")
- }
- override func exitCb<T>(fsmCtx: GenericFSM<T>, dt: CFTimeInterval)
- {
- println("printState::exitCb")
- }
- }
- class sandbox
- {
- var ctx = test()
- var fsm = GenericFSM<test>()
- init()
- {
- println("sandbox init")
- fsm.setContext(&ctx)
- fsm.addState("readyState", stateProtocol: readyState())
- fsm.setState("readyState")
- fsm.addState("printState", stateProtocol: printState())
- println("time = \(CFAbsoluteTimeGetCurrent())")
- }
- func update(currentTime: CFTimeInterval)
- {
- fsm.update(currentTime)
- sleep(1)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement