Provide a way to disable static registration using MEDIAPIPE_DISABLE_STATIC_REGISTRATION
PiperOrigin-RevId: 556963956
This commit is contained in:
		
							parent
							
								
									6605fdb16f
								
							
						
					
					
						commit
						dd940707ca
					
				| 
						 | 
					@ -408,22 +408,38 @@ class GlobalFactoryRegistry {
 | 
				
			||||||
#define REGISTRY_STATIC_VAR(var_name, line) \
 | 
					#define REGISTRY_STATIC_VAR(var_name, line) \
 | 
				
			||||||
  REGISTRY_STATIC_VAR_INNER(var_name, line)
 | 
					  REGISTRY_STATIC_VAR_INNER(var_name, line)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MEDIAPIPE_REGISTER_FACTORY_FUNCTION(RegistryType, name, ...) \
 | 
					// Disables all static registration in MediaPipe accomplished using:
 | 
				
			||||||
  static auto* REGISTRY_STATIC_VAR(registration_##name, __LINE__) =  \
 | 
					// - REGISTER_FACTORY_FUNCTION_QUALIFIED
 | 
				
			||||||
      new mediapipe::RegistrationToken(                              \
 | 
					// - MEDIAPIPE_REGISTER_FACTORY_FUNCTION
 | 
				
			||||||
          RegistryType::Register(#name, __VA_ARGS__))
 | 
					// - MEDIAPIPE_STATIC_REGISTRATOR_TEMPLATE
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Which includes:
 | 
				
			||||||
 | 
					// - calculators
 | 
				
			||||||
 | 
					// - input stream handlers
 | 
				
			||||||
 | 
					// - output stream handlers
 | 
				
			||||||
 | 
					// - generators
 | 
				
			||||||
 | 
					// - anything else registered using above macros
 | 
				
			||||||
 | 
					#if !defined(MEDIAPIPE_DISABLE_STATIC_REGISTRATION)
 | 
				
			||||||
 | 
					#define MEDIAPIPE_DISABLE_STATIC_REGISTRATION 0
 | 
				
			||||||
 | 
					#endif  // !defined(MEDIAPIPE_DISABLE_STATIC_REGISTRATION)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if MEDIAPIPE_DISABLE_STATIC_REGISTRATION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MEDIAPIPE_REGISTER_FACTORY_FUNCTION_QUALIFIED(RegistryType, var_name, \
 | 
				
			||||||
 | 
					                                                      name, ...)
 | 
				
			||||||
 | 
					#define MEDIAPIPE_STATIC_REGISTRATOR_TEMPLATE(RegistratorName, RegistryType, \
 | 
				
			||||||
 | 
					                                              name, ...)                     \
 | 
				
			||||||
 | 
					  template <typename T>                                                      \
 | 
				
			||||||
 | 
					  class RegistratorName {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MEDIAPIPE_REGISTER_FACTORY_FUNCTION_QUALIFIED(RegistryType, var_name, \
 | 
					#define MEDIAPIPE_REGISTER_FACTORY_FUNCTION_QUALIFIED(RegistryType, var_name, \
 | 
				
			||||||
                                                      name, ...)              \
 | 
					                                                      name, ...)              \
 | 
				
			||||||
  static auto* REGISTRY_STATIC_VAR(var_name, __LINE__) =                      \
 | 
					  static mediapipe::RegistrationToken* REGISTRY_STATIC_VAR(var_name,          \
 | 
				
			||||||
 | 
					                                                           __LINE__) =        \
 | 
				
			||||||
      new mediapipe::RegistrationToken(                                       \
 | 
					      new mediapipe::RegistrationToken(                                       \
 | 
				
			||||||
          RegistryType::Register(name, __VA_ARGS__))
 | 
					          RegistryType::Register(name, __VA_ARGS__));
 | 
				
			||||||
 | 
					 | 
				
			||||||
// TODO: migrate to the above.
 | 
					 | 
				
			||||||
#define REGISTER_FACTORY_FUNCTION_QUALIFIED(RegistryType, var_name, name, ...) \
 | 
					 | 
				
			||||||
  static auto* REGISTRY_STATIC_VAR(var_name, __LINE__) =                       \
 | 
					 | 
				
			||||||
      new mediapipe::RegistrationToken(                                        \
 | 
					 | 
				
			||||||
          RegistryType::Register(#name, __VA_ARGS__))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Defines a utility registrator class which can be used to automatically
 | 
					// Defines a utility registrator class which can be used to automatically
 | 
				
			||||||
// register factory functions.
 | 
					// register factory functions.
 | 
				
			||||||
| 
						 | 
					@ -480,6 +496,18 @@ class GlobalFactoryRegistry {
 | 
				
			||||||
    typename Internal##RegistratorName<T>::RequireStatics register_;          \
 | 
					    typename Internal##RegistratorName<T>::RequireStatics register_;          \
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif  // MEDIAPIPE_DISABLE_STATIC_REGISTRATION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MEDIAPIPE_REGISTER_FACTORY_FUNCTION(RegistryType, name, ...) \
 | 
				
			||||||
 | 
					  MEDIAPIPE_REGISTER_FACTORY_FUNCTION_QUALIFIED(                     \
 | 
				
			||||||
 | 
					      RegistryType, registration_##name, #name, __VA_ARGS__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO: migrate usages to use
 | 
				
			||||||
 | 
					// MEDIAPIPE_REGISTER_FACTORY_FUNCTION_QUALIFIED.
 | 
				
			||||||
 | 
					#define REGISTER_FACTORY_FUNCTION_QUALIFIED(RegistryType, var_name, name, ...) \
 | 
				
			||||||
 | 
					  MEDIAPIPE_REGISTER_FACTORY_FUNCTION_QUALIFIED(RegistryType, var_name, #name, \
 | 
				
			||||||
 | 
					                                                __VA_ARGS__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}  // namespace mediapipe
 | 
					}  // namespace mediapipe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif  // MEDIAPIPE_DEPS_REGISTRATION_H_
 | 
					#endif  // MEDIAPIPE_DEPS_REGISTRATION_H_
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user