[enco] Emit fields in Subnet classes (#1224)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Wed, 29 Aug 2018 03:04:43 +0000 (12:04 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Wed, 29 Aug 2018 03:04:43 +0000 (12:04 +0900)
* [enco] Emit fields in Subnet classes

This commit revises SubnetStructBuilder to emit mandatory fields and
relevant constructor/destructor code.

Note that model construction is not yet supported.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
* Fix a typo (Retun -> Return)

contrib/enco/core/src/CppGen/Subnet.cpp
contrib/enco/core/src/CppGen/Subnet.h

index d3a591e..b4fadbf 100644 (file)
@@ -20,6 +20,10 @@ public:
   }
 
 public:
+  std::string model(void) const override { return "_model"; }
+  std::string compilation(void) const override { return "_compilation"; }
+
+public:
   const pp::MultiLineText &def(void) const override { return _def; }
   pp::LinearDocument *def(void) { return &_def; }
 
@@ -46,9 +50,24 @@ std::unique_ptr<SubnetStruct> SubnetStructBuilder::build(const ANNBinder *binder
 {
   auto res = make_unique<SubnetStructImpl>();
 
-  // TODO Fill constructor and destructor
+  auto mname = res->model();
+  auto cname = res->compilation();
+
+  res->def()->append("ANeuralNetworksModel *", mname, ";");
+  res->def()->append("ANeuralNetworksCompilation *", cname, ";");
+
+  res->ctor()->append("ANeuralNetworksModel_create(&", mname, ");");
+  res->dtor()->append("ANeuralNetworksModel_free(", mname, ");");
+
+  // TODO Construct model
   res->ctor()->append(S(assert("NYI");));
-  res->dtor()->append(S(assert("NYI");));
+
+  // Create compilation
+  res->ctor()->append("ANeuralNetworksCompilation_create(", mname, ", &", cname, ");");
+  res->dtor()->append("ANeuralNetworksCompilation_free(", cname, ");");
+
+  // Finalize compilation
+  res->ctor()->append("ANeuralNetworksCompilation_finish(", cname, ");");
 
   return std::move(res);
 }
index 4e9b405..1fe615a 100644 (file)
@@ -17,6 +17,11 @@ struct SubnetStruct
 {
   virtual ~SubnetStruct() = default;
 
+  // @brief Return the field name of ANeuralNetworksModel value
+  virtual std::string model(void) const = 0;
+  // @brief Return the field name of ANeuralNetworksCompilatoin value
+  virtual std::string compilation(void) const = 0;
+
   virtual const pp::MultiLineText &def(void) const = 0;
   virtual const pp::MultiLineText &ctor(void) const = 0;
   virtual const pp::MultiLineText &dtor(void) const = 0;