/*
 * Copyright (C) 2019 MediaTek Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef CAMERA_HAL_MEDIATEK_MTKCAM_PIPELINE_HWNODE_P2_P2_LOGHEADEREND_H_
#define CAMERA_HAL_MEDIATEK_MTKCAM_PIPELINE_HWNODE_P2_P2_LOGHEADEREND_H_

#pragma pop_macro("LOG_TAG")

#pragma pop_macro("P2_MODULE_TAG")
#pragma pop_macro("P2_CLASS_TAG")
#pragma pop_macro("P2_TRACE")

#pragma pop_macro("FP_STR")
#pragma pop_macro("FF_LOG")
#pragma pop_macro("FPS_LOG")
#pragma pop_macro("XPS_LOG")
#pragma pop_macro("FSS_LOG")
#pragma pop_macro("XSS_LOG")
#pragma pop_macro("FP_LOG")
#pragma pop_macro("XP_LOG")
#pragma pop_macro("FS_LOG")
#pragma pop_macro("XS_LOG")
#pragma pop_macro("FP_DO")

#pragma pop_macro("MY_LOGV")
#pragma pop_macro("MY_LOGD")
#pragma pop_macro("MY_LOGI")
#pragma pop_macro("MY_LOGW")
#pragma pop_macro("MY_LOGE")
#pragma pop_macro("MY_LOGA")
#pragma pop_macro("MY_LOGF")

#pragma pop_macro("MY_LOGV_IF")
#pragma pop_macro("MY_LOGD_IF")
#pragma pop_macro("MY_LOGI_IF")
#pragma pop_macro("MY_LOGW_IF")
#pragma pop_macro("MY_LOGE_IF")
#pragma pop_macro("MY_LOGA_IF")
#pragma pop_macro("MY_LOGF_IF")

#pragma pop_macro("MY_S_LOGV")
#pragma pop_macro("MY_S_LOGD")
#pragma pop_macro("MY_S_LOGI")
#pragma pop_macro("MY_S_LOGW")
#pragma pop_macro("MY_S_LOGE")
#pragma pop_macro("MY_S_LOGA")
#pragma pop_macro("MY_S_LOGF")

#pragma pop_macro("MY_S_LOGV_IF")
#pragma pop_macro("MY_S_LOGD_IF")
#pragma pop_macro("MY_S_LOGI_IF")
#pragma pop_macro("MY_S_LOGW_IF")
#pragma pop_macro("MY_S_LOGE_IF")
#pragma pop_macro("MY_S_LOGA_IF")
#pragma pop_macro("MY_S_LOGF_IF")

#pragma pop_macro("MY_LOG_FUNC_ENTER")
#pragma pop_macro("MY_LOG_FUNC_EXIT")
#pragma pop_macro("MY_LOG_S_FUNC_ENTER")
#pragma pop_macro("MY_LOG_S_FUNC_EXIT")

#pragma pop_macro("P_TRACE_ALL")
#pragma pop_macro("P_TRACE_CLASS")
#pragma pop_macro("P_TRACE_CLASS_KEY")
#pragma pop_macro("P_TRACE_ALWAYS")
#pragma pop_macro("P_TRACE_ADB")
#pragma pop_macro("P_TRACE_ON")
#pragma pop_macro("PT_DO")

#pragma pop_macro("TRACE_FUNC_ENTER")
#pragma pop_macro("TRACE_FUNC_EXIT")
#pragma pop_macro("TRACE_FUNC")
#pragma pop_macro("TRACE_S_FUNC_ENTER")
#pragma pop_macro("TRACE_S_FUNC_EXIT")
#pragma pop_macro("TRACE_S_FUNC")

#pragma pop_macro("TRACE_FUNC_ENTER_2")
#pragma pop_macro("TRACE_FUNC_EXIT_2")
#pragma pop_macro("TRACE_FUNC_2")
#pragma pop_macro("TRACE_S_FUNC_ENTER_2")
#pragma pop_macro("TRACE_S_FUNC_EXIT_2")
#pragma pop_macro("TRACE_S_FUNC_2")
#endif  // CAMERA_HAL_MEDIATEK_MTKCAM_PIPELINE_HWNODE_P2_P2_LOGHEADEREND_H_
