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 */