1
//! Auto-generated from doc/scripting/entity_registry.org.
2
//! Do not edit manually — edit the org file + cargo build.
3

            
4
use wasm_encoder::ValType;
5

            
6
use crate::ast::EntityKind;
7

            
8
use super::CompileContext;
9

            
10
#[derive(Debug, Clone, Copy)]
11
pub(super) enum FieldKind {
12
    StringRef,
13
    Ratio,
14
}
15

            
16
impl FieldKind {
17
12172721
    pub(super) fn as_val_type(self, ctx: &CompileContext) -> ValType {
18
12172721
        match self {
19
11333223
            FieldKind::StringRef => ctx.string_ref(),
20
839498
            FieldKind::Ratio => ctx.ratio_ref(),
21
        }
22
12172721
    }
23
}
24

            
25
pub(super) struct EntitySpec {
26
    pub kind: EntityKind,
27
    pub type_name: &'static str,
28
    pub fields: &'static [FieldKind],
29
}
30

            
31
pub(super) const ENTITY_SPECS: &[EntitySpec] = &[
32
    EntitySpec {
33
        kind: EntityKind::Account,
34
        type_name: "account",
35
        fields: &[
36
            FieldKind::StringRef,
37
            FieldKind::StringRef,
38
            FieldKind::StringRef,
39
            FieldKind::StringRef,
40
        ],
41
    },
42
    EntitySpec {
43
        kind: EntityKind::Commodity,
44
        type_name: "commodity_entity",
45
        fields: &[
46
            FieldKind::StringRef,
47
            FieldKind::StringRef,
48
            FieldKind::StringRef,
49
        ],
50
    },
51
    EntitySpec {
52
        kind: EntityKind::Transaction,
53
        type_name: "transaction",
54
        fields: &[
55
            FieldKind::StringRef,
56
            FieldKind::StringRef,
57
            FieldKind::StringRef,
58
            FieldKind::StringRef,
59
        ],
60
    },
61
    EntitySpec {
62
        kind: EntityKind::Split,
63
        type_name: "split",
64
        fields: &[
65
            FieldKind::StringRef,
66
            FieldKind::StringRef,
67
            FieldKind::StringRef,
68
            FieldKind::Ratio,
69
        ],
70
    },
71
    EntitySpec {
72
        kind: EntityKind::Tag,
73
        type_name: "tag_entity",
74
        fields: &[
75
            FieldKind::StringRef,
76
            FieldKind::StringRef,
77
            FieldKind::StringRef,
78
        ],
79
    },
80
    EntitySpec {
81
        kind: EntityKind::Price,
82
        type_name: "price",
83
        fields: &[
84
            FieldKind::StringRef,
85
            FieldKind::StringRef,
86
            FieldKind::StringRef,
87
            FieldKind::Ratio,
88
            FieldKind::StringRef,
89
        ],
90
    },
91
    EntitySpec {
92
        kind: EntityKind::SshKey,
93
        type_name: "ssh_key",
94
        fields: &[
95
            FieldKind::StringRef,
96
            FieldKind::StringRef,
97
            FieldKind::StringRef,
98
            FieldKind::StringRef,
99
            FieldKind::StringRef,
100
            FieldKind::StringRef,
101
        ],
102
    },
103
];