rev 636 - in trunk: pr/test src

SVN User <[email protected]> Fri, 18 Jun 2004 20:25:19 -0400
Newsgroups gmane.comp.lang.prothon.cvs
Message-ID <[email protected]>
Author: mark
Date: 2004-06-18 20:25:16 -0400 (Fri, 18 Jun 2004)
New Revision: 636

Modified:
   trunk/pr/test/test.pr
   trunk/src/builtins-core.c
Log:
object.range works

Modified: trunk/pr/test/test.pr
===================================================================
--- trunk/pr/test/test.pr	2004-06-18 23:55:59 UTC (rev 635)
+++ trunk/pr/test/test.pr	2004-06-19 00:25:16 UTC (rev 636)
@@ -1,19 +1,4 @@
 #!/usr/bin/env prothon
 
-def f():
-    if 'static' not in f.attrs_:
-        f.static = 0
-    f.static += 1
-    
-    tmp = f.static
-    def outer.f():
-        f.static += 1
-        return f.static
-    f.static = tmp
-    
-    return f.static
-
-print f()
-print f()
-print f()
-
+for i in range(20, 0, -2):
+	print i

Modified: trunk/src/builtins-core.c
===================================================================
--- trunk/src/builtins-core.c	2004-06-18 23:55:59 UTC (rev 635)
+++ trunk/src/builtins-core.c	2004-06-19 00:25:16 UTC (rev 636)
@@ -841,7 +841,7 @@
 
 MODULE_START(RangeGen)
 {
-	RangeGen_OBJ = NEW_OBJ(Gen_OBJ);
+	RangeGen_OBJ = NEW_OBJ(NULL);
 	MODULE_ADD_TO_OBJ(RangeGen, OBJ(OBJECT), "Range");
 	MODULE_SET_DOC(RangeGen, "range generator object prototype");
 	set_obj_id(RangeGen_OBJ, *, RangeGen);
@@ -861,6 +861,7 @@
 		return NULL;
 	}
 	range_obj = NEW_OBJ(RangeGen_OBJ);
+	SET_TYPE_IF_EXC(RangeGen_OBJ, range_obj, DATA_TYPE_DATAPTR) return NULL;
 	range_obj->data.ptr = rangep = (range_p) pr_malloc(sizeof(range_t));
 	rangep->size  = sizeof(range_t);
 	rangep->value = start;
@@ -884,6 +885,10 @@
 	return res;
 }
 
+DEF(RangeGen, iter_, NULL) {
+	return self;
+}
+
 // ***************************** MAIN_MODULE_INIT *****************************
 
 MAIN_MODULE_INIT(Core)
@@ -978,6 +983,7 @@
 	MODULE_ADD_SYM(Func, objList_);
 
 	MODULE_SUB_INIT(RangeGen);
+	MODULE_ADD_SYM(RangeGen, iter_);
 	MODULE_ADD_SYM(RangeGen, next);
 
 	check_exceptions(ist);