Enable to check state of model (#2411)
author남궁석/동작제어Lab(SR)/Engineer/삼성전자 <sk.namkoong@samsung.com>
Wed, 22 Aug 2018 08:28:13 +0000 (17:28 +0900)
committer이춘석/동작제어Lab(SR)/Staff Engineer/삼성전자 <chunseok.lee@samsung.com>
Wed, 22 Aug 2018 08:28:13 +0000 (17:28 +0900)
This commit will enable to check model state if it is finished or not
As a result, checking `ANUERALNETWORKS_BAD_STATE` is available

Signed-off-by: Seok NamKoong <sk.namkoong@samsung.com>
runtimes/pure_arm_compute/src/model.cc
runtimes/pure_arm_compute/src/model.h

index 6355bfd..f2d616c 100644 (file)
@@ -36,6 +36,10 @@ int ANeuralNetworksModel_addOperand(ANeuralNetworksModel *model,
     return ANEURALNETWORKS_UNEXPECTED_NULL;
   }
 
+  if (model->isFinished())
+  {
+    return ANEURALNETWORKS_BAD_STATE;
+  }
   // ASSUME A tensor operand should consists of fp32 or int32 values.
   // NOTE We do not care about scala operands.
   assert((type->dimensionCount == 0) || (type->type == ANEURALNETWORKS_TENSOR_FLOAT32 ||
@@ -605,6 +609,8 @@ int ANeuralNetworksModel_finish(ANeuralNetworksModel *model)
     return ANEURALNETWORKS_UNEXPECTED_NULL;
   }
 
+  model->markAsFinished();
+
   return ANEURALNETWORKS_NO_ERROR;
 }
 
index cc71887..973887f 100644 (file)
@@ -13,9 +13,12 @@ public:
 
 public:
   void release(std::shared_ptr<const internal::tflite::Model> &model) { model = _model; }
+  bool isFinished() { return _isFinished == true; }
+  void markAsFinished() { _isFinished = true; }
 
 private:
   std::shared_ptr<internal::tflite::Model> _model;
+  bool _isFinished{false};
 };
 
 #endif // __MODEL_H__