Определенно, эта возможность -- достоинство динамических языков. Основной код не трогается вообще и не знает, что его могут протрассировать. Логгирование оформляется как модуль, который можно подключать или отключать. Например, сегодня мне нужно было протрассировать расстановщик тематик для правового документа:
overrideMethod(Autoclass.Map, '
(
Read more... )
Comments 8
Reply
Reply
Reply
Reply
Reply
Reply
#define startGenericSpan startGenericSpan_base
#include "tokenizer.c"
#undef startGenericSpan
struct Span *startGenericSpan(struct File *pf, const char *start) {
struct Span *s = startGenericSpan_base(pf, start);
printf("span");
return s;
}
Reply
Leave a comment