rev 198 - in trunk: include/prothon modules/File modules/Float modules/List modules/Re modules/String modules/Tuple pr src

SVN User <[email protected]>
Newsgroups gmane.comp.lang.prothon.cvs
Message-ID <[email protected]>
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);
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.