Skip to main content

cell_core_macros/
lib.rs

1// SPDX-License-Identifier: MIT
2// cell-core-macros/src/lib.rs
3
4#![no_std]
5
6extern crate alloc;
7
8use alloc::string::String;
9use alloc::vec::Vec;
10use rkyv::{Archive, Deserialize as RkyvDeserialize, Serialize as RkyvSerialize};
11use serde::{Deserialize as SerdeDeserialize, Serialize as SerdeSerialize};
12
13#[derive(Archive, RkyvSerialize, RkyvDeserialize, SerdeSerialize, SerdeDeserialize, Debug, Clone)]
14#[archive(check_bytes)]
15pub struct MacroInfo {
16    pub name: String,
17    pub kind: MacroKind,
18    pub description: String,
19    pub dependencies: Vec<String>,
20}
21
22#[derive(Archive, RkyvSerialize, RkyvDeserialize, SerdeSerialize, SerdeDeserialize, Debug, Clone, PartialEq)]
23#[archive(check_bytes)]
24pub enum MacroKind {
25    Attribute,
26    Derive,
27    Function,
28}
29
30#[derive(Archive, RkyvSerialize, RkyvDeserialize, SerdeSerialize, SerdeDeserialize, Debug, Clone)]
31#[archive(check_bytes)]
32pub struct ExpansionContext {
33    pub struct_name: String,
34    pub fields: Vec<(String, String)>,
35    pub attributes: Vec<String>,
36    pub other_cells: Vec<String>,
37}
38
39#[derive(Archive, RkyvSerialize, RkyvDeserialize, SerdeSerialize, SerdeDeserialize, Debug, Clone)]
40#[archive(check_bytes)]
41pub enum MacroCoordinationRequest {
42    WhatMacrosDoYouProvide,
43    GetMacroInfo {
44        name: String,
45    },
46    CoordinateExpansion {
47        macro_name: String,
48        context: ExpansionContext,
49    },
50    QueryOtherCell {
51        target_cell: String,
52        query: String,
53    },
54}
55
56#[derive(Archive, RkyvSerialize, RkyvDeserialize, SerdeSerialize, SerdeDeserialize, Debug, Clone)]
57#[archive(check_bytes)]
58pub enum MacroCoordinationResponse {
59    Macros {
60        macros: Vec<MacroInfo>,
61    },
62    MacroInfo {
63        info: MacroInfo,
64    },
65    GeneratedCode {
66        code: String,
67    },
68    QueryResult {
69        result: String,
70    },
71    Error {
72        message: String,
73    },
74}