1 /* 2 * Copyright (c) 2021 Arm Limited. 3 * 4 * SPDX-License-Identifier: MIT 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a copy 7 * of this software and associated documentation files (the "Software"), to 8 * deal in the Software without restriction, including without limitation the 9 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 10 * sell copies of the Software, and to permit persons to whom the Software is 11 * furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included in all 14 * copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 * SOFTWARE. 23 */ 24 #ifndef SRC_COMMON_OBJECT_H_ 25 #define SRC_COMMON_OBJECT_H_ 26 27 #include <cstdint> 28 29 namespace arm_compute 30 { 31 // Forward declarations 32 class IContext; 33 34 namespace detail 35 { 36 /**< Object type enumerations */ 37 enum class ObjectType : uint32_t 38 { 39 Context = 1, 40 Queue = 2, 41 Tensor = 3, 42 TensorPack = 4, 43 Operator = 5, 44 Invalid = 0x56DEAD78 45 }; 46 47 /**< API Header meta-data construct used by all opaque constructs */ 48 struct Header 49 { 50 /** Constructor 51 * 52 * @param[in] type_ Object identification type 53 * @param[in] ctx_ Context to reference 54 */ HeaderHeader55 Header(ObjectType type_, IContext *ctx_) noexcept 56 : type(type_), 57 ctx(ctx_) 58 { 59 } 60 61 ObjectType type{ ObjectType::Invalid }; 62 IContext *ctx{ nullptr }; 63 }; 64 } // namespace detail 65 } // namespace arm_compute 66 #endif /* SRC_COMMON_OBJECT_H_ */ 67