moved back to old acc
[vox.git] / src / core / baselib_class.cpp
blob85f93bbff10bc5b38e441a105f3a33e1f71d99b4
2 #include "baselib.hpp"
4 VXInteger class_getattributes(VXState* v)
6 VXObject& o = v->StackGet(1);
7 VXObject &key = v->StackGet(2);
8 VXObject attrs;
9 if(o.Class()->GetAttributes(key,attrs))
11 v->Push(attrs);
12 return 1;
14 return v->ThrowError("wrong index");
18 VXInteger class_setattributes(VXState* v)
20 VXObject& o = v->StackGet(1);
21 VXObject& key = v->StackGet(2);
22 VXObject& val = v->StackGet(3);
23 VXObject attrs;
24 if(key.Type() == VX_OT_NULL)
26 attrs = o.Class()->_attributes;
27 o.Class()->_attributes = val;
28 v->Push(attrs);
29 return 1;
31 else if(o.Class()->GetAttributes(key,attrs))
33 o.Class()->SetAttributes(key, val);
34 v->Push(attrs);
35 return 1;
37 return v->ThrowError("wrong index");
40 VXInteger class_instance(VXState* v)
42 VXObject& o = v->StackGet(1);
43 v->Push(o.Class()->CreateInstance());
44 return 1;
47 VXInteger class_getbase(VXState* v)
49 VXObject& o = v->StackGet(1);
50 if(o.Class()->_base)
52 v->Push(o.Class()->_base);
53 return 1;
55 return 0;
58 VXInteger instance_getclass(VXState* v)
60 VXObject& o = v->StackGet(1);
61 v->Push(o.Instance()->_class);
62 return 1;
66 VXRegFunction VXSharedState::_class_default_delegate_funcz[] =
68 {"weakref", obj_delegate_weakref, 1, NULL },
69 {"tostring", default_delegate_tostring, -1, ".b"},
70 {"rawget", container_rawget, 2, "y"},
71 {"rawset", container_rawset, 3, "y"},
72 {"instance", class_instance, 1, "y"},
73 {"getbase", class_getbase, 1, "y"},
74 {"getattributes", class_getattributes, 2, "y."},
75 {"setattributes", class_setattributes, 3, "y.."},
76 {"repr", default_delegate_repr, 1, "."},
77 {0, 0, 0, 0}
81 VXRegFunction VXSharedState::_instance_default_delegate_funcz[] =
83 {"weakref", obj_delegate_weakref, 1, NULL },
84 {"tostring", default_delegate_tostring, -1, ".b"},
85 {"rawget", container_rawget, 2, "x"},
86 {"rawset", container_rawset, 3, "x"},
87 {"getclass", instance_getclass, 1, "x"},
88 {"repr", default_delegate_repr, 1, "."},
89 {0, 0, 0, 0}