// Zamy, e mamy dwie funkcje:
// 1) Loguj() - dodaje wpis do logw.
// 2) WykonajZadanieL() - podczas wykonywania
// moe wygenerowa wyjcie.

// Makro TRAP_INSTRUMENTATION_START wywoywane jest przed
// wywoaniem kodu objtego makrem TRAP. Moemy przedefiniowa
// je w nastpujcyc sposb:
#undef TRAP_INSTRUMENTATION_START
#define TRAP_INSTRUMENTATION_START Loguj(__LINE__)
// Aby osign ten sam cel bez przedefiniowania makra,
// konieczna jest nastpujca konstrukcja:
Loguj(__LINE__)
TRAP(r,WykonajZadanieL());

// Makro TRAP_INSTRUMENTATION_NOLEAVE wywoywane jest
// po pomylnym wykonaniu kodu objtego makrem TRAP
// (nie nastpio wyjcie).
#undef TRAP_INSTRUMENTATION_NOLEAVE
#define TRAP_INSTRUMENTATION_NOLEAVE Loguj(__LINE__)
// Kod rwnowany:
TRAP(r,WykonajZadanieL());
if(r==KErrNone) Loguj(__LINE__);

// Makro TRAP_INSTRUMENTATION_LEAVE wywoywane jest,
// jeli kod objty makrem TRAP wygenerowa wyjcie.
#undef TRAP_INSTRUMENTATION_LEAVE
#define TRAP_INSTRUMENTATION_LEAVE(aResult) Loguj(aResult,__LINE__)
// Kod rwnowany:
TRAP(r,WykonajZadanieL());
if(r!=KErrNone) Loguj(r,__LINE__);

// Makro TRAP_INSTRUMENTATION_END wywoywane jest
// zawsze przed wyjciem z makra TRAP, bez wzgldu
// na to, czy wyjcie nastpio, czy nie.
#undef TRAP_INSTRUMENTATION_END
#define TRAP_INSTRUMENTATION_END Loguj(__LINE__)
// Kod rwnowany:
TRAP(r,WykonajZadanieL());
Loguj(__LINE__)
