192a12a34Sopenharmony_ci/*
292a12a34Sopenharmony_ci * Copyright (c) 2020 Huawei Device Co., Ltd.
392a12a34Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
492a12a34Sopenharmony_ci * you may not use this file except in compliance with the License.
592a12a34Sopenharmony_ci * You may obtain a copy of the License at
692a12a34Sopenharmony_ci *
792a12a34Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
892a12a34Sopenharmony_ci *
992a12a34Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1092a12a34Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1192a12a34Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1292a12a34Sopenharmony_ci * See the License for the specific language governing permissions and
1392a12a34Sopenharmony_ci * limitations under the License.
1492a12a34Sopenharmony_ci */
1592a12a34Sopenharmony_ci
1692a12a34Sopenharmony_ci#ifndef OHOS_NOCOPYABLE_H
1792a12a34Sopenharmony_ci#define OHOS_NOCOPYABLE_H
1892a12a34Sopenharmony_ci
1992a12a34Sopenharmony_cinamespace OHOS {
2092a12a34Sopenharmony_ci#define DISALLOW_COPY_AND_MOVE(className)               \
2192a12a34Sopenharmony_ci    DISALLOW_COPY(className);                           \
2292a12a34Sopenharmony_ci    DISALLOW_MOVE(className)
2392a12a34Sopenharmony_ci
2492a12a34Sopenharmony_ci#define DISALLOW_COPY(className)                        \
2592a12a34Sopenharmony_ci    className(const className&) = delete;               \
2692a12a34Sopenharmony_ci    className& operator= (const className&) = delete
2792a12a34Sopenharmony_ci
2892a12a34Sopenharmony_ci#define DISALLOW_MOVE(className)                        \
2992a12a34Sopenharmony_ci    className(className&&) = delete;                    \
3092a12a34Sopenharmony_ci    className& operator= (className&&) = delete
3192a12a34Sopenharmony_ci
3292a12a34Sopenharmony_ci
3392a12a34Sopenharmony_ciclass NoCopyable {
3492a12a34Sopenharmony_ciprotected:
3592a12a34Sopenharmony_ci    NoCopyable() {};
3692a12a34Sopenharmony_ci    virtual ~NoCopyable() {};
3792a12a34Sopenharmony_ci
3892a12a34Sopenharmony_ciprivate:
3992a12a34Sopenharmony_ci    DISALLOW_COPY_AND_MOVE(NoCopyable);
4092a12a34Sopenharmony_ci};
4192a12a34Sopenharmony_ci}  // namespace OHOS
4292a12a34Sopenharmony_ci#endif  // OHOS_NOCOPYABLE_H