common/reals/real_thandle_helper.h (18 lines of code) (raw):
// Copyright (c) Microsoft. All rights reserved.
#ifndef REAL_THANDLE_HELPER_H
#define REAL_THANDLE_HELPER_H
#include "macro_utils/macro_utils.h"
#include "c_pal/thandle.h"
#include "c_pal/thandle_ll.h"
#include "c_pal/gballoc_hl.h"
#include "real_gballoc_hl.h"
// Creates a THANDLE alias of TYPE called REAL_TYPE
// Must have ENABLE_MOCKS undefined
// Recommend including real_interlocked_renames.h before this call and real_interlocked_undo_renames.h after this call
#define REAL_THANDLE_DEFINE(TYPE) \
THANDLE_LL_TYPE_DEFINE_WITH_MALLOC_FUNCTIONS(MU_C2(REAL_, TYPE), TYPE, real_gballoc_hl_malloc, real_gballoc_hl_malloc_flex, real_gballoc_hl_free);
#define REAL_THANDLE_DECLARE(TYPE) \
typedef TYPE MU_C2(REAL_, TYPE); \
THANDLE_LL_TYPE_DECLARE(MU_C2(REAL_, TYPE), TYPE); \
// Hook the THANDLE(TYPE) calls to the THANDLE(REAL_TYPE) calls
#define REGISTER_REAL_THANDLE_MOCK_HOOK(TYPE) \
REGISTER_GLOBAL_MOCK_HOOK(THANDLE_ASSIGN(TYPE), THANDLE_ASSIGN(MU_C2(REAL_, TYPE))); \
REGISTER_GLOBAL_MOCK_HOOK(THANDLE_INITIALIZE(TYPE), THANDLE_INITIALIZE(MU_C2(REAL_, TYPE))); \
REGISTER_GLOBAL_MOCK_HOOK(THANDLE_INITIALIZE_MOVE(TYPE), THANDLE_INITIALIZE_MOVE(MU_C2(REAL_, TYPE))); \
REGISTER_GLOBAL_MOCK_HOOK(THANDLE_MOVE(TYPE), THANDLE_MOVE(MU_C2(REAL_, TYPE)));
#endif //REAL_THANDLE_HELPER_H