xref: /aosp_15_r20/external/pytorch/torch/csrc/jit/backends/coreml/objc/PTMCoreMLModelWrapper.h (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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