mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-15 14:54:07 +10:00
Functions are having issues with being copied around, especially between buckets, leading to the scopes getting looped. The program gets stuck in 'incrementRefCount()'. It's past my time limit, so I'll keep working on it tomorrow with a fresh mind. All function stuff is still untested. See #163
31 lines
1.1 KiB
C
31 lines
1.1 KiB
C
#pragma once
|
|
|
|
#include "toy_common.h"
|
|
|
|
#include "toy_bucket.h"
|
|
#include "toy_value.h"
|
|
#include "toy_string.h"
|
|
#include "toy_table.h"
|
|
|
|
//wraps Toy_Table, restricting keys to name strings, and handles scopes as a linked list
|
|
typedef struct Toy_Scope {
|
|
struct Toy_Scope* next;
|
|
Toy_Table* table;
|
|
unsigned int refCount;
|
|
} Toy_Scope;
|
|
|
|
//handle deep scopes - the scope is stored in the bucket, not the table
|
|
TOY_API Toy_Scope* Toy_pushScope(Toy_Bucket** bucketHandle, Toy_Scope* scope);
|
|
TOY_API Toy_Scope* Toy_popScope(Toy_Scope* scope);
|
|
TOY_API Toy_Scope* Toy_private_pushDummyScope(Toy_Bucket** bucketHandle, Toy_Scope* scope); //doesn't delcare a table for storage
|
|
|
|
TOY_API Toy_Scope* Toy_deepCopyScope(Toy_Bucket** bucketHandle, Toy_Scope* scope);
|
|
|
|
//manage the contents
|
|
TOY_API void Toy_declareScope(Toy_Scope* scope, Toy_String* key, Toy_Value value);
|
|
TOY_API void Toy_assignScope(Toy_Scope* scope, Toy_String* key, Toy_Value value);
|
|
TOY_API Toy_Value* Toy_accessScopeAsPointer(Toy_Scope* scope, Toy_String* key);
|
|
|
|
TOY_API bool Toy_isDeclaredScope(Toy_Scope* scope, Toy_String* key);
|
|
|
|
//TODO: delcare with a custom table (game engine entities)
|