package ExampleGCD { import UU.Logging.* ; // A simple example for testing the logging module. public class GCD { public static function recGcd (x:int,y:int) : int { LogUtils.logFunEntry(4,"recGcd","ExampleGCD.GCD",null,x,y) ; var r : int ; if (x == y) { // using some dummy block-ids... LogUtils.logBlock(3,"1.T","recGcd","ExampleGCD.GCD"); r = x; } else if (x>y) { LogUtils.logBlock(3,"1.ET","recGcd","ExampleGCD.GCD"); r = recGcd(x-y,y); } else { LogUtils.logBlock(3,"1.EE","recGcd","ExampleGCD.GCD"); r = recGcd(x,y-x); } LogUtils.logFunExit(4,"recGcd","ExampleGCD.GCD",null,r) ; return r ; } public static function whileGcd (x:int,y:int) : int { LogUtils.logFunEntry(4,"whileGcd","ExampleGCD.GCD",null,x,y) ; var iter_count:int = 0 while (x != y) { iter_count++; if (x > y) x = x - y; else y = y - x ; } LogUtils.logBlockLoopExit(3,"2","whileGcd","ExampleGCD.GCD",iter_count); LogUtils.logFunExit(4,"whileGcd","ExampleGCD.GCD",null,x) ; return x; } public static function catchGcd (x:int,y:int) : Object { LogUtils.logFunEntry(4,"catchGcd","ExampleGCD.GCD",null,x,y) ; var r : int ; try { if (x<=0 || y<=0) throw new Error("oops") ; // injected crash else r = whileGcd(x,y) ; } catch (e:Error) { LogUtils.logBlockExceptionHandler(3,"2","catchGcd","ExampleGCD.GCD",e) ; // trace("catchGcd, handling exception: " + e.getStackTrace()); var r2 : String = "check gcd args!" ; LogUtils.logFunExit(4,"catchGcd","ExampleGCD.GCD",null,r2) ; return r2 ; } LogUtils.logFunExit(4,"catchGcd","ExampleGCD.GCD",null,r) ; return r ; } } }