rev 732 - in trunk: . src

SVN User <[email protected]> Tue, 13 Jul 2004 00:52:55 -0400
Newsgroups gmane.comp.lang.prothon.cvs
Message-ID <[email protected]>
Author: mark
Date: 2004-07-13 00:52:52 -0400 (Tue, 13 Jul 2004)
New Revision: 732

Modified:
   trunk/STATUS.txt
   trunk/src/builtins-core.c
Log:
changed getAttr to tuple, added symbol support

Modified: trunk/STATUS.txt
===================================================================
--- trunk/STATUS.txt	2004-07-13 04:20:23 UTC (rev 731)
+++ trunk/STATUS.txt	2004-07-13 04:52:52 UTC (rev 732)
@@ -13,8 +13,6 @@
 
 --- use special stdout for each Main
 
---- getAttr(name), setAttr(name, value), delAttr(name)
-
 --- Module doc strings & Object doc strings
 
 --- add sys.userHome path and name current one sys.prothonHome

Modified: trunk/src/builtins-core.c
===================================================================
--- trunk/src/builtins-core.c	2004-07-13 04:20:23 UTC (rev 731)
+++ trunk/src/builtins-core.c	2004-07-13 04:52:52 UTC (rev 732)
@@ -213,15 +213,24 @@
 }
 
 DEF(Object, getAttr, FPARM2(name, OBJ(NODEF), super, OBJ(NONE))) {
-	obj_p res, super, p_proto = NULL;
-	char* name;
-	STRING_PARAM(1, name);
+	obj_p key, res, super, p_proto = NULL, tuple;
+	if (has_proto(ist, parms[1], OBJ(SYMBOL_PROTO))) 
+		key = parms[1]; 
+	else {
+		char* name;
+		STRING_PARAM(1, name);
+		key = sym(ist, name);
+	}
 	super = parms[3];
 	if (super == OBJ(NONE)) super = NULL;
-	res = get_proto_attr(ist, self, sym(ist, name), &p_proto, super);
+	res = get_proto_attr(ist, self, key, &p_proto, super);
 	if (!res) return OBJ(NONE);
 	if (!p_proto) p_proto = OBJ(NONE);
-	return p_proto;
+	tuple = NEW_TUPLE(2);
+	list_append(ist, tuple, res);
+	list_append(ist, tuple, p_proto);
+	set_immutable(tuple);
+	return tuple;
 }
 
 DEF(Object, hasProto_QUES, FORM_RPARAM) {