summaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/mossbar/concepts/Scope.java
blob: 68c5cc108fc52597baf2fb3629eef4d656673da0 (plain)
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
package moe.nea.mossbar.concepts;

import java.util.ArrayList;
import java.util.List;

public abstract class Scope implements ScopeObject {
    List<ScopeObject> scopedObjects = new ArrayList<>();

    public static Scope root() {
        return new Scope() {
        };
    }

    protected <T extends ScopeObject> T bind(T scopeObject) {
        scopedObjects.add(scopeObject);
        return scopeObject;
    }

    @Override
    public void closeObject() {
        for (int i = scopedObjects.size() - 1; i >= 0; i--) {
            ScopeObject scopeObject = scopedObjects.get(i);
            scopeObject.closeObject();
        }
    }

}