summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2006-07-04 18:18:35 +0000
committerRich Hickey <richhickey@gmail.com>2006-07-04 18:18:35 +0000
commit299745acaf1cf2671c30915a2f6ac9a3fc8fca49 (patch)
tree6e5259511b01f3c3ce06fdbd067ac43311edf48c /src
parent45928ffe7f2b9e59633fb7931f2a3c75c9d6589f (diff)
made Obj attrs write-once
Diffstat (limited to 'src')
-rw-r--r--src/cli/runtime/Obj.cs12
-rw-r--r--src/jvm/clojure/lang/Obj.java14
2 files changed, 9 insertions, 17 deletions
diff --git a/src/cli/runtime/Obj.cs b/src/cli/runtime/Obj.cs
index 9f201cd7..d1d969c9 100644
--- a/src/cli/runtime/Obj.cs
+++ b/src/cli/runtime/Obj.cs
@@ -15,13 +15,13 @@ using System;
namespace clojure.lang
{
-public class Obj : IObj
-{
+public class Obj{
+
volatile IPersistentMap _attrs = PersistentArrayIdentityMap.EMPTY;
-public Object putAttr( Object key, Object val)
+public Object addAttr( Object key, Object val)
{
- _attrs = _attrs.put(key, val);
+ _attrs = _attrs.add(key, val);
return val;
}
@@ -38,10 +38,6 @@ public bool hasAttr( Object key){
public IPersistentMap attrs() {
return _attrs;
}
-
-public void removeAttr(Object key) {
- _attrs = _attrs.remove(key);
-}
}
diff --git a/src/jvm/clojure/lang/Obj.java b/src/jvm/clojure/lang/Obj.java
index 5714a4b4..f0f81976 100644
--- a/src/jvm/clojure/lang/Obj.java
+++ b/src/jvm/clojure/lang/Obj.java
@@ -12,15 +12,14 @@
package clojure.lang;
-public class Obj implements IObj {
+public class Obj {
volatile IPersistentMap _attrs = PersistentArrayIdentityMap.EMPTY;
-public Object putAttr( Object key, Object val)
- {
- _attrs = _attrs.put(key, val);
- return val;
- }
+public Object addAttr( Object key, Object val) throws Exception {
+ _attrs = _attrs.add(key, val);
+ return val;
+ }
public Object getAttr( Object key)
{
@@ -36,7 +35,4 @@ public IPersistentMap attrs() {
return _attrs;
}
-public void removeAttr(Object key) {
- _attrs = _attrs.remove(key);
-}
}