|
Scala example source code file (bug3636.scala)
The Scala bug3636.scala source codeclass CTxnLocal[ T ] { def set( x: T )( implicit t: Txn ) {} def get( implicit t: Txn ) : T = null.asInstanceOf[ T ] def initialValue( t: Txn ) : T = null.asInstanceOf[ T ] } trait Txn trait ProcTxn { def ccstm: Txn } trait TxnLocal[ @specialized T ] { def apply()( implicit tx: ProcTxn ) : T def set( v: T )( implicit tx: ProcTxn ) : Unit def swap( v: T )( implicit tx: ProcTxn ) : T def transform( f: T => T )( implicit tx: ProcTxn ) : Unit } object TxnLocal { def apply[ @specialized T ] : TxnLocal[ T ] = new Impl( new CTxnLocal[ T ]) def apply[ @specialized T ]( initValue: => T ) : TxnLocal[ T ] = new Impl( new CTxnLocal[ T ] { override def initialValue( tx: Txn ): T = initValue }) private class Impl[ T ]( c: CTxnLocal[ T ]) extends TxnLocal[ T ] { def apply()( implicit tx: ProcTxn ) : T = c.get( tx.ccstm ) def set( v: T )( implicit tx: ProcTxn ) : Unit = c.set( v )( tx.ccstm ) def swap( v: T )( implicit tx: ProcTxn ) : T = { // currently not implemented in CTxnLocal val oldV = apply set( v ) oldV } def transform( f: T => T )( implicit tx: ProcTxn ) { set( f( apply )) } } } object Transition { private val currentRef = TxnLocal[ Transition ]( Instant ) def current( implicit tx: ProcTxn ) : Transition = currentRef() } sealed abstract class Transition case object Instant extends Transition Other Scala examples (source code examples)Here is a short list of links related to this Scala bug3636.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.