about summary refs log tree commit diff stats
path: root/js/scripting-lang/baba-yaga-c/src/value.c
diff options
context:
space:
mode:
Diffstat (limited to 'js/scripting-lang/baba-yaga-c/src/value.c')
-rw-r--r--js/scripting-lang/baba-yaga-c/src/value.c215
1 files changed, 0 insertions, 215 deletions
diff --git a/js/scripting-lang/baba-yaga-c/src/value.c b/js/scripting-lang/baba-yaga-c/src/value.c
deleted file mode 100644
index 562f3a7..0000000
--- a/js/scripting-lang/baba-yaga-c/src/value.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/**
- * @file value.c
- * @brief Value system implementation for Baba Yaga
- * @author eli_oat
- * @version 0.0.1
- * @date 2025
- * 
- * This file implements the value system for the Baba Yaga language,
- * including value creation, destruction, and utility functions.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include "baba_yaga.h"
-
-/* ============================================================================
- * Value Creation Functions
- * ============================================================================ */
-
-Value baba_yaga_value_number(double number) {
-    Value value;
-    value.type = VAL_NUMBER;
-    value.data.number = number;
-    return value;
-}
-
-Value baba_yaga_value_string(const char* string) {
-    Value value;
-    value.type = VAL_STRING;
-    if (string != NULL) {
-        value.data.string = strdup(string);
-    } else {
-        value.data.string = NULL;
-    }
-    return value;
-}
-
-Value baba_yaga_value_boolean(bool boolean) {
-    Value value;
-    value.type = VAL_BOOLEAN;
-    value.data.boolean = boolean;
-    return value;
-}
-
-Value baba_yaga_value_nil(void) {
-    Value value;
-    value.type = VAL_NIL;
-    return value;
-}
-
-/* ============================================================================
- * Value Management Functions
- * ============================================================================ */
-
-void baba_yaga_value_destroy(Value* value) {
-    if (value == NULL) {
-        return;
-    }
-
-    switch (value->type) {
-    case VAL_STRING:
-        if (value->data.string != NULL) {
-            free(value->data.string);
-            value->data.string = NULL;
-        }
-        break;
-    case VAL_TABLE:
-        table_decrement_ref(value);
-        break;
-    case VAL_FUNCTION:
-        function_decrement_ref(value);
-        break;
-    default:
-        /* No cleanup needed for other types */
-        break;
-    }
-
-    value->type = VAL_NIL;
-}
-
-Value baba_yaga_value_copy(const Value* value) {
-    if (value == NULL) {
-        return baba_yaga_value_nil();
-    }
-
-    DEBUG_DEBUG("baba_yaga_value_copy: copying value with type %d", value->type);
-
-    switch (value->type) {
-    case VAL_NUMBER:
-        return baba_yaga_value_number(value->data.number);
-    case VAL_STRING:
-        return baba_yaga_value_string(value->data.string);
-    case VAL_BOOLEAN:
-        return baba_yaga_value_boolean(value->data.boolean);
-    case VAL_TABLE: {
-        Value new_table = baba_yaga_value_table();
-        if (new_table.type != VAL_TABLE) {
-            return baba_yaga_value_nil();
-        }
-        
-        /* Copy all entries from the original table using the public API */
-        size_t old_size = baba_yaga_table_size(value);
-        if (old_size > 0) {
-            /* Get all keys from the original table */
-            char* keys[100]; /* Assume max 100 keys */
-            size_t key_count = baba_yaga_table_get_keys(value, keys, 100);
-            
-            /* Copy each key-value pair */
-            for (size_t i = 0; i < key_count; i++) {
-                Value old_value = baba_yaga_table_get(value, keys[i]);
-                new_table = baba_yaga_table_set(&new_table, keys[i], &old_value);
-                baba_yaga_value_destroy(&old_value);
-                free(keys[i]);
-            }
-        }
-        
-        return new_table;
-    }
-    case VAL_FUNCTION: {
-        /* For now, just increment the reference count of the original function */
-        Value new_func = *value;
-        function_increment_ref(&new_func);
-        return new_func;
-    }
-    case VAL_NIL:
-    default:
-        return baba_yaga_value_nil();
-    }
-}
-
-/* ============================================================================
- * Utility Functions
- * ============================================================================ */
-
-ValueType baba_yaga_value_get_type(const Value* value) {
-    if (value == NULL) {
-        return VAL_NIL;
-    }
-    return value->type;
-}
-
-bool baba_yaga_value_is_truthy(const Value* value) {
-    if (value == NULL) {
-        return false;
-    }
-
-    switch (value->type) {
-    case VAL_NUMBER:
-        return value->data.number != 0.0;
-    case VAL_STRING:
-        return value->data.string != NULL && strlen(value->data.string) > 0;
-    case VAL_BOOLEAN:
-        return value->data.boolean;
-    case VAL_TABLE:
-        /* Tables are truthy if they have any elements */
-        return baba_yaga_table_size(value) > 0;
-    case VAL_FUNCTION:
-        return true;
-    case VAL_NIL:
-    default:
-        return false;
-    }
-}
-
-char* baba_yaga_value_to_string(const Value* value) {
-    if (value == NULL) {
-        return strdup("nil");
-    }
-
-    switch (value->type) {
-    case VAL_NUMBER: {
-        char buffer[128];
-        if (value->data.number == (long)value->data.number) {
-            snprintf(buffer, sizeof(buffer), "%ld", (long)value->data.number);
-        } else {
-            snprintf(buffer, sizeof(buffer), "%.16g", value->data.number);
-        }
-        return strdup(buffer);
-    }
-    case VAL_STRING:
-        if (value->data.string != NULL) {
-            return strdup(value->data.string);
-        } else {
-            return strdup("");
-        }
-    case VAL_BOOLEAN:
-        return strdup(value->data.boolean ? "true" : "false");
-    case VAL_TABLE: {
-        char buffer[64];
-        size_t size = baba_yaga_table_size(value);
-        snprintf(buffer, sizeof(buffer), "<table:%zu>", size);
-        return strdup(buffer);
-    }
-    case VAL_FUNCTION: {
-        char buffer[64];
-        const char* name = function_get_name(value);
-        snprintf(buffer, sizeof(buffer), "<function:%s>", name ? name : "anonymous");
-        return strdup(buffer);
-    }
-    case VAL_NIL:
-    default:
-        return strdup("nil");
-    }
-}
-
-/* ============================================================================
- * Version Information
- * ============================================================================ */
-
-const char* baba_yaga_get_version(void) {
-    return "0.0.1";
-}