From 61a678cc3f065ca1b7fc0c32ba9ab73d8e2bd626 Mon Sep 17 00:00:00 2001 From: Tom Haber Date: Fri, 22 Jan 2010 13:02:42 +0100 Subject: [PATCH] sim: setDividedBreak added to Clock --- src/Clock.h | 1 + src/Clock.inc | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/Clock.h b/src/Clock.h index d43d9fe..7c22576 100644 --- a/src/Clock.h +++ b/src/Clock.h @@ -33,6 +33,7 @@ namespace sim { public: void setBreak(ClockOffset cycle, Type *obj); void setBreakDelta(ClockOffset delta, Type *obj); + void setDividedBreak(ClockOffset prescaler, ClockOffset delta, Type *obj); void clearBreak(Type *obj); void clearBreak(ClockOffset cycle); void reassignBreak(ClockOffset oldCycle, ClockOffset newCycle, Type *obj); diff --git a/src/Clock.inc b/src/Clock.inc index 9e8c7e4..ee8ae5c 100644 --- a/src/Clock.inc +++ b/src/Clock.inc @@ -17,6 +17,15 @@ namespace sim { } template + void Clock::setDividedBreak(ClockOffset prescaler, ClockOffset delta, + Type *obj) { + + const ClockOffset mask = (prescaler - 1); + const ClockOffset rem = prescaler - (value & mask); + setBreak( value + rem + (delta - 1) * prescaler, obj ); + } + + template void Clock::clearBreak(Type *obj) { ClockListIt it = objects.begin(); while( it != objects.end() ) { -- 2.11.4.GIT