const ann::Operation *_op;
};
+/**
+ * @brief Code fragment that calls ANeuralNetworksModel_identifyInputsAndOutputs
+ */
+class ArgumentDecl final : public CodeFragment
+{
+public:
+ ArgumentDecl(const std::string &mname, const ANNBinder *binder) : _mname{mname}, _binder{binder}
+ {
+ // DO NOTHING
+ }
+
+public:
+ void dump(pp::LinearDocument *doc) const override
+ {
+ doc->append("{");
+ doc->indent();
+
+ auto module = _binder->module();
+ const uint32_t input_count = module->input()->size();
+
+ doc->append("uint32_t inputs[", input_count, "];");
+ for (uint32_t n = 0; n < input_count; ++n)
+ {
+ doc->append("inputs[", n, "] = ", module->input()->at(n), ";");
+ }
+
+ const uint32_t output_count = module->output()->size();
+
+ doc->append("uint32_t outputs[", output_count, "];");
+ for (uint32_t n = 0; n < output_count; ++n)
+ {
+ doc->append("outputs[", n, "] = ", module->output()->at(n), ";");
+ }
+
+ doc->append("ANeuralNetworksModel_identifyInputsAndOutputs(", _mname, ", ", input_count,
+ ", inputs, ", output_count, ", outputs);");
+ doc->unindent();
+ doc->append("}");
+ }
+
+private:
+ std::string _mname;
+ const ANNBinder *_binder;
+};
+
} // namespace
namespace enco
res->ctor() << OperationDecl{mname, op};
}
- // TODO Emit ANeuralNetworksModel_identifyInputsAndOutputs call
+ // Emit ANeuralNetworksModel_identifyInputsAndOutputs call
+ res->ctor() << ArgumentDecl{mname, binder};
+
// TODO Emit ANeuralNetworksModel_finish call
res->ctor()->append(S(assert("NYI");));