summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorcremet <cremet@epfl.ch>2003-10-21 13:27:26 +0000
committercremet <cremet@epfl.ch>2003-10-21 13:27:26 +0000
commit1be7ad1e4dd7444ee6082b47fe90ecefa9ae6c43 (patch)
treea4e7f611e1b17e5d9360fdb265a3ee855f883d0a /sources
parentfe8f946e8767926357d2ef2f29451f840687f72f (diff)
downloadscala-1be7ad1e4dd7444ee6082b47fe90ecefa9ae6c43.tar.gz
scala-1be7ad1e4dd7444ee6082b47fe90ecefa9ae6c43.tar.bz2
scala-1be7ad1e4dd7444ee6082b47fe90ecefa9ae6c43.zip
- Made the Ref class polymorphic.
Diffstat (limited to 'sources')
-rw-r--r--sources/examples/jolib/Ref.scala20
1 files changed, 11 insertions, 9 deletions
diff --git a/sources/examples/jolib/Ref.scala b/sources/examples/jolib/Ref.scala
index 09846b4bd6..5e2b955bb7 100644
--- a/sources/examples/jolib/Ref.scala
+++ b/sources/examples/jolib/Ref.scala
@@ -1,21 +1,23 @@
-import concurrent.jolib._;
import concurrent.SyncVar;
+import concurrent.jolib._;
-class Ref(init: int) extends Join {
+class Ref[a](init: a) extends Join {
- object get extends Synchr[int](this) { case class C() extends SyncVar[int]; }
- object set extends Synchr[unit](this) { case class C(x: int) extends SyncVar[unit]; }
- object state extends Asynchr(this) { case class C(x: int); }
+ object get extends Synchr[a](this) { case class C() extends SyncVar[a]; }
+ object set extends Synchr[unit](this) { case class C(x: a) extends SyncVar[unit]; }
+ object state extends Asynchr(this) { case class C(x: a); }
rules (
- Pair(List(get, state), { case List(g @ get.C(), state.C(x) ) => { g.set(x); state.send(state.C(x)) } }),
- Pair(List(set, state), { case List(s @ set.C(x), state.C(y) ) => { s.set(()); state.send(state.C(x)) } })
+ Pair(List(get, state), { case List(g @ get.C(), state.C(x) ) =>
+ { g.set(x); state.send(state.C(x)) } }),
+ Pair(List(set, state), { case List(s @ set.C(x), state.C(y) ) =>
+ { s.set(()); state.send(state.C(x)) } })
);
state.send(state.C(init));
- def Get: int = get.send(get.C());
- def Set(x: int): unit = set.send(set.C(x));
+ def Get: a = get.send(get.C());
+ def Set(x: a): unit = set.send(set.C(x));
}
object RefTest {