Author: bcollins
Date: 2004-03-29 13:41:31 -0500 (Mon, 29 Mar 2004)
New Revision: 198
Modified:
trunk/include/prothon/prothon.h
trunk/modules/File/File.c
trunk/modules/Float/Float.c
trunk/modules/List/List.c
trunk/modules/Re/Re.c
trunk/modules/String/String.c
trunk/modules/Tuple/Tuple.c
trunk/pr/stdio_test.pr
trunk/src/builtins.c
Log:
Add new CALL_INIT() macros to make the stuff easier to read. So instead of
doing INT_OBJ__le__init(); You do CALL_INIT(INT_OBJ, __le__);
Modified: trunk/include/prothon/prothon.h
===================================================================
--- trunk/include/prothon/prothon.h 2004-03-29 17:33:21 UTC (rev 197)
+++ trunk/include/prothon/prothon.h 2004-03-29 18:41:31 UTC (rev 198)
@@ -716,6 +716,9 @@
}
\
static obj_p slf##func(isp ist, obj_p self, int pcnt, obj_p* parms,
obj_p dlocals)
+/* Call a functions init, declared from DEF() above */
+#define CALL_INIT(slf, func) slf##func##init()
+
// FORM_RPARAM: convenience macro for single formal right parameter
// Defines a formal label/default-value list that matches func(rparam).
// This is the call made in a binary operation such a a+b. "a" is self and
Modified: trunk/modules/File/File.c
===================================================================
--- trunk/modules/File/File.c 2004-03-29 17:33:21 UTC (rev 197)
+++ trunk/modules/File/File.c 2004-03-29 18:41:31 UTC (rev 198)
@@ -671,23 +671,23 @@
set_attr(ist, OBJ(OBJECT), sym(ist, "File"), FILE_PROTO);
set_attr(ist, OBJ(OBJECT), sym(ist, "Dir"), DIR_PROTO);
- FILE_PROTO__init__init();
- FILE_PROTO__objlist__init();
- FILE_PROTOcloseinit();
- FILE_PROTOclosedinit();
- FILE_PROTOflushinit();
-// FILE_PROTOfilenoinit();
-// FILE_PROTOisattyinit();
- FILE_PROTOseekinit();
-// FILE_PROTOtellinit();
- FILE_PROTOtruncateinit();
- FILE_PROTOreadinit();
- FILE_PROTOreadlineinit();
- FILE_PROTOreadlinesinit();
- FILE_PROTOwriteinit();
- FILE_PROTOwritelinesinit();
- DIR_PROTO__init__init();
- DIR_PROTO__objlist__init();
+ CALL_INIT(FILE_PROTO, __init__);
+ CALL_INIT(FILE_PROTO, __objlist__);
+ CALL_INIT(FILE_PROTO, close);
+ CALL_INIT(FILE_PROTO, closed);
+ CALL_INIT(FILE_PROTO, flush);
+// CALL_INIT(FILE_PROTO, fileno);
+// CALL_INIT(FILE_PROTO, isatty);
+ CALL_INIT(FILE_PROTO, seek);
+// CALL_INIT(FILE_PROTO, tell);
+ CALL_INIT(FILE_PROTO, truncate);
+ CALL_INIT(FILE_PROTO, read);
+ CALL_INIT(FILE_PROTO, readline);
+ CALL_INIT(FILE_PROTO, readlines);
+ CALL_INIT(FILE_PROTO, write);
+ CALL_INIT(FILE_PROTO, writelines);
+ CALL_INIT(DIR_PROTO, __init__);
+ CALL_INIT(DIR_PROTO, __objlist__);
/* Create base file objects for std{in,out,err} */
aprerr = apr_pool_create(&std_pool, get_pr_head_pool());
Modified: trunk/modules/Float/Float.c
===================================================================
--- trunk/modules/Float/Float.c 2004-03-29 17:33:21 UTC (rev 197)
+++ trunk/modules/Float/Float.c 2004-03-29 18:41:31 UTC (rev 198)
@@ -314,23 +314,23 @@
install_module(Float) {
- FLOAT_PROTO_OBJ__bool__init();
- FLOAT_PROTO_OBJ__hash__init();
- FLOAT_PROTO_OBJ__abs__init();
- FLOAT_PROTO_OBJ__neg__init();
- FLOAT_PROTO_OBJ__pos__init();
- FLOAT_PROTO_OBJ__add__init();
- FLOAT_PROTO_OBJ__div__init();
- FLOAT_PROTO_OBJ__rdiv__init();
- FLOAT_PROTO_OBJ__mul__init();
- FLOAT_PROTO_OBJ__sub__init();
- FLOAT_PROTO_OBJ__rsub__init();
- FLOAT_PROTO_OBJ__pow__init();
- FLOAT_PROTO_OBJ__rpow__init();
- FLOAT_PROTO_OBJcmpinit();
- FLOAT_PROTO_OBJ__rcmp__init();
- FLOAT_PROTO_OBJ__eq__init();
- FLOAT_PROTO_OBJ__str__init();
- FLOAT_PROTO_OBJ__covers__init();
- FLOAT_PROTO_OBJ__coerce__init();
+ CALL_INIT(FLOAT_PROTO_OBJ, __bool__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __hash__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __abs__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __neg__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __pos__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __add__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __div__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __rdiv__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __mul__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __sub__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __rsub__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __pow__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __rpow__);
+ CALL_INIT(FLOAT_PROTO_OBJ, cmp);
+ CALL_INIT(FLOAT_PROTO_OBJ, __rcmp__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __eq__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __str__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __covers__);
+ CALL_INIT(FLOAT_PROTO_OBJ, __coerce__);
}
Modified: trunk/modules/List/List.c
===================================================================
--- trunk/modules/List/List.c 2004-03-29 17:33:21 UTC (rev 197)
+++ trunk/modules/List/List.c 2004-03-29 18:41:31 UTC (rev 198)
@@ -235,12 +235,12 @@
}
install_module(List) {
- LIST_PROTO_OBJ__add__init();
- LIST_PROTO_OBJ__mul__init();
- LIST_PROTO_OBJappend_BANGinit();
- LIST_PROTO_OBJextend_BANGinit();
- LIST_PROTO_OBJinsert_BANGinit();
- LIST_PROTO_OBJremove_BANGinit();
- LIST_PROTO_OBJpop_BANGinit();
- LIST_PROTO_OBJreverse_BANGinit();
+ CALL_INIT(LIST_PROTO_OBJ, __add__);
+ CALL_INIT(LIST_PROTO_OBJ, __mul__);
+ CALL_INIT(LIST_PROTO_OBJ, append_BANG);
+ CALL_INIT(LIST_PROTO_OBJ, extend_BANG);
+ CALL_INIT(LIST_PROTO_OBJ, insert_BANG);
+ CALL_INIT(LIST_PROTO_OBJ, remove_BANG);
+ CALL_INIT(LIST_PROTO_OBJ, pop_BANG);
+ CALL_INIT(LIST_PROTO_OBJ, reverse_BANG);
}
Modified: trunk/modules/Re/Re.c
===================================================================
--- trunk/modules/Re/Re.c 2004-03-29 17:33:21 UTC (rev 197)
+++ trunk/modules/Re/Re.c 2004-03-29 18:41:31 UTC (rev 198)
@@ -644,18 +644,18 @@
set_attr(ist, RE_MODULE, sym(ist, "S"), s_flg);
set_attr(ist, RE_MODULE, sym(ist, "DOTALL"), s_flg);
- RE_MODULEcompileinit();
- RE_PROTOfindallinit();
- RE_PROTOsearchinit();
- RE_PROTOsplitinit();
- RE_PROTOsubinit();
- RE_PROTO__objlist__init();
- RE_PROTO__del__init();
- MATCH_PROTO__objlist__init();
- MATCH_PROTOstartinit();
- MATCH_PROTOendinit();
- MATCH_PROTOspaninit();
- MATCH_PROTOexpandinit();
- MATCH_PROTOgroupinit();
- MATCH_PROTOgroupsinit();
+ CALL_INIT(RE_MODULE, compile);
+ CALL_INIT(RE_PROTO, findall);
+ CALL_INIT(RE_PROTO, search);
+ CALL_INIT(RE_PROTO, split);
+ CALL_INIT(RE_PROTO, sub);
+ CALL_INIT(RE_PROTO, __objlist__);
+ CALL_INIT(RE_PROTO, __del__);
+ CALL_INIT(MATCH_PROTO, __objlist__);
+ CALL_INIT(MATCH_PROTO, start);
+ CALL_INIT(MATCH_PROTO, end);
+ CALL_INIT(MATCH_PROTO, span);
+ CALL_INIT(MATCH_PROTO, expand);
+ CALL_INIT(MATCH_PROTO, group);
+ CALL_INIT(MATCH_PROTO, groups);
}
Modified: trunk/modules/String/String.c
===================================================================
--- trunk/modules/String/String.c 2004-03-29 17:33:21 UTC (rev 197)
+++ trunk/modules/String/String.c 2004-03-29 18:41:31 UTC (rev 198)
@@ -242,15 +242,15 @@
install_module(String) {
STRINGGEN_PROTO = new_object(NULL);
- STR_PROTO_OBJ__eq__init();
- STR_PROTO_OBJcmpinit();
- STR_PROTO_OBJ__add__init();
- STR_PROTO_OBJ__mul__init();
- STR_PROTO_OBJ__gen__init();
- STRINGGEN_PROTOnextinit();
- STR_PROTO_OBJordinit();
- STR_PROTO_OBJjoininit();
- STR_PROTO_OBJ__in__init();
- STR_PROTO_OBJ__notin__init();
- STR_PROTO_OBJleninit();
+ CALL_INIT(STR_PROTO_OBJ, __eq__);
+ CALL_INIT(STR_PROTO_OBJ, cmp);
+ CALL_INIT(STR_PROTO_OBJ, __add__);
+ CALL_INIT(STR_PROTO_OBJ, __mul__);
+ CALL_INIT(STR_PROTO_OBJ, __gen__);
+ CALL_INIT(STR_PROTO_OBJ, ord);
+ CALL_INIT(STR_PROTO_OBJ, join);
+ CALL_INIT(STR_PROTO_OBJ, __in__);
+ CALL_INIT(STR_PROTO_OBJ, __notin__);
+ CALL_INIT(STR_PROTO_OBJ, len);
+ CALL_INIT(STRINGGEN_PROTO, next);
}
Modified: trunk/modules/Tuple/Tuple.c
===================================================================
--- trunk/modules/Tuple/Tuple.c 2004-03-29 17:33:21 UTC (rev 197)
+++ trunk/modules/Tuple/Tuple.c 2004-03-29 18:41:31 UTC (rev 198)
@@ -183,13 +183,13 @@
install_module(Tuple) {
- TUPLE_PROTO_OBJ__rin__init();
- TUPLE_PROTO_OBJ__rnotin__init();
- TUPLE_PROTO_OBJ__add__init();
- TUPLE_PROTO_OBJ__mul__init();
- TUPLE_PROTO_OBJleninit();
- TUPLE_PROTO_OBJmininit();
- TUPLE_PROTO_OBJmaxinit();
- TUPLE_PROTO_OBJcountinit();
- TUPLE_PROTO_OBJindexinit();
+ CALL_INIT(TUPLE_PROTO_OBJ, __rin__);
+ CALL_INIT(TUPLE_PROTO_OBJ, __rnotin__);
+ CALL_INIT(TUPLE_PROTO_OBJ, __add__);
+ CALL_INIT(TUPLE_PROTO_OBJ, __mul__);
+ CALL_INIT(TUPLE_PROTO_OBJ, len);
+ CALL_INIT(TUPLE_PROTO_OBJ, min);
+ CALL_INIT(TUPLE_PROTO_OBJ, max);
+ CALL_INIT(TUPLE_PROTO_OBJ, count);
+ CALL_INIT(TUPLE_PROTO_OBJ, index);
}
Modified: trunk/pr/stdio_test.pr
===================================================================
--- trunk/pr/stdio_test.pr 2004-03-29 17:33:21 UTC (rev 197)
+++ trunk/pr/stdio_test.pr 2004-03-29 18:41:31 UTC (rev 198)
@@ -20,3 +20,8 @@
stdout.write("Should still go to stdout\n")
File.stdout.write("Should go to stdout.txt file\n")
+
+
+# XXX: Currently the second line here crashes prothon
+# mywrite = File.stdout.write
+# mywrite("Should print to stdout.txt\n")
Modified: trunk/src/builtins.c
===================================================================
--- trunk/src/builtins.c 2004-03-29 17:33:21 UTC (rev 197)
+++ trunk/src/builtins.c 2004-03-29 18:41:31 UTC (rev 198)
@@ -1025,99 +1025,100 @@
void init_builtins() {
ist = get_ist();
- OBJECT_OBJ__init__init();
- OBJECT_OBJ__getitem__init();
- OBJECT_OBJ__setitem__init();
- OBJECT_OBJ__delitem__init();
- OBJECT_OBJhas_protoinit();
- OBJECT_OBJset_protoinit();
- OBJECT_OBJadd_protoinit();
- OBJECT_OBJLeninit();
- OBJECT_OBJCmpinit();
- OBJECT_OBJMininit();
- OBJECT_OBJMaxinit();
- OBJECT_OBJproto_listinit();
- OBJECT_OBJ__bool__init();
- OBJECT_OBJ__not__init();
- OBJECT_OBJ__is__init();
- OBJECT_OBJ__isnot__init();
- OBJECT_OBJ__str__init();
- OBJECT_OBJ__hash__init();
- OBJECT_OBJ__eq__init();
- OBJECT_OBJ__ne__init();
- OBJECT_OBJ__lt__init();
- OBJECT_OBJ__le__init();
- OBJECT_OBJ__gt__init();
- OBJECT_OBJ__ge__init();
- OBJECT_OBJ__in__init();
- OBJECT_OBJ__notin__init();
+ CALL_INIT(OBJECT_OBJ, __init__);
+ CALL_INIT(OBJECT_OBJ, __getitem__);
+ CALL_INIT(OBJECT_OBJ, __setitem__);
+ CALL_INIT(OBJECT_OBJ, __delitem__);
+ CALL_INIT(OBJECT_OBJ, has_proto);
+ CALL_INIT(OBJECT_OBJ, set_proto);
+ CALL_INIT(OBJECT_OBJ, add_proto);
+ CALL_INIT(OBJECT_OBJ, Len);
+ CALL_INIT(OBJECT_OBJ, Cmp);
+ CALL_INIT(OBJECT_OBJ, Min);
+ CALL_INIT(OBJECT_OBJ, Max);
+ CALL_INIT(OBJECT_OBJ, proto_list);
+ CALL_INIT(OBJECT_OBJ, __bool__);
+ CALL_INIT(OBJECT_OBJ, __not__);
+ CALL_INIT(OBJECT_OBJ, __is__);
+ CALL_INIT(OBJECT_OBJ, __isnot__);
+ CALL_INIT(OBJECT_OBJ, __str__);
+ CALL_INIT(OBJECT_OBJ, __hash__);
+ CALL_INIT(OBJECT_OBJ, __eq__);
+ CALL_INIT(OBJECT_OBJ, __ne__);
+ CALL_INIT(OBJECT_OBJ, __lt__);
+ CALL_INIT(OBJECT_OBJ, __le__);
+ CALL_INIT(OBJECT_OBJ, __gt__);
+ CALL_INIT(OBJECT_OBJ, __ge__);
+ CALL_INIT(OBJECT_OBJ, __in__);
+ CALL_INIT(OBJECT_OBJ, __notin__);
- PR_FALSE_OBJ__str__init();
- PR_FALSE_OBJ__bool__init();
- PR_FALSE_OBJcmpinit();
+ CALL_INIT(PR_FALSE_OBJ, __str__);
+ CALL_INIT(PR_FALSE_OBJ, __bool__);
+ CALL_INIT(PR_FALSE_OBJ, cmp);
- PR_TRUE_OBJ__str__init();
- PR_TRUE_OBJ__bool__init();
- PR_TRUE_OBJcmpinit();
+ CALL_INIT(PR_TRUE_OBJ, __str__);
+ CALL_INIT(PR_TRUE_OBJ, __bool__);
+ CALL_INIT(PR_TRUE_OBJ, cmp);
- NONE_OBJ__str__init();
- NONE_OBJ__bool__init();
+ CALL_INIT(NONE_OBJ, __str__);
+ CALL_INIT(NONE_OBJ, __bool__);
- EXCEPTION_OBJ__init__init();
+ CALL_INIT(EXCEPTION_OBJ, __init__);
- GEN_OBJ__gen__init();
+ CALL_INIT(GEN_OBJ, __gen__);
- STRING_OBJ__str__init();
- STRING_OBJ__hash__init();
- STRING_OBJ__objlist__init();
- STRING_OBJ__getitem__init();
- STRING_OBJ__setitem__init();
- STRING_OBJ__delitem__init();
+ CALL_INIT(STRING_OBJ, __str__);
+ CALL_INIT(STRING_OBJ, __hash__);
+ CALL_INIT(STRING_OBJ, __objlist__);
+ CALL_INIT(STRING_OBJ, __getitem__);
+ CALL_INIT(STRING_OBJ, __setitem__);
+ CALL_INIT(STRING_OBJ, __delitem__);
- TUPLE_OBJ__str__init();
- TUPLE_OBJ__objlist__init();
- TUPLE_OBJ__getitem__init();
- TUPLE_OBJ__setitem__init();
- TUPLE_OBJ__delitem__init();
+ CALL_INIT(TUPLE_OBJ, __str__);
+ CALL_INIT(TUPLE_OBJ, __objlist__);
+ CALL_INIT(TUPLE_OBJ, __getitem__);
+ CALL_INIT(TUPLE_OBJ, __setitem__);
+ CALL_INIT(TUPLE_OBJ, __delitem__);
- LIST_OBJ__str__init();
- LIST_OBJ__getitem__init();
- LIST_OBJ__setitem__init();
- LIST_OBJ__delitem__init();
+ CALL_INIT(LIST_OBJ, __str__);
+ CALL_INIT(LIST_OBJ, __getitem__);
+ CALL_INIT(LIST_OBJ, __setitem__);
+ CALL_INIT(LIST_OBJ, __delitem__);
- DICT_OBJ__str__init();
- DICT_OBJ__getitem__init();
- DICT_OBJ__setitem__init();
- DICT_OBJ__delitem__init();
- DICT_OBJ__objlist__init();
+ CALL_INIT(DICT_OBJ, __str__);
+ CALL_INIT(DICT_OBJ, __getitem__);
+ CALL_INIT(DICT_OBJ, __setitem__);
+ CALL_INIT(DICT_OBJ, __delitem__);
+ CALL_INIT(DICT_OBJ, __objlist__);
- FUNC_OBJ__objlist__init();
+ CALL_INIT(FUNC_OBJ, __objlist__);
INTGEN_OBJ = new_object(NULL);
SYM_LIMIT = sym(ist, "limit");
- INT_OBJ__str__init();
- INT_OBJ__bool__init();
- INT_OBJ__hash__init();
- INT_OBJcmpinit();
- INT_OBJ__eq__init();
- INT_OBJ__abs__init();
- INT_OBJ__neg__init();
- INT_OBJ__pos__init();
- INT_OBJ__add__init();
- INT_OBJ__sub__init();
- INT_OBJ__mul__init();
- INT_OBJ__div__init();
- INT_OBJ__floordiv__init();
- INT_OBJ__mod__init();
- INT_OBJ__pow__init();
- INT_OBJ__invert__init();
- INT_OBJ__xor__init();
- INT_OBJ__and__init();
- INT_OBJ__or__init();
- INT_OBJ__lshift__init();
- INT_OBJ__rshift__init();
- INT_OBJchrinit();
- INT_OBJ__gen__init();
- INTGEN_OBJnextinit();
+ CALL_INIT(INT_OBJ, __str__);
+ CALL_INIT(INT_OBJ, __bool__);
+ CALL_INIT(INT_OBJ, __hash__);
+ CALL_INIT(INT_OBJ, cmp);
+ CALL_INIT(INT_OBJ, __eq__);
+ CALL_INIT(INT_OBJ, __abs__);
+ CALL_INIT(INT_OBJ, __neg__);
+ CALL_INIT(INT_OBJ, __pos__);
+ CALL_INIT(INT_OBJ, __add__);
+ CALL_INIT(INT_OBJ, __sub__);
+ CALL_INIT(INT_OBJ, __mul__);
+ CALL_INIT(INT_OBJ, __div__);
+ CALL_INIT(INT_OBJ, __floordiv__);
+ CALL_INIT(INT_OBJ, __mod__);
+ CALL_INIT(INT_OBJ, __pow__);
+ CALL_INIT(INT_OBJ, __invert__);
+ CALL_INIT(INT_OBJ, __xor__);
+ CALL_INIT(INT_OBJ, __and__);
+ CALL_INIT(INT_OBJ, __or__);
+ CALL_INIT(INT_OBJ, __lshift__);
+ CALL_INIT(INT_OBJ, __rshift__);
+ CALL_INIT(INT_OBJ, chr);
+ CALL_INIT(INT_OBJ, __gen__);
+
+ CALL_INIT(INTGEN_OBJ, next);
}
|