-
Notifications
You must be signed in to change notification settings - Fork 0
/
DemoGrow.ulam
53 lines (46 loc) · 1.14 KB
/
DemoGrow.ulam
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
local typedef BondStatus BS;
local typedef EventWindow.SiteNum SiteNum;
/**
Insert a membrane atom (test)
\symbol DG
\color #caf7b7
*/
element DemoGrow : QMortal {
@Override Void behave() {
AtomUtils au;
BondStatus bs;
BondUtils bu;
DebugUtils dbg;
EventWindow ew;
EventWindowMisc ewm;
Membrane membrane;
// Find membrane
WindowServices ws;
ws.reset(1, 2);
if (!ws.scan(au.getType(membrane))) {
dbg.print("Membrane atom not found");
die();
return;
}
SiteNum site = ws.getPick();
// Make atom to insert
SiteNum insertSite = ewm.findEmptySiteAround(site, 1u, 2u);
if (insertSite == SiteNum.maxof) {
dbg.print("No empty site around membrane atom");
die();
return;
}
ew[insertSite] = membrane;
// Insert new atom
BS.Status status = bu.insertSeq(site, Membrane.cNEXT, insertSite);
if (!bs.isOk(status)) {
dbg.print("Failed to insert membrane atom, status:");
dbg.print(bs.toString(status));
Empty empty;
ew[insertSite] = empty;
} else {
dbg.print("New membrane atom inserted");
}
die();
}
}