/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
library/cpp/testing/hook/hook.cpp
45 строк
1 KB
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
#include "hook.h" namespace { NTesting::THook* BeforeInitHead = nullptr; NTesting::THook* BeforeRunHead = nullptr; NTesting::THook* AfterRunHead = nullptr; void RegisterHook(NTesting::THook*& head, NTesting::THook* hook) { hook->Next = head; head = hook; } void CallHooks(NTesting::THook* head) { while (nullptr != head) { if (nullptr != head->Fn) { (*head->Fn)(); } head = head->Next; } } } void NTesting::THook::RegisterBeforeInit(NTesting::THook* hook) noexcept { RegisterHook(BeforeInitHead, hook); } void NTesting::THook::CallBeforeInit() { CallHooks(BeforeInitHead); } void NTesting::THook::RegisterBeforeRun(NTesting::THook* hook) noexcept { RegisterHook(BeforeRunHead, hook); } void NTesting::THook::CallBeforeRun() { CallHooks(BeforeRunHead); } void NTesting::THook::RegisterAfterRun(NTesting::THook* hook) noexcept { RegisterHook(AfterRunHead, hook); } void NTesting::THook::CallAfterRun() { CallHooks(AfterRunHead); }