moved back to old acc
[vox.git] / src / core / baselib_table.cpp
blob4a6fc476821e5b92686dce149dbf19679ba5be04
2 #include "baselib.hpp"
4 /////////////////////////////////////////////////////////////////
5 //TABLE DEFAULT DELEGATE
7 VXInteger table_rawdelete(VXState* v)
9 //if(VX_FAILED(vox_rawdeleteslot(v,1,true)))
10 //{
11 // return VX_ERROR;
12 //}
13 //return 1;
14 (void)v;
15 return 0;
18 VXInteger table_setdelegate(VXState* v)
20 VXObject& self = v->StackGet(1);
21 VXObject& mt = v->StackGet(2);
22 if(VX_SUCCEEDED(v->SetDelegate(self, mt)))
24 v->Push(self);
25 return 1;
27 return VX_ERROR;
30 VXInteger table_getdelegate(VXState* v)
32 //return VX_SUCCEEDED(vox_getdelegate(v,-1))?1:VX_ERROR;
33 (void)v;
34 return 0;
37 VXInteger table_get(VXState* v)
39 VXObject dest;
40 VXObject key;
41 VXObject self = v->StackGet(1);
42 VXTableObj* tb = self.Table();
43 key = v->StackGet(2);
44 if(tb->Get(key, dest))
46 v->Push(dest);
47 return 1;
49 //return VX_ERROR;
50 return v->Raise_IdxError(key, tb);
53 VXInteger table_each(VXState* v)
55 VXTableObj* self = v->StackGet(1).Table();
56 VXObject& closure = v->StackGet(2);
57 VXInteger ridx;
58 VXObject key;
59 VXObject val;
60 while((ridx = self->Next(true, ridx, key, val)) != -1)
62 v->PushRoot();
63 v->Push(key);
64 v->Push(val);
67 //v->Push(closure);
68 //v->Repush(-2);
69 //if(VX_FAILED(v->CallSimple(3, false, true)))
70 if(VX_FAILED(v->CallSimple(closure, 3, false, true)))
72 return VX_ERROR;
75 return VX_OK;
78 VXRegFunction VXSharedState::_table_default_delegate_funcz[]=
80 {"len", default_delegate_len, 1, "t"},
81 {"tostring", default_delegate_tostring, -1, ".b"},
82 {"weakref", obj_delegate_weakref, 1, NULL},
83 {"clear", obj_clear, 1, "."},
84 {"rawget", container_rawget, 2, "t"},
85 {"rawset", container_rawset, 3, "t"},
86 {"rawdelete", table_rawdelete, 2, "t"},
87 {"each", table_each, 2, ".c"},
88 {"get", table_get, 2, NULL},
89 {"setdelegate", table_setdelegate, 2, ".t|o"},
90 {"getdelegate", table_getdelegate, 1, "."},
91 {"repr", default_delegate_repr, 1, "."},
92 {0, 0, 0, 0}