1 #include <ATen/core/ivalue.h> 2 #include <torch/csrc/jit/backends/coreml/objc/PTMCoreMLExecutor.h> 3 #include <torch/csrc/jit/backends/coreml/objc/PTMCoreMLTensorSpec.h> 4 5 namespace torch { 6 namespace jit { 7 namespace mobile { 8 namespace coreml { 9 10 class MLModelWrapper : public CustomClassHolder { 11 public: 12 PTMCoreMLExecutor* executor; 13 std::vector<TensorSpec> outputs; 14 15 MLModelWrapper() = delete; 16 MLModelWrapper(PTMCoreMLExecutor * executor)17 MLModelWrapper(PTMCoreMLExecutor* executor) : executor(executor) { 18 [executor retain]; 19 } 20 MLModelWrapper(const MLModelWrapper & oldObject)21 MLModelWrapper(const MLModelWrapper& oldObject) { 22 executor = oldObject.executor; 23 outputs = oldObject.outputs; 24 [executor retain]; 25 } 26 MLModelWrapper(MLModelWrapper && oldObject)27 MLModelWrapper(MLModelWrapper&& oldObject) { 28 executor = oldObject.executor; 29 outputs = oldObject.outputs; 30 [executor retain]; 31 } 32 ~MLModelWrapper()33 ~MLModelWrapper() { 34 [executor release]; 35 } 36 }; 37 38 } // namespace coreml 39 } // namespace mobile 40 } // namespace jit 41 } // namespace torch 42