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
    I32,
15
    PairRef,
16
}
17

            
18
impl FieldKind {
19
10329452
    pub(super) fn as_val_type(self, ctx: &CompileContext) -> ValType {
20
10329452
        match self {
21
8548512
            FieldKind::StringRef => ctx.string_ref(),
22
1068564
            FieldKind::Ratio => ctx.ratio_ref(),
23
356188
            FieldKind::I32 => ValType::I32,
24
356188
            FieldKind::PairRef => ctx.pair_ref(),
25
        }
26
10329452
    }
27
}
28

            
29
pub(super) struct EntitySpec {
30
    pub kind: EntityKind,
31
    pub type_name: &'static str,
32
    pub fields: &'static [FieldKind],
33
}
34

            
35
pub(super) const ENTITY_SPECS: &[EntitySpec] = &[
36
    EntitySpec {
37
        kind: EntityKind::Account,
38
        type_name: "account",
39
        fields: &[FieldKind::StringRef, FieldKind::StringRef, FieldKind::StringRef],
40
    },
41
    EntitySpec {
42
        kind: EntityKind::Commodity,
43
        type_name: "commodity_entity",
44
        fields: &[FieldKind::StringRef, FieldKind::StringRef, FieldKind::StringRef],
45
    },
46
    EntitySpec {
47
        kind: EntityKind::Transaction,
48
        type_name: "transaction",
49
        fields: &[FieldKind::StringRef, FieldKind::StringRef, FieldKind::StringRef],
50
    },
51
    EntitySpec {
52
        kind: EntityKind::Split,
53
        type_name: "split",
54
        fields: &[FieldKind::StringRef, FieldKind::StringRef, FieldKind::StringRef, FieldKind::Ratio],
55
    },
56
    EntitySpec {
57
        kind: EntityKind::Tag,
58
        type_name: "tag_entity",
59
        fields: &[FieldKind::StringRef, FieldKind::StringRef, FieldKind::StringRef],
60
    },
61
    EntitySpec {
62
        kind: EntityKind::Price,
63
        type_name: "price",
64
        fields: &[FieldKind::StringRef, FieldKind::StringRef, FieldKind::StringRef, FieldKind::Ratio, FieldKind::StringRef],
65
    },
66
    EntitySpec {
67
        kind: EntityKind::SshKey,
68
        type_name: "ssh_key",
69
        fields: &[FieldKind::StringRef, FieldKind::StringRef, FieldKind::StringRef],
70
    },
71
    EntitySpec {
72
        kind: EntityKind::ReportNode,
73
        type_name: "report_node",
74
        fields: &[FieldKind::StringRef, FieldKind::StringRef, FieldKind::I32, FieldKind::Ratio, FieldKind::PairRef],
75
    },
76
];