diff options
Diffstat (limited to 'runtimes/neurun/src/model/operand/Object.h')
-rw-r--r-- | runtimes/neurun/src/model/operand/Object.h | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/runtimes/neurun/src/model/operand/Object.h b/runtimes/neurun/src/model/operand/Object.h deleted file mode 100644 index eb5f6275e..000000000 --- a/runtimes/neurun/src/model/operand/Object.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * 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 __NEURUN_MODEL_OPERAND_OBJECT_H__ -#define __NEURUN_MODEL_OPERAND_OBJECT_H__ - -#include <cassert> -#include <cstdint> -#include <memory> -#include <algorithm> - -#include "Shape.h" -#include "Data.h" -#include "TypeInfo.h" -#include "graph/operand/LowerInfo.h" // TODO Remove this dependency -#include "graph/operand/ParentInfo.h" // TODO Remove this dependency -#include "model/operation/IndexList.h" - -namespace neurun -{ -namespace model -{ -namespace operand -{ - -// Operand usage should be exact one of these -enum class OperandUsage -{ - NOT_DEFINED, - MODEL_INPUT, - CONSTANT, - OPERATION_OUTPUT, -}; - -class Object -{ -public: - explicit Object(const Shape &shape, const TypeInfo &type) - : _shape{shape}, _type{type}, _usage{OperandUsage::NOT_DEFINED} - { - // DO NOTHING - } - -public: - const Shape &shape(void) const { return _shape; } - const TypeInfo &typeInfo(void) const { return _type; } - size_t operandSize(void) const; - bool setAsConstant() { return setUsage(OperandUsage::CONSTANT); } - bool setAsModelInput() { return setUsage(OperandUsage::MODEL_INPUT); } - bool setAsOperationOutput() { return setUsage(OperandUsage::OPERATION_OUTPUT); } - bool usageIsDefined(void) const { return _usage != OperandUsage::NOT_DEFINED; } - bool isModelInput(void) const { return _usage == OperandUsage::MODEL_INPUT; } - OperandUsage getUsage() const { return _usage; } - - const operation::IndexList &getUses() const { return _uses; } - const operation::IndexList &getDef() const { return _def; } - void appendUse(const operation::Index &idx); - void removeUse(const operation::Index &idx); - void appendDef(const operation::Index &idx); - void removeDef(const operation::Index &idx); - -private: - bool setUsage(OperandUsage usage); - -public: - void data(std::unique_ptr<Data> &&data) { _data = std::move(data); } - const Data &data(void) const { return *_data; } - -public: - template <typename T, typename... Args> void data(Args &&... args) - { - data(std::unique_ptr<T>(new T{std::forward<Args>(args)...})); - } - -public: - template <typename T> T asScalar(void) const - { - assert((_shape.rank() == 0) || ((_shape.rank() == 1) && (_shape.dim(0) == 1))); - assert(_data != nullptr); - assert((_data->base() != nullptr) && (_data->size() == sizeof(T))); - - return *(reinterpret_cast<const T *>(_data->base())); - } - -public: - void lower_info(std::unique_ptr<graph::operand::LowerInfo> &&lower_info); - const graph::operand::LowerInfo *lower_info() const; - graph::operand::LowerInfo *lower_info(); - /** - * @brief Set parent information - * @param[in] parent_info Parent information - */ - void parent_info(std::unique_ptr<graph::operand::ParentInfo> &&parent_info); - /** - * @brief Return parent information pointer as constant - * @return Parent information pointer - */ - const graph::operand::ParentInfo *parent_info() const; - /** - * @brief Return parent information pointer - * @return Perent information pointer - */ - graph::operand::ParentInfo *parent_info(); - -private: - const Shape _shape; - const TypeInfo _type; - std::unique_ptr<Data> _data; - OperandUsage _usage; - - operation::IndexList _uses; - operation::IndexList _def; // size is 0 (constant) or 1 (from def operation) - - std::unique_ptr<graph::operand::LowerInfo> _lower_info; - std::unique_ptr<graph::operand::ParentInfo> _parent_info; -}; - -} // namespace operand -} // namespace model -} // namespace neurun - -#endif // __NEURUN_MODEL_OPERAND_OBJECT_H__ |