rev 637 - in trunk: . include/prothon pr/test src
SVN User <[email protected]> Fri, 18 Jun 2004 21:14:36 -0400
| Newsgroups | gmane.comp.lang.prothon.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: mark
Date: 2004-06-18 21:14:33 -0400 (Fri, 18 Jun 2004)
New Revision: 637
Modified:
trunk/STATUS.txt
trunk/include/prothon/prothon.h
trunk/pr/test/test.pr
trunk/src/builtins-core.c
trunk/src/builtins-dict.c
trunk/src/builtins-int.c
trunk/src/builtins-list.c
trunk/src/builtins-string.c
trunk/src/builtins-tuple.c
trunk/src/object.c
Log:
implemented List(iter_)
Modified: trunk/STATUS.txt
===================================================================
--- trunk/STATUS.txt 2004-06-19 00:25:16 UTC (rev 636)
+++ trunk/STATUS.txt 2004-06-19 01:14:33 UTC (rev 637)
@@ -8,6 +8,7 @@
http://www.prothon.org/pipermail/prothon-user/2004-June/001863.html
--- support any object that supports file methods in stdxxx (duck std)
http://www.prothon.org/pipermail/prothon-user/2004-June/001769.html
+--- TextFileGen
--- range function
Modified: trunk/include/prothon/prothon.h
===================================================================
--- trunk/include/prothon/prothon.h 2004-06-19 00:25:16 UTC (rev 636)
+++ trunk/include/prothon/prothon.h 2004-06-19 01:14:33 UTC (rev 637)
@@ -320,16 +320,17 @@
OUTER_PROTO, // 20
SUPER_PROTO, // 21
GEN_PROTO, // 22
- THREAD_PROTO, // 23 Thread
- MUTEX_PROTO, // 24 Mutex
+ ITER_PROTO, // 23
+ THREAD_PROTO, // Thread
+ MUTEX_PROTO, // Mutex
// Exceptions
- EXCEPTION, // 25 Exception
- INTERNAL_EXC, // 26 InternalError
- PARSEERROR_EXC, // 27
- INTERPRETER_EXC, // 28
- ASSERTION_EXC, // 29 AssertionError
- NAME_EXC, // 30 NameError
+ EXCEPTION, // Exception
+ INTERNAL_EXC, // InternalError
+ PARSEERROR_EXC, //
+ INTERPRETER_EXC, //
+ ASSERTION_EXC, // AssertionError
+ NAME_EXC, // NameError
INDEX_EXC, // IndexError
TYPE_EXC, // TypeError
VALUE_EXC, // ValueError
Modified: trunk/pr/test/test.pr
===================================================================
--- trunk/pr/test/test.pr 2004-06-19 00:25:16 UTC (rev 636)
+++ trunk/pr/test/test.pr 2004-06-19 01:14:33 UTC (rev 637)
@@ -1,4 +1,5 @@
#!/usr/bin/env prothon
-for i in range(20, 0, -2):
- print i
+print List(10.iter_())
+print List(range(20, 0, -2))
+
Modified: trunk/src/builtins-core.c
===================================================================
--- trunk/src/builtins-core.c 2004-06-19 00:25:16 UTC (rev 636)
+++ trunk/src/builtins-core.c 2004-06-19 01:14:33 UTC (rev 637)
@@ -841,7 +841,7 @@
MODULE_START(RangeGen)
{
- RangeGen_OBJ = NEW_OBJ(NULL);
+ RangeGen_OBJ = NEW_OBJ(OBJ(ITER_PROTO));
MODULE_ADD_TO_OBJ(RangeGen, OBJ(OBJECT), "Range");
MODULE_SET_DOC(RangeGen, "range generator object prototype");
set_obj_id(RangeGen_OBJ, *, RangeGen);
Modified: trunk/src/builtins-dict.c
===================================================================
--- trunk/src/builtins-dict.c 2004-06-19 00:25:16 UTC (rev 636)
+++ trunk/src/builtins-dict.c 2004-06-19 01:14:33 UTC (rev 637)
@@ -564,7 +564,7 @@
MODULE_START(DictGen)
{
- DictGen_OBJ = NEW_OBJ(NULL);
+ DictGen_OBJ = NEW_OBJ(OBJ(ITER_PROTO));
set_obj_id(DictGen_OBJ, *, DictGen);
}
Modified: trunk/src/builtins-int.c
===================================================================
--- trunk/src/builtins-int.c 2004-06-19 00:25:16 UTC (rev 636)
+++ trunk/src/builtins-int.c 2004-06-19 01:14:33 UTC (rev 637)
@@ -2706,7 +2706,7 @@
MODULE_START(IntGen)
{
- IntGen_OBJ = NEW_OBJ(OBJ(INT_PROTO));
+ IntGen_OBJ = NEW_OBJ(OBJ(ITER_PROTO));
MODULE_SET_DOC(IntGen, "number generator object prototype");
set_obj_id(IntGen_OBJ, *, IntGen);
}
Modified: trunk/src/builtins-list.c
===================================================================
--- trunk/src/builtins-list.c 2004-06-19 00:25:16 UTC (rev 636)
+++ trunk/src/builtins-list.c 2004-06-19 01:14:33 UTC (rev 637)
@@ -327,6 +327,19 @@
DEF(List, init_, FORM_STAR_PARAM) {
BIN_EMPTY_OR_NOT_CHK(List);
+ if (list_len(ist, parms[1])) {
+ obj_p item = list_item(ist, parms[1], 0);
+ if (has_proto(ist, item, OBJ(ITER_PROTO))) {
+ obj_p new_list = new_list_obj(ist, 10);
+ while (TRUE) {
+ obj_p new_item = call_func0(ist, item, SYM(NEXT));
+ if (catch_exception(ist, OBJ(STOP_ITERATION_EXC), NULL)) break;
+ if_exc_return NULL;
+ list_append(ist, new_list, new_item);
+ }
+ return new_list;
+ }
+ }
read_unlock(ist, self);
read_unlock(ist, parms[1]);
copy_object_data(ist, self, parms[1]);
Modified: trunk/src/builtins-string.c
===================================================================
--- trunk/src/builtins-string.c 2004-06-19 00:25:16 UTC (rev 636)
+++ trunk/src/builtins-string.c 2004-06-19 01:14:33 UTC (rev 637)
@@ -1084,7 +1084,7 @@
MODULE_START(StringGen)
{
- StringGen_OBJ = NEW_OBJ(NULL);
+ StringGen_OBJ = NEW_OBJ(OBJ(ITER_PROTO));
set_attr(ist, OBJ(OBJECT), sym(ist, "StringGen"), StringGen_OBJ);
set_obj_id(StringGen_OBJ, *, StringGen);
}
Modified: trunk/src/builtins-tuple.c
===================================================================
--- trunk/src/builtins-tuple.c 2004-06-19 00:25:16 UTC (rev 636)
+++ trunk/src/builtins-tuple.c 2004-06-19 01:14:33 UTC (rev 637)
@@ -331,7 +331,7 @@
//*************************** TUPLE GENERATOR OBJECT **************************
MODULE_START(Tgen)
{
- Tgen_OBJ = NEW_OBJ(NULL);
+ Tgen_OBJ = NEW_OBJ(OBJ(ITER_PROTO));
}
DEF(Tgen, next, NULL) {
Modified: trunk/src/object.c
===================================================================
--- trunk/src/object.c 2004-06-19 00:25:16 UTC (rev 636)
+++ trunk/src/object.c 2004-06-19 01:14:33 UTC (rev 637)
@@ -232,7 +232,8 @@
OBJ(NONE) = NEW_OBJ(NULL);
OBJ(EXCEPTION) = NEW_OBJ(NULL);
OBJ(FUNC_PROTO) = NEW_OBJ(NULL);
- OBJ(GEN_PROTO) = NEW_OBJ(NULL);
+ OBJ(ITER_PROTO) = NEW_OBJ(NULL);
+ OBJ(GEN_PROTO) = NEW_OBJ(OBJ(ITER_PROTO));
OBJ(INT_PROTO) = NEW_OBJ(NULL);
OBJ(BYTES_PROTO) = NEW_OBJ(OBJ(SEQ_PROTO));
OBJ(STRING_PROTO) = NEW_OBJ(OBJ(SEQ_PROTO));