Mercurial > hg > Members > shoshi > TreeCMSv2
annotate src/treecms/memory/OnMemoryMonotonicTreeNode.java @ 27:aecc55e87143 default tip
test commit
author | Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 18 Aug 2011 17:37:03 +0900 |
parents | 9cb971a68cc5 |
children |
rev | line source |
---|---|
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
1 package treecms.memory; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
2 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
3 import java.nio.ByteBuffer; |
22 | 4 import java.util.ArrayList; |
5 import java.util.Collections; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
6 import java.util.Iterator; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
7 import java.util.List; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
8 import java.util.Map; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
9 import java.util.Set; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
10 import treecms.api.MonotonicTreeNode; |
21 | 11 import treecms.api.Node; |
15 | 12 import treecms.api.NodeAttributes; |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
13 import treecms.api.NodeID; |
16 | 14 import treecms.tree.util.NodeData; |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
15 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
16 public class OnMemoryMonotonicTreeNode implements MonotonicTreeNode |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
17 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
18 private final OnMemoryMonotonicTreeNode m_parent; |
27 | 19 private volatile OnMemoryNode m_node; |
23 | 20 |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
21 public OnMemoryMonotonicTreeNode(OnMemoryNode _node,OnMemoryMonotonicTreeNode _parent) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
22 { |
25 | 23 m_node = _node; |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
24 m_parent = _parent; |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
25 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
26 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
27 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
28 public NodeID getID() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
29 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
30 return m_node.getID(); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
31 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
32 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
33 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
34 public MonotonicTreeNode getParent() |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
35 { |
25 | 36 return m_parent; |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
37 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
38 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
39 @Override |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
40 public ByteBuffer get(ByteBuffer _key) |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
41 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
42 return m_node.get(_key); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
43 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
44 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
45 @Override |
15 | 46 public NodeAttributes getAll() |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
47 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
48 return m_node.getAll(); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
49 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
50 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
51 @Override |
25 | 52 public void put(ByteBuffer _key, ByteBuffer _value) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
53 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
54 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
17 | 55 d.put(_key,_value); |
56 | |
57 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
58 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
59 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
60 @Override |
25 | 61 public void putAll(NodeAttributes _map) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
62 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
63 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
17 | 64 d.putAll(_map); |
65 | |
66 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
67 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
68 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
69 @Override |
25 | 70 public void remove(ByteBuffer _key) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
71 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
72 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
17 | 73 d.remove(_key); |
74 | |
75 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
76 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
77 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
78 @Override |
25 | 79 public void removeAll(Set<ByteBuffer> _keys) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
80 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
81 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
16 | 82 d.removeAll(_keys); |
83 | |
84 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
85 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
86 |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
87 @Override |
25 | 88 public void clearAttributes() |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
89 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
90 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
16 | 91 d.clearAttributes(); |
92 | |
93 cloneAndTransmit(d); | |
94 } | |
95 | |
25 | 96 public void cloneAndTransmit(NodeData<Node> _d) |
16 | 97 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
98 NodeID newID = m_node.getID().update(); |
25 | 99 OnMemoryNode clone = new OnMemoryNode(newID,_d); |
23 | 100 |
101 OnMemoryMonotonicTreeNode parent = (OnMemoryMonotonicTreeNode)getParent(); | |
102 if(parent != null){ | |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
103 parent.transmit(m_node,clone); |
23 | 104 } |
25 | 105 |
106 m_node = clone; | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
107 } |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
108 |
25 | 109 public boolean transmit(Node _orig,Node _edit) |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
110 { |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
111 NodeData<Node> d = new NodeData<Node>(m_node,m_node); |
22 | 112 d.replace(_edit); |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
113 NodeID newID = m_node.getID().update(); |
25 | 114 OnMemoryNode clone = new OnMemoryNode(newID,d); |
22 | 115 |
25 | 116 m_node = clone; |
22 | 117 OnMemoryMonotonicTreeNode parent = (OnMemoryMonotonicTreeNode)getParent(); |
118 if(parent != null){ | |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
119 return m_parent.transmit(m_node,clone); |
27 | 120 }else{ |
121 | |
20 | 122 } |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
123 |
22 | 124 return true; |
20 | 125 } |
126 | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
127 @Override |
25 | 128 public Node getNode() |
21 | 129 { |
25 | 130 return m_node; |
21 | 131 } |
132 | |
133 @Override | |
25 | 134 public List<MonotonicTreeNode> getList() |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
135 { |
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
136 //NodeのリストよりMonotonicTreeNodeのリストを作成する. |
25 | 137 OnMemoryNode node = (OnMemoryNode)getNode(); |
22 | 138 int size = node.getList().size(); |
139 ArrayList<MonotonicTreeNode> list = new ArrayList<MonotonicTreeNode>(size); | |
140 for(Iterator<Node> it = node.getList().iterator();it.hasNext();){ | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
141 OnMemoryNode n = (OnMemoryNode)it.next(); |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
142 OnMemoryMonotonicTreeNode tn = new OnMemoryMonotonicTreeNode(n,this); |
25 | 143 list.add(tn); |
17 | 144 } |
145 | |
23 | 146 return Collections.unmodifiableList(list); |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
147 } |
22 | 148 |
25 | 149 @Override |
150 public MonotonicTreeNode remove(int _index) | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
151 { |
25 | 152 OnMemoryNode n = (OnMemoryNode)getNode(); |
153 NodeData<Node> d = new NodeData<Node>(n,n); | |
154 OnMemoryNode deleted = (OnMemoryNode)d.remove(_index); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
155 |
25 | 156 if(deleted != null){ |
17 | 157 cloneAndTransmit(d); |
22 | 158 |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
159 OnMemoryMonotonicTreeNode tn = new OnMemoryMonotonicTreeNode(deleted,null); |
22 | 160 return tn; |
17 | 161 } |
162 | |
163 return null; | |
15 | 164 } |
22 | 165 |
15 | 166 @Override |
25 | 167 public void clearChildren() |
15 | 168 { |
25 | 169 OnMemoryNode node = (OnMemoryNode)getNode(); |
170 if(node.getList().size() == 0){ | |
171 return; | |
172 } | |
173 | |
22 | 174 NodeData<Node> d = new NodeData<Node>(node,node); |
20 | 175 d.clearChildren(); |
17 | 176 |
177 cloneAndTransmit(d); | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
178 } |
16 | 179 |
180 @Override | |
181 public Map<ByteBuffer, ByteBuffer> asMap() | |
182 { | |
25 | 183 OnMemoryNode node = (OnMemoryNode)getNode(); |
22 | 184 return node.asMap(); |
16 | 185 } |
186 | |
187 @Override | |
188 public Set<ByteBuffer> getKeySet() | |
189 { | |
25 | 190 OnMemoryNode node = (OnMemoryNode)getNode(); |
22 | 191 return node.getKeySet(); |
16 | 192 } |
193 | |
194 @Override | |
25 | 195 public MonotonicTreeNode get(int _index) |
16 | 196 { |
25 | 197 OnMemoryNode node = (OnMemoryNode)getNode(); |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
198 OnMemoryMonotonicTreeNode tn = new OnMemoryMonotonicTreeNode(node,this); |
25 | 199 return tn; |
16 | 200 } |
201 | |
202 @Override | |
20 | 203 public boolean contains(NodeID _id) |
16 | 204 { |
25 | 205 OnMemoryNode node = (OnMemoryNode)getNode(); |
22 | 206 return node.contains(_id); |
16 | 207 } |
208 | |
209 @Override | |
20 | 210 public boolean swap(String _fid1,String _fid2) |
211 { | |
25 | 212 OnMemoryNode node = (OnMemoryNode)getNode(); |
213 NodeData<Node> d = new NodeData<Node>(node,node); | |
214 | |
215 if(d.swap(_fid1,_fid2)){ | |
216 cloneAndTransmit(d); | |
217 | |
218 return true; | |
219 } | |
220 | |
221 return false; | |
20 | 222 } |
223 | |
224 @Override | |
225 public Set<String> getFamilyIDSet() | |
226 { | |
25 | 227 Set<String> fids = m_node.getFamilyIDSet(); |
228 return fids; | |
20 | 229 } |
230 | |
231 @Override | |
25 | 232 public MonotonicTreeNode get(String _fid) |
16 | 233 { |
25 | 234 OnMemoryNode node = (OnMemoryNode)m_node.get(_fid); |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
235 OnMemoryMonotonicTreeNode mono = new OnMemoryMonotonicTreeNode(node,this); |
20 | 236 return mono; |
237 } | |
238 | |
239 @Override | |
25 | 240 public MonotonicTreeNode remove(String _fid) |
20 | 241 { |
25 | 242 OnMemoryNode node = (OnMemoryNode)getNode(); |
22 | 243 |
244 NodeData<Node> d = new NodeData<Node>(node,node); | |
25 | 245 OnMemoryNode deleted = (OnMemoryNode)d.remove(_fid); |
20 | 246 |
247 cloneAndTransmit(d); | |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
248 return new OnMemoryMonotonicTreeNode(deleted,null); |
22 | 249 } |
250 | |
251 @Override | |
25 | 252 public MonotonicTreeNode create(NodeAttributes _attr) |
22 | 253 { |
254 NodeID newID = getNode().getID().create(); | |
25 | 255 OnMemoryNode newNode = new OnMemoryNode(newID,new NodeData<Node>(null,_attr)); |
20 | 256 |
22 | 257 OnMemoryNode thisNode = (OnMemoryNode)getNode(); |
258 NodeData<Node> d = new NodeData<Node>(thisNode,thisNode); | |
259 d.add(newNode); | |
23 | 260 cloneAndTransmit(d); |
261 | |
26
9cb971a68cc5
added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
25
diff
changeset
|
262 OnMemoryMonotonicTreeNode tn = new OnMemoryMonotonicTreeNode(newNode,this); |
23 | 263 return tn; |
16 | 264 } |
25 | 265 |
266 @Override | |
267 public String toString() | |
268 { | |
269 return m_node.toString(); | |
270 } | |
12
fbbb7e414346
modified OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNode
shoshi
parents:
diff
changeset
|
271 } |