///
/// NitroImageAutolinking.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 "NitroImage-Swift-Cxx-Umbrella.hpp"
#import <type_traits>

#include "HybridImageFactorySpecSwift.hpp"
#include "HybridImageLoaderFactorySpecSwift.hpp"
#include "HybridImageUtilsSpecSwift.hpp"
#include "HybridNitroImageViewSpecSwift.hpp"

@interface NitroImageAutolinking : NSObject
@end

@implementation NitroImageAutolinking

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

  HybridObjectRegistry::registerHybridObjectConstructor(
    "ImageFactory",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridImageFactorySpec> hybridObject = NitroImage::NitroImageAutolinking::createImageFactory();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "ImageLoaderFactory",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridImageLoaderFactorySpec> hybridObject = NitroImage::NitroImageAutolinking::createImageLoaderFactory();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "ImageUtils",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridImageUtilsSpec> hybridObject = NitroImage::NitroImageAutolinking::createImageUtils();
      return hybridObject;
    }
  );
  HybridObjectRegistry::registerHybridObjectConstructor(
    "NitroImageView",
    []() -> std::shared_ptr<HybridObject> {
      std::shared_ptr<HybridNitroImageViewSpec> hybridObject = NitroImage::NitroImageAutolinking::createNitroImageView();
      return hybridObject;
    }
  );
}

@end
