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

scala.scalanative.nir.parser.Attr.scala Maven / Gradle / Ivy

The newest version!
package scala.scalanative
package nir
package parser

import fastparse.all._

object Attr extends Base[nir.Attr] {

  import Base._
  import IgnoreWhitespace._

  val MayInline    = P("mayinline".! map (_ => nir.Attr.MayInline))
  val InlineHint   = P("inlinehint".! map (_ => nir.Attr.InlineHint))
  val NoInline     = P("noinline".! map (_ => nir.Attr.NoInline))
  val AlwaysInline = P("alwaysinline".! map (_ => nir.Attr.AlwaysInline))
  val Dyn          = P("dyn".! map (_ => nir.Attr.Dyn))
  val Align        = P(("align(" ~ int ~ ")") map (nir.Attr.Align(_)))
  val Pure         = P("pure".! map (_ => nir.Attr.Pure))
  val Extern       = P("extern".! map (_ => nir.Attr.Extern))
  val Override =
    P("override(" ~ Global.parser ~ ")" map (nir.Attr.Override(_)))
  val Link      = P("link(" ~ qualifiedId ~ ")" map (nir.Attr.Link(_)))
  val PinAlways = P("pin(" ~ Global.parser ~ ")" map (nir.Attr.PinAlways(_)))
  val PinIf =
    P("pin-if(" ~ Global.parser ~ "," ~ Global.parser ~ ")" map {
      case (name, cond) => nir.Attr.PinIf(name, cond)
    })
  val PinWeak = P("pin-weak(" ~ Global.parser ~ ")" map (nir.Attr.PinWeak(_)))

  override val parser: P[nir.Attr] =
    MayInline | InlineHint | NoInline | AlwaysInline | Dyn | Align | Pure | Extern | Override | Link | PinAlways | PinIf | PinWeak

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy