1ba5c3796Sopenharmony_ci/* 2ba5c3796Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3ba5c3796Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4ba5c3796Sopenharmony_ci * you may not use this file except in compliance with the License. 5ba5c3796Sopenharmony_ci * You may obtain a copy of the License at 6ba5c3796Sopenharmony_ci * 7ba5c3796Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8ba5c3796Sopenharmony_ci * 9ba5c3796Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10ba5c3796Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11ba5c3796Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12ba5c3796Sopenharmony_ci * See the License for the specific language governing permissions and 13ba5c3796Sopenharmony_ci * limitations under the License. 14ba5c3796Sopenharmony_ci */ 15ba5c3796Sopenharmony_ci 16ba5c3796Sopenharmony_ci#ifndef OHOS_MEMORY_MEMMGR_COMMON_INCLUDE_MEM_MGR_PTR_UTIL_H 17ba5c3796Sopenharmony_ci#define OHOS_MEMORY_MEMMGR_COMMON_INCLUDE_MEM_MGR_PTR_UTIL_H 18ba5c3796Sopenharmony_ci 19ba5c3796Sopenharmony_ci#include "hilog/log.h" 20ba5c3796Sopenharmony_ci 21ba5c3796Sopenharmony_cinamespace OHOS { 22ba5c3796Sopenharmony_cinamespace Memory { 23ba5c3796Sopenharmony_ci#define DECLARE_SHARED_POINTER(classType, ptrName) std::shared_ptr<classType> ptrName = nullptr 24ba5c3796Sopenharmony_ci 25ba5c3796Sopenharmony_ci#define DECLARE_UNIQUE_POINTER(classType, ptrName) std::unique_ptr<classType> ptrName = nullptr 26ba5c3796Sopenharmony_ci 27ba5c3796Sopenharmony_ci#define MAKE_POINTER(ptrSelf, ptrType, classType, errLog, errAction, ...) \ 28ba5c3796Sopenharmony_ci do { \ 29ba5c3796Sopenharmony_ci ptrSelf = nullptr; \ 30ba5c3796Sopenharmony_ci try { \ 31ba5c3796Sopenharmony_ci ptrSelf = std::make_##ptrType<classType>(__VA_ARGS__); \ 32ba5c3796Sopenharmony_ci } catch (...) { \ 33ba5c3796Sopenharmony_ci HILOGE(errLog); \ 34ba5c3796Sopenharmony_ci }; \ 35ba5c3796Sopenharmony_ci if (ptrSelf == nullptr) { \ 36ba5c3796Sopenharmony_ci errAction; \ 37ba5c3796Sopenharmony_ci } \ 38ba5c3796Sopenharmony_ci } while (0) 39ba5c3796Sopenharmony_ci} // namespace MemMgr 40ba5c3796Sopenharmony_ci} // namespace OHOS 41ba5c3796Sopenharmony_ci#endif // OHOS_MEMORY_MEMMGR_COMMON_INCLUDE_MEM_MGR_PTR_UTIL_H 42