| 
									
										
										
										
											2020-11-05 16:41:56 +08:00
										 |  |  | //
 | 
					
						
							|  |  |  | //  IfModule.hpp
 | 
					
						
							|  |  |  | //  MNN
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //  Created by MNN on 2020/09/01.
 | 
					
						
							|  |  |  | //  Copyright © 2018, Alibaba Group Holding Limited
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef IfModule_hpp
 | 
					
						
							|  |  |  | #define IfModule_hpp
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <MNN/expr/Module.hpp>
 | 
					
						
							|  |  |  | namespace MNN { | 
					
						
							|  |  |  | namespace Express { | 
					
						
							|  |  |  | class IfModule : public Module { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     virtual ~ IfModule() { | 
					
						
							|  |  |  |         // Do nothing
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     virtual std::vector<Express::VARP> onForward(const std::vector<Express::VARP>& inputs) override; | 
					
						
							| 
									
										
										
										
											2021-04-14 17:21:30 +08:00
										 |  |  |     MNN_PUBLIC static IfModule* create(const Op* op, const std::map<std::string, SubGraph>& subGraph); | 
					
						
							| 
									
										
										
										
											2020-11-05 16:41:56 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     IfModule(){} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Module* clone(CloneContext* ctx) const override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // First mThen' index, Second: inputs's index
 | 
					
						
							|  |  |  |     std::vector<std::pair<int, int>> mInputForThen; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // First mElse' index, Second: inputs's index
 | 
					
						
							|  |  |  |     std::vector<std::pair<int, int>> mInputForElse; | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |     std::vector<int> mOutputFromThen; | 
					
						
							|  |  |  |     std::vector<int> mOutputFromElse; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     std::shared_ptr<Module> mThen; | 
					
						
							|  |  |  |     std::shared_ptr<Module> mElse; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* IfModule_hpp */
 |