82 |
* (i.e., has a connection on d..contain-list, or |
* (i.e., has a connection on d..contain-list, or |
83 |
* a connection negwards on d.contain). |
* a connection negwards on d.contain). |
84 |
*/ |
*/ |
85 |
public static void addContainedCell(Cell add, Cell into) |
public static void addContainedCell(Cell into, Cell add) |
86 |
throws IllegalArgumentException { |
throws IllegalArgumentException { |
87 |
|
Dim d_contain = into.space.getDim(Ids.d_contain); |
88 |
|
Dim d_contain_list = into.space.getDim(Ids.d_contain_list); |
89 |
|
|
90 |
|
if(add.s(d_contain, -1) != null || |
91 |
|
add.s(d_contain_list, -1) != null || |
92 |
|
add.s(d_contain_list) != null) { |
93 |
|
throw new IllegalArgumentException("Already contained: "+add); |
94 |
|
} |
95 |
|
|
96 |
|
if(into.s(d_contain) == null) |
97 |
|
into.connect(d_contain, add); |
98 |
|
else { |
99 |
|
Cell c = into.s(d_contain, 1); |
100 |
|
while(c.s(d_contain_list) != null && |
101 |
|
c.s(d_contain_list).s(d_contain, -1) == null) { |
102 |
|
c = c.s(d_contain_list); |
103 |
|
} |
104 |
|
c.insert(d_contain_list, 1, add); |
105 |
|
} |
106 |
} |
} |
107 |
} |
} |