#include #include uRaiseEvent R1 { public: int &i; R1( int &i ) : i(i) {} }; uInitEvent( R1 ); uRaiseEvent R2 { public: int &i; R2( int &i ) : i(i) {} }; uInitEvent( R2 ); void f( int &i ); void g( int &i ); void h1( R1 &r ) { r.i -= 1; uCout << "h1, i:" << r.i << endl; f( r.i ); } void h2( R2 &r ) { r.i -= 2; uCout << "h2, i:" << r.i << endl; g( r.i ); } void f( int &i ) { i -= 1; uCout << "f, i:" << i << endl; if ( i > 0 ) { try { if ( i % 2 != 0 ) uRaise R2(i); g( i ); } } } void g( int &i ) { i -= 1; uCout << "g, i:" << i << endl; if ( i > 0 ) { try { f( i ); uRaise R1(i); } } } void uMain::main() { int i = 20; f( i ); } // Local Variables: // // tab-width: 4 // // End: //