Created
May 31, 2021 19:44
-
-
Save hilltracer/195c4e7186e4889b5e6c9ef6561e7bb1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package coop.rchain.models_no_proto | |
import coop.rchain.models.BitSetBytesMapper.bitSetBytesMapper | |
/** * | |
* Rholang process | |
* | |
* For example, `@0!(1) | @2!(3) | for(x <- @0) { Nil }` has two sends | |
* and one receive. | |
* | |
* The Nil process is a `Par` with no sends, receives, etc. | |
* | |
* @param unforgeables | |
* unforgeable names | |
*/ | |
final case class Par( | |
sends: Seq[Send] = Seq.empty, | |
receives: Seq[Receive] = Seq.empty, | |
news: Seq[New] = Seq.empty, | |
exprs: Seq[Expr] = Seq.empty, | |
matches: Seq[Match] = Seq.empty, | |
unforgeables: Seq[GUnforgeable] = Seq.empty, | |
bundles: Seq[Bundle] = Seq.empty, | |
connectives: Seq[Connective] = Seq.empty, | |
locallyFree: coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] = | |
RhoTypes_val._typemapper_locallyFree | |
.toCustom(_root_.com.google.protobuf.ByteString.EMPTY), | |
connectiveUsed: Boolean = false | |
) | |
object Par { | |
lazy val defaultInstance = Par( | |
sends = Seq.empty, | |
receives = Seq.empty, | |
news = Seq.empty, | |
exprs = Seq.empty, | |
matches = Seq.empty, | |
unforgeables = Seq.empty, | |
bundles = Seq.empty, | |
connectives = Seq.empty, | |
locallyFree = | |
RhoTypes_val._typemapper_locallyFree.toCustom(_root_.com.google.protobuf.ByteString.EMPTY), | |
connectiveUsed = false | |
) | |
} | |
/** * | |
* Either rholang code or code built in to the interpreter. | |
*/ | |
final case class TaggedContinuation( | |
taggedCont: coop.rchain.models.TaggedContinuation.TaggedCont = | |
coop.rchain.models.TaggedContinuation.TaggedCont.Empty | |
) | |
/** * | |
* Rholang code along with the state of a split random number | |
* generator for generating new unforgeable names. | |
*/ | |
final case class ParWithRandom( | |
body: Par = Par.defaultInstance, | |
randomState: coop.rchain.crypto.hash.Blake2b512Random = | |
RhoTypes_val._typemapper_randomState.toCustom(_root_.com.google.protobuf.ByteString.EMPTY) | |
) | |
/** * | |
* Cost of the performed operations. | |
*/ | |
final case class PCost( | |
cost: Long = 0L | |
) | |
final case class ListParWithRandom( | |
pars: Seq[Par] = Seq.empty, | |
randomState: coop.rchain.crypto.hash.Blake2b512Random = RhoTypes_val._typemapper_randomState | |
.toCustom(_root_.com.google.protobuf.ByteString.EMPTY) | |
) | |
/** While we use vars in both positions, when producing the normalized | |
* representation we need a discipline to track whether a var is a name or a | |
* process. | |
* These are DeBruijn levels | |
*/ | |
final case class Var( | |
varInstance: coop.rchain.models.Var.VarInstance = coop.rchain.models.Var.VarInstance.Empty | |
) | |
object Var { | |
lazy val defaultInstance = Var( | |
varInstance = coop.rchain.models.Var.VarInstance.Empty | |
) | |
} | |
/** * | |
* Nothing can be received from a (quoted) bundle with `readFlag = false`. | |
* Likeise nothing can be sent to a (quoted) bundle with `writeFlag = false`. | |
* | |
* If both flags are set to false, bundle allows only for equivalance check. | |
* | |
* @param writeFlag | |
* flag indicating whether bundle is writeable | |
* @param readFlag | |
* flag indicating whether bundle is readable | |
*/ | |
final case class Bundle( | |
body: Par = Par.defaultInstance, | |
writeFlag: Boolean = false, | |
readFlag: Boolean = false | |
) | |
/** * | |
* A send is written `chan!(data)` or `chan!!(data)` for a persistent send. | |
* | |
* Upon send, all free variables in data are substituted with their values. | |
*/ | |
final case class Send( | |
chan: Par = Par.defaultInstance, | |
data: Seq[Par] = Seq.empty, | |
persistent: Boolean = false, | |
locallyFree: coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] = | |
RhoTypes_val._typemapper_locallyFree.toCustom(_root_.com.google.protobuf.ByteString.EMPTY), | |
connectiveUsed: Boolean = false | |
) | |
final case class ReceiveBind( | |
patterns: Seq[Par] = Seq.empty, | |
source: Par = Par.defaultInstance, | |
remainder: Option[Var] = None, | |
freeCount: Int = 0 | |
) | |
final case class ListBindPatterns( | |
patterns: Seq[BindPattern] = Seq.empty | |
) | |
final case class BindPattern( | |
patterns: Seq[Par] = Seq.empty, | |
remainder: Option[Var] = None, | |
freeCount: Int = 0 | |
) | |
/** * | |
* A receive is written `for(binds) { body }` | |
* i.e. `for(patterns <- source) { body }` | |
* or for a persistent recieve: `for(patterns <= source) { body }`. | |
* | |
* It's an error for free Variable to occur more than once in a pattern. | |
*/ | |
final case class Receive( | |
binds: Seq[ReceiveBind] = Seq.empty, | |
body: Par = Par.defaultInstance, | |
persistent: Boolean = false, | |
peek: Boolean = false, | |
bindCount: Int = 0, | |
locallyFree: coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] = | |
RhoTypes_val._typemapper_locallyFree.toCustom(_root_.com.google.protobuf.ByteString.EMPTY), | |
connectiveUsed: Boolean = false | |
) | |
/** Number of variables bound in the new statement. | |
* For normalized form, p should not contain solely another new. | |
* Also for normalized form, the first use should be level+0, next use level+1 | |
* up to level+count for the last used variable. | |
* | |
* @param bindCount | |
* Includes any uris listed below. This makes it easier to substitute or walk a term. | |
* @param uri | |
* For normalization, uri-referenced variables come at the end, and in lexicographical order. | |
*/ | |
final case class New( | |
bindCount: Int = 0, | |
p: Par = Par.defaultInstance, | |
uri: Seq[String] = Seq.empty, | |
injections: Map[String, Par] = Map.empty, | |
locallyFree: coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] = | |
RhoTypes_val._typemapper_locallyFree.toCustom(_root_.com.google.protobuf.ByteString.EMPTY) | |
) | |
final case class MatchCase( | |
pattern: Par = Par.defaultInstance, | |
source: Par = Par.defaultInstance, | |
freeCount: Int = 0 | |
) | |
final case class Match( | |
target: Par = Par.defaultInstance, | |
cases: Seq[MatchCase] = Seq.empty, | |
locallyFree: coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] = | |
RhoTypes_val._typemapper_locallyFree.toCustom(_root_.com.google.protobuf.ByteString.EMPTY), | |
connectiveUsed: Boolean = false | |
) | |
/** Any process may be an operand to an expression. | |
* Only processes equivalent to a ground process of compatible type will reduce. | |
*/ | |
final case class Expr( | |
exprInstance: coop.rchain.models.Expr.ExprInstance = coop.rchain.models.Expr.ExprInstance.Empty | |
) | |
object Expr { | |
sealed trait ExprInstance extends _root_.scalapb.GeneratedOneof { | |
def gBool: Option[Boolean] = None | |
def gInt: Option[Long] = None | |
def gString: Option[String] = None | |
def gUri: Option[String] = None | |
def gByteArray: Option[_root_.com.google.protobuf.ByteString] = None | |
def eNotBody: Option[ENot] = None | |
def eNegBody: Option[ENeg] = None | |
def eMultBody: Option[EMult] = None | |
def eDivBody: Option[EDiv] = None | |
def ePlusBody: Option[EPlus] = None | |
def eMinusBody: Option[EMinus] = None | |
def eLtBody: Option[ELt] = None | |
def eLteBody: Option[ELte] = None | |
def eGtBody: Option[EGt] = None | |
def eGteBody: Option[EGte] = None | |
def eEqBody: Option[EEq] = None | |
def eNeqBody: Option[ENeq] = None | |
def eAndBody: Option[EAnd] = None | |
def eOrBody: Option[EOr] = None | |
def eVarBody: Option[EVar] = None | |
def eListBody: Option[EList] = None | |
def eTupleBody: Option[ETuple] = None | |
def eSetBody: Option[coop.rchain.models.ParSet] = None | |
def eMapBody: Option[coop.rchain.models.ParMap] = None | |
def eMethodBody: Option[EMethod] = None | |
def eMatchesBody: Option[EMatches] = None | |
def ePercentPercentBody: Option[EPercentPercent] = None | |
def ePlusPlusBody: Option[EPlusPlus] = None | |
def eMinusMinusBody: Option[EMinusMinus] = None | |
def eModBody: Option[EMod] = None | |
} | |
object ExprInstance { | |
case object Empty | |
final case class GBool(value: Boolean) | |
final case class GInt(value: Long) | |
final case class GString(value: String) | |
final case class GUri(value: String) | |
final case class GByteArray(value: _root_.com.google.protobuf.ByteString) | |
final case class ENotBody(value: ENot) | |
final case class ENegBody(value: ENeg) | |
final case class EMultBody(value: EMult) | |
final case class EDivBody(value: EDiv) | |
final case class EPlusBody(value: EPlus) | |
final case class EMinusBody(value: EMinus) | |
final case class ELtBody(value: ELt) | |
final case class ELteBody(value: ELte) | |
final case class EGtBody(value: EGt) | |
final case class EGteBody(value: EGte) | |
final case class EEqBody(value: EEq) | |
final case class ENeqBody(value: ENeq) | |
final case class EAndBody(value: EAnd) | |
final case class EOrBody(value: EOr) | |
final case class EVarBody(value: EVar) | |
final case class EListBody(value: EList) | |
final case class ETupleBody(value: ETuple) | |
final case class ESetBody(value: coop.rchain.models.ParSet) | |
final case class EMapBody(value: coop.rchain.models.ParMap) | |
final case class EMethodBody(value: EMethod) | |
final case class EMatchesBody(value: EMatches) | |
final case class EPercentPercentBody(value: EPercentPercent) | |
final case class EPlusPlusBody(value: EPlusPlus) | |
final case class EMinusMinusBody(value: EMinusMinus) | |
final case class EModBody(value: EMod) | |
} | |
} | |
final case class EList( | |
ps: Seq[Par] = Seq.empty, | |
locallyFree: coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] = | |
RhoTypes_val._typemapper_locallyFree.toCustom(_root_.com.google.protobuf.ByteString.EMPTY), | |
connectiveUsed: Boolean = false, | |
remainder: Option[Var] = None | |
) | |
final case class ETuple( | |
ps: Seq[Par] = Seq.empty, | |
locallyFree: coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] = | |
RhoTypes_val._typemapper_locallyFree.toCustom(_root_.com.google.protobuf.ByteString.EMPTY), | |
connectiveUsed: Boolean = false | |
) | |
final case class ESet( | |
ps: Seq[Par] = Seq.empty, | |
locallyFree: coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] = | |
RhoTypes_val._typemapper_locallyFree.toCustom(_root_.com.google.protobuf.ByteString.EMPTY), | |
connectiveUsed: Boolean = false, | |
remainder: Option[Var] = None | |
) | |
final case class EMap( | |
kvs: Seq[KeyValuePair] = Seq.empty, | |
locallyFree: coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] = | |
RhoTypes_val._typemapper_locallyFree.toCustom(_root_.com.google.protobuf.ByteString.EMPTY), | |
connectiveUsed: Boolean = false, | |
remainder: Option[Var] = None | |
) | |
/** * | |
* `target.method(arguments)` | |
*/ | |
final case class EMethod( | |
methodName: String = "", | |
target: Par = Par.defaultInstance, | |
arguments: Seq[Par] = Seq.empty, | |
locallyFree: coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] = | |
RhoTypes_val._typemapper_locallyFree.toCustom(_root_.com.google.protobuf.ByteString.EMPTY), | |
connectiveUsed: Boolean = false | |
) | |
final case class KeyValuePair( | |
key: Par = Par.defaultInstance, | |
value: Par = Par.defaultInstance | |
) | |
/** A variable used as a var should be bound in a process context, not a name | |
* context. For example: | |
* `for (@x <- c1; @y <- c2) { z!(x + y) }` is fine, but | |
* `for (x <- c1; y <- c2) { z!(x + y) }` should raise an error. | |
*/ | |
final case class EVar( | |
v: Var = Var.defaultInstance | |
) | |
final case class ENot( | |
p: Par = Par.defaultInstance | |
) | |
final case class ENeg( | |
p: Par = Par.defaultInstance | |
) | |
final case class EMult( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class EDiv( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class EMod( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class EPlus( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class EMinus( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class ELt( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class ELte( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class EGt( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class EGte( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class EEq( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class ENeq( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class EAnd( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class EOr( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class EMatches( | |
target: Par = Par.defaultInstance, | |
pattern: Par = Par.defaultInstance | |
) | |
/** * | |
* String interpolation | |
* | |
* `"Hello, {name}" %% {"name": "Bob"}` denotes `"Hello, Bob"` | |
*/ | |
final case class EPercentPercent( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
/** Concatenation | |
*/ | |
final case class EPlusPlus( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
/** Set difference | |
*/ | |
final case class EMinusMinus( | |
p1: Par = Par.defaultInstance, | |
p2: Par = Par.defaultInstance | |
) | |
final case class Connective( | |
connectiveInstance: Connective.ConnectiveInstance = Connective.ConnectiveInstance.Empty | |
) | |
object Connective { | |
sealed trait ConnectiveInstance { | |
def connAndBody: Option[ConnectiveBody] = None | |
def connOrBody: Option[ConnectiveBody] = None | |
def connNotBody: Option[Par] = None | |
def varRefBody: Option[VarRef] = None | |
def connBool: Option[Boolean] = None | |
def connInt: Option[Boolean] = None | |
def connString: Option[Boolean] = None | |
def connUri: Option[Boolean] = None | |
def connByteArray: Option[Boolean] = None | |
} | |
object ConnectiveInstance { | |
case object Empty extends ConnectiveInstance | |
final case class ConnAndBody(value: ConnectiveBody) extends ConnectiveInstance | |
final case class ConnOrBody(value: ConnectiveBody) extends ConnectiveInstance | |
final case class ConnNotBody(value: Par) extends ConnectiveInstance | |
final case class VarRefBody(value: VarRef) extends ConnectiveInstance | |
final case class ConnBool(value: Boolean) extends ConnectiveInstance | |
final case class ConnInt(value: Boolean) extends ConnectiveInstance | |
final case class ConnString(value: Boolean) extends ConnectiveInstance | |
final case class ConnUri(value: Boolean) extends ConnectiveInstance | |
final case class ConnByteArray(value: Boolean) extends ConnectiveInstance | |
} | |
} | |
final case class VarRef( | |
index: Int = 0, | |
depth: Int = 0 | |
) | |
final case class ConnectiveBody( | |
ps: Seq[Par] = Seq.empty | |
) | |
final case class DeployId( | |
sig: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY | |
) | |
final case class DeployerId( | |
publicKey: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY | |
) | |
final case class GUnforgeable( | |
unfInstance: coop.rchain.models.GUnforgeable.UnfInstance = | |
coop.rchain.models.GUnforgeable.UnfInstance.Empty | |
) | |
object GUnforgeable { | |
sealed trait UnfInstance { | |
def gPrivateBody: Option[GPrivate] = None | |
def gDeployIdBody: Option[GDeployId] = None | |
def gDeployerIdBody: Option[GDeployerId] = None | |
def gSysAuthTokenBody: Option[GSysAuthToken] = None | |
} | |
object UnfInstance { | |
case object Empty extends UnfInstance | |
final case class GPrivateBody(value: GPrivate) extends UnfInstance | |
final case class GDeployIdBody(value: GDeployId) extends UnfInstance | |
final case class GDeployerIdBody(value: GDeployerId) extends UnfInstance | |
final case class GSysAuthTokenBody(value: GSysAuthToken) extends UnfInstance | |
} | |
} | |
final case class GPrivate( | |
id: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY | |
) | |
final case class GDeployId( | |
sig: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY | |
) | |
final case class GDeployerId( | |
publicKey: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY | |
) | |
final case class GSysAuthToken() | |
object RhoTypes_val { | |
val _typemapper_locallyFree: _root_.scalapb.TypeMapper[ | |
_root_.com.google.protobuf.ByteString, | |
coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] | |
] = implicitly[_root_.scalapb.TypeMapper[ | |
_root_.com.google.protobuf.ByteString, | |
coop.rchain.models.AlwaysEqual[scala.collection.immutable.BitSet] | |
]] | |
val _typemapper_randomState: _root_.scalapb.TypeMapper[ | |
_root_.com.google.protobuf.ByteString, | |
coop.rchain.crypto.hash.Blake2b512Random | |
] = implicitly[_root_.scalapb.TypeMapper[ | |
_root_.com.google.protobuf.ByteString, | |
coop.rchain.crypto.hash.Blake2b512Random | |
]] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment