1 /* 2 * Copyright (c) 2024-2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef CPP_ABCKIT_ARKTS_FIELD_H 17 #define CPP_ABCKIT_ARKTS_FIELD_H 18 19 #include "../core/field.h" 20 21 namespace abckit::arkts { 22 23 /** 24 * @brief Field 25 */ 26 class Field final : public core::Field { 27 // We restrict constructors in order to prevent C/C++ API mix-up by user. 28 /// @brief to access private constructor 29 friend class abckit::core::Field; 30 /// @brief abckit::DefaultHash<Field> 31 friend class abckit::DefaultHash<Field>; 32 33 public: 34 /** 35 * @brief Construct a new Field object 36 * @param other 37 */ 38 Field(const Field &other) = default; 39 40 /** 41 * @brief Constructor 42 * @param other 43 * @return Field& 44 */ 45 Field &operator=(const Field &other) = default; 46 47 /** 48 * @brief Construct a new Field object 49 * @param other 50 */ 51 Field(Field &&other) = default; 52 53 /** 54 * @brief Constructor 55 * @param other 56 * @return Field& 57 */ 58 Field &operator=(Field &&other) = default; 59 60 /** 61 * @brief Destroy the Field object 62 */ 63 ~Field() override = default; 64 }; 65 66 } // namespace abckit::arkts 67 68 #endif // CPP_ABCKIT_ARKTS_FIELD_H 69