swamp_script_core_extra/
export.rs

1/*
2 * Copyright (c) Peter Bjorklund. All rights reserved. https://github.com/swamp/script
3 * Licensed under the MIT License. See LICENSE in the project root for license information.
4 */
5
6/*
7//use crate::typereg::TypeRegistry;
8use crate::value::Value;
9use fixed32::Fp;
10use swamp_script_types::prelude::*;
11pub trait SwampExport: Sized {
12    fn get_resolved_type(registry: &TypeRegistry) -> Type;
13    fn to_swamp_value(&self, registry: &TypeRegistry) -> Value; // Added registry parameter
14    /// # Errors
15    ///
16    fn from_swamp_value(value: &Value) -> Result<Self, String>;
17}
18impl SwampExport for Fp {
19    fn get_resolved_type(registry: &TypeRegistry) -> Type {
20        registry.get_float_type()
21    }
22
23    fn to_swamp_value(&self, _registry: &TypeRegistry) -> Value {
24        Value::Float(*self)
25    }
26    fn from_swamp_value(value: &Value) -> Result<Self, String> {
27        match value {
28            Value::Float(f) => Ok(*f),
29            _ => Err("Expected Float value".to_string()),
30        }
31    }
32}
33// Primitive type implementations
34impl SwampExport for i32 {
35    fn get_resolved_type(registry: &TypeRegistry) -> Type {
36        registry.get_int_type()
37    }
38
39    fn to_swamp_value(&self, _registry: &TypeRegistry) -> Value {
40        Value::Int(*self)
41    }
42
43    fn from_swamp_value(value: &Value) -> Result<Self, String> {
44        match value {
45            Value::Int(i) => Ok(*i),
46            _ => Err("Expected Int value".to_string()),
47        }
48    }
49}
50
51impl SwampExport for String {
52    fn get_resolved_type(registry: &TypeRegistry) -> Type {
53        registry.get_string_type()
54    }
55
56    fn to_swamp_value(&self, _registry: &TypeRegistry) -> Value {
57        Value::String(self.clone())
58    }
59
60    fn from_swamp_value(value: &Value) -> Result<Self, String> {
61        match value {
62            Value::String(s) => Ok(s.clone()),
63            _ => Err("Expected String value".to_string()),
64        }
65    }
66}
67
68impl SwampExport for bool {
69    fn get_resolved_type(registry: &TypeRegistry) -> Type {
70        registry.get_bool_type()
71    }
72
73    fn to_swamp_value(&self, _registry: &TypeRegistry) -> Value {
74        Value::Bool(*self)
75    }
76
77    fn from_swamp_value(value: &Value) -> Result<Self, String> {
78        match value {
79            Value::Bool(b) => Ok(*b),
80            _ => Err(format!("Expected Bool value {value}")),
81        }
82    }
83}
84
85
86 */