All Downloads are FREE. Search and download functionalities are using the official Maven repository.

akka.stream.scaladsl.GraphApply.scala Maven / Gradle / Ivy

There is a newer version: 2.2.6.3
Show newest version
// auto-generated by sbt-boilerplate
/**
 * Copyright (C) 2014-2017 Lightbend Inc. 
 */
package akka.stream.scaladsl

import akka.NotUsed
import akka.stream.impl.TraversalBuilder
import akka.stream.{ Graph, Attributes, Shape }

trait GraphApply {
  /**
   * Creates a new [[Graph]] by passing a [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape]()(buildBlock: GraphDSL.Builder[NotUsed] ⇒ S): Graph[S, NotUsed] = {
    val builder = new GraphDSL.Builder
    val s = buildBlock(builder)

    createGraph(s, builder)
  }

  /**
   * Creates a new [[Graph]] by importing the given graph `g1` and passing its [[Shape]]
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat](g1: Graph[Shape, Mat])(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val s1 = builder.add(g1, Keep.right)
    val s = buildBlock(builder)(s1)

    createGraph(s, builder)
  }


  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2](g1: Graph[Shape, M1], g2: Graph[Shape, M2])(combineMat: (M1, M2) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s = buildBlock(builder)(s1, s2)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3])(combineMat: (M1, M2, M3) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s = buildBlock(builder)(s1, s2, s3)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4])(combineMat: (M1, M2, M3, M4) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s = buildBlock(builder)(s1, s2, s3, s4)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5])(combineMat: (M1, M2, M3, M4, M5) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6])(combineMat: (M1, M2, M3, M4, M5, M6) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7])(combineMat: (M1, M2, M3, M4, M5, M6, M7) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12], g13: Graph[Shape, M13])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape, g13.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s13 = builder.add(g13, (f: M13 ⇒ Any, m13: M13) ⇒ f(m13))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12], g13: Graph[Shape, M13], g14: Graph[Shape, M14])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape, g13.Shape, g14.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s13 = builder.add(g13, (f: M13 ⇒ Any, m13: M13) ⇒ f(m13))
    val s14 = builder.add(g14, (f: M14 ⇒ Any, m14: M14) ⇒ f(m14))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12], g13: Graph[Shape, M13], g14: Graph[Shape, M14], g15: Graph[Shape, M15])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape, g13.Shape, g14.Shape, g15.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s13 = builder.add(g13, (f: M13 ⇒ Any, m13: M13) ⇒ f(m13))
    val s14 = builder.add(g14, (f: M14 ⇒ Any, m14: M14) ⇒ f(m14))
    val s15 = builder.add(g15, (f: M15 ⇒ Any, m15: M15) ⇒ f(m15))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12], g13: Graph[Shape, M13], g14: Graph[Shape, M14], g15: Graph[Shape, M15], g16: Graph[Shape, M16])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape, g13.Shape, g14.Shape, g15.Shape, g16.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s13 = builder.add(g13, (f: M13 ⇒ Any, m13: M13) ⇒ f(m13))
    val s14 = builder.add(g14, (f: M14 ⇒ Any, m14: M14) ⇒ f(m14))
    val s15 = builder.add(g15, (f: M15 ⇒ Any, m15: M15) ⇒ f(m15))
    val s16 = builder.add(g16, (f: M16 ⇒ Any, m16: M16) ⇒ f(m16))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12], g13: Graph[Shape, M13], g14: Graph[Shape, M14], g15: Graph[Shape, M15], g16: Graph[Shape, M16], g17: Graph[Shape, M17])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape, g13.Shape, g14.Shape, g15.Shape, g16.Shape, g17.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s13 = builder.add(g13, (f: M13 ⇒ Any, m13: M13) ⇒ f(m13))
    val s14 = builder.add(g14, (f: M14 ⇒ Any, m14: M14) ⇒ f(m14))
    val s15 = builder.add(g15, (f: M15 ⇒ Any, m15: M15) ⇒ f(m15))
    val s16 = builder.add(g16, (f: M16 ⇒ Any, m16: M16) ⇒ f(m16))
    val s17 = builder.add(g17, (f: M17 ⇒ Any, m17: M17) ⇒ f(m17))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12], g13: Graph[Shape, M13], g14: Graph[Shape, M14], g15: Graph[Shape, M15], g16: Graph[Shape, M16], g17: Graph[Shape, M17], g18: Graph[Shape, M18])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape, g13.Shape, g14.Shape, g15.Shape, g16.Shape, g17.Shape, g18.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s13 = builder.add(g13, (f: M13 ⇒ Any, m13: M13) ⇒ f(m13))
    val s14 = builder.add(g14, (f: M14 ⇒ Any, m14: M14) ⇒ f(m14))
    val s15 = builder.add(g15, (f: M15 ⇒ Any, m15: M15) ⇒ f(m15))
    val s16 = builder.add(g16, (f: M16 ⇒ Any, m16: M16) ⇒ f(m16))
    val s17 = builder.add(g17, (f: M17 ⇒ Any, m17: M17) ⇒ f(m17))
    val s18 = builder.add(g18, (f: M18 ⇒ Any, m18: M18) ⇒ f(m18))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12], g13: Graph[Shape, M13], g14: Graph[Shape, M14], g15: Graph[Shape, M15], g16: Graph[Shape, M16], g17: Graph[Shape, M17], g18: Graph[Shape, M18], g19: Graph[Shape, M19])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape, g13.Shape, g14.Shape, g15.Shape, g16.Shape, g17.Shape, g18.Shape, g19.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s13 = builder.add(g13, (f: M13 ⇒ Any, m13: M13) ⇒ f(m13))
    val s14 = builder.add(g14, (f: M14 ⇒ Any, m14: M14) ⇒ f(m14))
    val s15 = builder.add(g15, (f: M15 ⇒ Any, m15: M15) ⇒ f(m15))
    val s16 = builder.add(g16, (f: M16 ⇒ Any, m16: M16) ⇒ f(m16))
    val s17 = builder.add(g17, (f: M17 ⇒ Any, m17: M17) ⇒ f(m17))
    val s18 = builder.add(g18, (f: M18 ⇒ Any, m18: M18) ⇒ f(m18))
    val s19 = builder.add(g19, (f: M19 ⇒ Any, m19: M19) ⇒ f(m19))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19, M20](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12], g13: Graph[Shape, M13], g14: Graph[Shape, M14], g15: Graph[Shape, M15], g16: Graph[Shape, M16], g17: Graph[Shape, M17], g18: Graph[Shape, M18], g19: Graph[Shape, M19], g20: Graph[Shape, M20])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19, M20) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape, g13.Shape, g14.Shape, g15.Shape, g16.Shape, g17.Shape, g18.Shape, g19.Shape, g20.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s13 = builder.add(g13, (f: M13 ⇒ Any, m13: M13) ⇒ f(m13))
    val s14 = builder.add(g14, (f: M14 ⇒ Any, m14: M14) ⇒ f(m14))
    val s15 = builder.add(g15, (f: M15 ⇒ Any, m15: M15) ⇒ f(m15))
    val s16 = builder.add(g16, (f: M16 ⇒ Any, m16: M16) ⇒ f(m16))
    val s17 = builder.add(g17, (f: M17 ⇒ Any, m17: M17) ⇒ f(m17))
    val s18 = builder.add(g18, (f: M18 ⇒ Any, m18: M18) ⇒ f(m18))
    val s19 = builder.add(g19, (f: M19 ⇒ Any, m19: M19) ⇒ f(m19))
    val s20 = builder.add(g20, (f: M20 ⇒ Any, m20: M20) ⇒ f(m20))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19, M20, M21](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12], g13: Graph[Shape, M13], g14: Graph[Shape, M14], g15: Graph[Shape, M15], g16: Graph[Shape, M16], g17: Graph[Shape, M17], g18: Graph[Shape, M18], g19: Graph[Shape, M19], g20: Graph[Shape, M20], g21: Graph[Shape, M21])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19, M20, M21) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape, g13.Shape, g14.Shape, g15.Shape, g16.Shape, g17.Shape, g18.Shape, g19.Shape, g20.Shape, g21.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s13 = builder.add(g13, (f: M13 ⇒ Any, m13: M13) ⇒ f(m13))
    val s14 = builder.add(g14, (f: M14 ⇒ Any, m14: M14) ⇒ f(m14))
    val s15 = builder.add(g15, (f: M15 ⇒ Any, m15: M15) ⇒ f(m15))
    val s16 = builder.add(g16, (f: M16 ⇒ Any, m16: M16) ⇒ f(m16))
    val s17 = builder.add(g17, (f: M17 ⇒ Any, m17: M17) ⇒ f(m17))
    val s18 = builder.add(g18, (f: M18 ⇒ Any, m18: M18) ⇒ f(m18))
    val s19 = builder.add(g19, (f: M19 ⇒ Any, m19: M19) ⇒ f(m19))
    val s20 = builder.add(g20, (f: M20 ⇒ Any, m20: M20) ⇒ f(m20))
    val s21 = builder.add(g21, (f: M21 ⇒ Any, m21: M21) ⇒ f(m21))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21)

    createGraph(s, builder)
  }

  

  /**
   * Creates a new [[Graph]] by importing the given graphs and passing their [[Shape]]s
   * along with the [[GraphDSL.Builder]] to the given create function.
   */
  def create[S <: Shape, Mat, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19, M20, M21, M22](g1: Graph[Shape, M1], g2: Graph[Shape, M2], g3: Graph[Shape, M3], g4: Graph[Shape, M4], g5: Graph[Shape, M5], g6: Graph[Shape, M6], g7: Graph[Shape, M7], g8: Graph[Shape, M8], g9: Graph[Shape, M9], g10: Graph[Shape, M10], g11: Graph[Shape, M11], g12: Graph[Shape, M12], g13: Graph[Shape, M13], g14: Graph[Shape, M14], g15: Graph[Shape, M15], g16: Graph[Shape, M16], g17: Graph[Shape, M17], g18: Graph[Shape, M18], g19: Graph[Shape, M19], g20: Graph[Shape, M20], g21: Graph[Shape, M21], g22: Graph[Shape, M22])(combineMat: (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19, M20, M21, M22) ⇒ Mat)(buildBlock: GraphDSL.Builder[Mat] ⇒ (g1.Shape, g2.Shape, g3.Shape, g4.Shape, g5.Shape, g6.Shape, g7.Shape, g8.Shape, g9.Shape, g10.Shape, g11.Shape, g12.Shape, g13.Shape, g14.Shape, g15.Shape, g16.Shape, g17.Shape, g18.Shape, g19.Shape, g20.Shape, g21.Shape, g22.Shape) ⇒ S): Graph[S, Mat] = {
    val builder = new GraphDSL.Builder
    val curried = combineMat.curried
    val s1 = builder.add(g1, (m1: M1) ⇒ curried(m1))
    val s2 = builder.add(g2, (f: M2 ⇒ Any, m2: M2) ⇒ f(m2))
    val s3 = builder.add(g3, (f: M3 ⇒ Any, m3: M3) ⇒ f(m3))
    val s4 = builder.add(g4, (f: M4 ⇒ Any, m4: M4) ⇒ f(m4))
    val s5 = builder.add(g5, (f: M5 ⇒ Any, m5: M5) ⇒ f(m5))
    val s6 = builder.add(g6, (f: M6 ⇒ Any, m6: M6) ⇒ f(m6))
    val s7 = builder.add(g7, (f: M7 ⇒ Any, m7: M7) ⇒ f(m7))
    val s8 = builder.add(g8, (f: M8 ⇒ Any, m8: M8) ⇒ f(m8))
    val s9 = builder.add(g9, (f: M9 ⇒ Any, m9: M9) ⇒ f(m9))
    val s10 = builder.add(g10, (f: M10 ⇒ Any, m10: M10) ⇒ f(m10))
    val s11 = builder.add(g11, (f: M11 ⇒ Any, m11: M11) ⇒ f(m11))
    val s12 = builder.add(g12, (f: M12 ⇒ Any, m12: M12) ⇒ f(m12))
    val s13 = builder.add(g13, (f: M13 ⇒ Any, m13: M13) ⇒ f(m13))
    val s14 = builder.add(g14, (f: M14 ⇒ Any, m14: M14) ⇒ f(m14))
    val s15 = builder.add(g15, (f: M15 ⇒ Any, m15: M15) ⇒ f(m15))
    val s16 = builder.add(g16, (f: M16 ⇒ Any, m16: M16) ⇒ f(m16))
    val s17 = builder.add(g17, (f: M17 ⇒ Any, m17: M17) ⇒ f(m17))
    val s18 = builder.add(g18, (f: M18 ⇒ Any, m18: M18) ⇒ f(m18))
    val s19 = builder.add(g19, (f: M19 ⇒ Any, m19: M19) ⇒ f(m19))
    val s20 = builder.add(g20, (f: M20 ⇒ Any, m20: M20) ⇒ f(m20))
    val s21 = builder.add(g21, (f: M21 ⇒ Any, m21: M21) ⇒ f(m21))
    val s22 = builder.add(g22, (f: M22 ⇒ Any, m22: M22) ⇒ f(m22))
    val s = buildBlock(builder)(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22)

    createGraph(s, builder)
  }

  private def createGraph[S <: Shape, Mat](shape: S, graphBuilder: GraphDSL.Builder[Mat]): Graph[S, Mat] =
    new GenericGraph(shape, graphBuilder.result(shape))
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy