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

import NitroModules

/**
 * Represents an instance of `ReferencedAssetsType`, backed by a C++ struct.
 */
public typealias ReferencedAssetsType = margelo.nitro.rive.ReferencedAssetsType

public extension ReferencedAssetsType {
  private typealias bridge = margelo.nitro.rive.bridge.swift

  /**
   * Create a new instance of `ReferencedAssetsType`.
   */
  init(data: Dictionary<String, ResolvedReferencedAsset>?) {
    self.init({ () -> bridge.std__optional_std__unordered_map_std__string__ResolvedReferencedAsset__ in
      if let __unwrappedValue = data {
        return bridge.create_std__optional_std__unordered_map_std__string__ResolvedReferencedAsset__({ () -> bridge.std__unordered_map_std__string__ResolvedReferencedAsset_ in
          var __map = bridge.create_std__unordered_map_std__string__ResolvedReferencedAsset_(__unwrappedValue.count)
          for (__k, __v) in __unwrappedValue {
            bridge.emplace_std__unordered_map_std__string__ResolvedReferencedAsset_(&__map, std.string(__k), __v)
          }
          return __map
        }())
      } else {
        return .init()
      }
    }())
  }

  @inline(__always)
  var data: Dictionary<String, ResolvedReferencedAsset>? {
    return { () -> Dictionary<String, ResolvedReferencedAsset>? in
      if bridge.has_value_std__optional_std__unordered_map_std__string__ResolvedReferencedAsset__(self.__data) {
        let __unwrapped = bridge.get_std__optional_std__unordered_map_std__string__ResolvedReferencedAsset__(self.__data)
        return { () -> Dictionary<String, ResolvedReferencedAsset> in
          var __dictionary = Dictionary<String, ResolvedReferencedAsset>(minimumCapacity: __unwrapped.size())
          let __keys = bridge.get_std__unordered_map_std__string__ResolvedReferencedAsset__keys(__unwrapped)
          for __key in __keys {
            let __value = bridge.get_std__unordered_map_std__string__ResolvedReferencedAsset__value(__unwrapped, __key)
            __dictionary[String(__key)] = __value
          }
          return __dictionary
        }()
      } else {
        return nil
      }
    }()
  }
}
