aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/backends/targets/ShedTarget.java
blob: e65129b58aad6e5c935c2f90b6b4a42286e3362a (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package org.shedlang.compiler.backends.targets;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

public enum ShedTarget {
    AMD64("amd64"),
    I686("i686"),
    WASM32("wasm32"),
    WASM64("wasm64"),
    PATIO_NATIVE_C_HEADERS("patio-native-c-headers"),
    PATIO_TEXT("patio-text"),
    SHID_TEXT("shid-text");

    public static List<String> targetNames() {
        return Arrays.stream(ShedTarget.class.getEnumConstants())
            .map(ShedTarget::targetName)
            .toList();
    }

    public static Optional<ShedTarget> fromString(String targetName) {
        for (var target : ShedTarget.class.getEnumConstants()) {
            if (target.targetName.equals(targetName)) {
                return Optional.of(target);
            }
        }

        return Optional.empty();
    }

    private final String targetName;

    ShedTarget(String targetName) {
        this.targetName = targetName;
    }

    public String targetName() {
        return targetName;
    }
}