rev 311 - trunk/src
SVN User <[email protected]>
| Newsgroups | gmane.comp.lang.prothon.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: mark
Date: 2004-04-09 18:29:23 -0400 (Fri, 09 Apr 2004)
New Revision: 311
Modified:
trunk/src/builtins-core.c
Log:
Modified: trunk/src/builtins-core.c
===================================================================
--- trunk/src/builtins-core.c 2004-04-09 20:20:30 UTC (rev 310)
+++ trunk/src/builtins-core.c 2004-04-09 22:29:23 UTC (rev 311)
@@ -142,6 +142,38 @@
return call_func0(ist, parms[1], SYM(MIN));
}
+DEF(Object, set_read_access, FORM_RPARAM) {
+ int rqacc;
+ CHECK_TYPE_EXC(parms[1], OBJ(INT_PROTO), "integer");
+ rqacc = (int) parms[1]->data.i64;
+ if (rqacc > ist->access) {
+ raise_exception(ist, OBJ(PERMISSION_EXC), "attempt to raise access greater than own level");
+ return NULL;
+ }
+ set_obj_rdacc(self, rqacc);
+ return parms[1];
+}
+
+DEF(Object, get_read_access, NULL) {
+ return new_int_obj(ist, get_obj_rdacc(self));
+}
+
+DEF(Object, set_write_access, FORM_RPARAM) {
+ int rqacc;
+ CHECK_TYPE_EXC(parms[1], OBJ(INT_PROTO), "integer");
+ rqacc = (int) parms[1]->data.i64;
+ if (rqacc > ist->access) {
+ raise_exception(ist, OBJ(PERMISSION_EXC), "attempt to raise access greater than own level");
+ return NULL;
+ }
+ set_obj_wracc(self, rqacc);
+ return parms[1];
+}
+
+DEF(Object, get_write_access, NULL) {
+ return new_int_obj(ist, get_obj_wracc(self));
+}
+
DEF(Object, __getitem__, FORM_RPARAM) {
raise_exception(ist, OBJ(TYPE_EXC), "indexing not supported on this object");
return NULL;
@@ -570,6 +602,10 @@
MODULE_SUB_INIT(Object);
MODULE_ADD_SYM(Object, __init__);
MODULE_ADD_SYM(Object, clone);
+ MODULE_ADD_SYM(Object, set_read_access);
+ MODULE_ADD_SYM(Object, get_read_access);
+ MODULE_ADD_SYM(Object, set_write_access);
+ MODULE_ADD_SYM(Object, get_write_access);
MODULE_ADD_SYM(Object, has_proto_QUES);
MODULE_ADD_SYM(Object, set_proto);
MODULE_ADD_SYM(Object, add_proto);