///
/// VisionCameraAutolinking.mm
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///

#import <Foundation/Foundation.h>
#import <NitroModules/HybridObjectRegistry.hpp>
#import "VisionCamera-Swift-Cxx-Umbrella.hpp"
#import <type_traits>

#include "HybridCameraFactorySpecSwift.hpp"
#include "HybridPreviewViewSpecSwift.hpp"
#include "HybridFrameRendererViewSpecSwift.hpp"
#include "HybridNativeThreadFactorySpecSwift.hpp"
#include "HybridFrameConverterSpecSwift.hpp"

@interface VisionCameraAutolinking : NSObject
@end

@implementation VisionCameraAutolinking

+ (void) load {
  using namespace margelo::nitro;
  using namespace margelo::nitro::camera;

  HybridObjectRegistry::registerHybridObjectConstructor(
    "CameraFactory",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridCameraFactorySpec> hybridObject = VisionCamera::VisionCameraAutolinking::createCameraFactory();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "PreviewView",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridPreviewViewSpec> hybridObject = VisionCamera::VisionCameraAutolinking::createPreviewView();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "FrameRendererView",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridFrameRendererViewSpec> hybridObject = VisionCamera::VisionCameraAutolinking::createFrameRendererView();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "NativeThreadFactory",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridNativeThreadFactorySpec> hybridObject = VisionCamera::VisionCameraAutolinking::createNativeThreadFactory();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "FrameConverter",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridFrameConverterSpec> hybridObject = VisionCamera::VisionCameraAutolinking::createFrameConverter();
      return hybridObject;
    }
  );
}

@end
