summaryrefslogtreecommitdiff
path: root/runtimes/neurun/src/model/operand/Object.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtimes/neurun/src/model/operand/Object.h')
-rw-r--r--runtimes/neurun/src/model/operand/Object.h135
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__