Transpiled version (8439L) is out of date.
// Always thread-safe sclass FixedVarContext > VarContext { S[] names; // always sorted, may be null O[] values; // same length as names, may also be null *() {} *(S[] *names) { this(null, names); } *(VarContext parent, S[] *names) { super(parent); if (names != null) values = new O[names.length]; } int indexOfVar(S name) { ret indexOfInSortedArray(names, name); } int indexOfVarMandatory(S name) { int idx = indexOfVar(name); if (idx < 0) fail("Variable not found: " + name + ", known: " + joinWithComma(names)); ret idx; } O get(int idx) { ret values[idx]; } O get(S name) { int idx = indexOfVar(name); if (idx >= 0) ret values[idx]; if (parent != null) ret parent.get(name); null; } void set(int idx, O value) { values[idx] = value; } void set(S name, O value) { int idx = indexOfVar(name); if (idx >= 0) values[idx] = value; else fail("Variable " + name + " not defined in context"); } AutoCloseable tempSet(S name, O value) { int idx = indexOfVar(name); if (idx >= 0) { O old = values[idx]; values[idx] = value; ret -> values[idx] = old; } else fail("Variable " + name + " not defined in context"); } void unset(S name) { set(name, null); } MapSO varMap() { new MapSO map; int n = l(names); for i to n: map.put(names[i], values[i]); ret map; } }
Began life as a copy of #1033977
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, ekrmjmnbrukm, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
| Snippet ID: | #1035284 |
| Snippet name: | FixedVarContext - a VarContext with a fixed number of variables |
| Eternal ID of this version: | #1035284/4 |
| Text MD5: | 0a34952a70be15bb30ce0922bd459212 |
| Author: | stefan |
| Category: | javax / parsing |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2022-04-29 00:32:06 |
| Source code size: | 1536 bytes / 68 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 587 / 697 |
| Version history: | 3 change(s) |
| Referenced in: | [show references] |