rev 270 - in trunk: . src

SVN User <[email protected]>
Newsgroups gmane.comp.lang.prothon.cvs
Message-ID <[email protected]>
Author: mark
Date: 2004-04-03 21:23:17 -0500 (Sat, 03 Apr 2004)
New Revision: 270

Modified:
   trunk/STATUS.txt
   trunk/src/builtins-core.c
   trunk/src/builtins-dict.c
   trunk/src/builtins-float.c
   trunk/src/builtins-int.c
   trunk/src/builtins-list.c
   trunk/src/builtins-string.c
   trunk/src/builtins-tuple.c
   trunk/src/dict.h
   trunk/src/object.h
   trunk/src/src.vcproj
Log:
fixed bugs 12 and 13, both involved initializing protos

Modified: trunk/STATUS.txt
===================================================================
--- trunk/STATUS.txt	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/STATUS.txt	2004-04-04 02:23:17 UTC (rev 270)
@@ -69,8 +69,6 @@
 
 --- catch exceptions during module loading
 
---- smarter continuation 
-
 --- credit Ruby
 
 --- help() in interactive console()

Modified: trunk/src/builtins-core.c
===================================================================
--- trunk/src/builtins-core.c	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/src/builtins-core.c	2004-04-04 02:23:17 UTC (rev 270)
@@ -94,7 +94,7 @@
 }
 
 DEF(Object, __init__, NULL) {
-	return self;
+	return OBJ(NONE);
 }
 
 DEF(Object, has_proto_QUES, FORM_RPARAM) {

Modified: trunk/src/builtins-dict.c
===================================================================
--- trunk/src/builtins-dict.c	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/src/builtins-dict.c	2004-04-04 02:23:17 UTC (rev 270)
@@ -77,17 +77,28 @@
 	MODULE_SET_DOC(Dict, "dictionary object prototype");
 	set_attr(ist, OBJ(OBJECT), sym(ist, "Dict"), Dict_OBJ);
 
-        dict = obj_malloc(Dict_OBJ, (DICT_OVERHEAD+DEFAULT_INITIAL_DICT_SIZE)*sizeof(dict_t));
-        memset(dict, 0, (DICT_OVERHEAD+DEFAULT_INITIAL_DICT_SIZE)*sizeof(dict_t));
-        dictsize(dict) = DEFAULT_INITIAL_DICT_SIZE;
+	Dict_OBJ->data_type = OBJ_TYPE_DATAPTR;
+    dict = obj_malloc(Dict_OBJ, (DICT_OVERHEAD+DEFAULT_INITIAL_DICT_SIZE)*sizeof(dict_t));
+    memset(dict, 0, (DICT_OVERHEAD+DEFAULT_INITIAL_DICT_SIZE)*sizeof(dict_t));
+    dictsize(dict) = DEFAULT_INITIAL_DICT_SIZE;
 }
 
-#define __ADD_QUOTE(__is_str)		\
-do {					\
-	if (__is_str)			\
-		strcat(res, "'");	\
+#define __ADD_QUOTE(__is_str)  \
+do {					       \
+	if (__is_str)			   \
+		strcat(res, "'");	   \
 } while(0)
 
+DEF(Dict, __init__, NULL) {
+	dict_p dict;
+
+	self->data_type = OBJ_TYPE_DATAPTR;
+    dict = obj_malloc(self, (DICT_OVERHEAD+DEFAULT_INITIAL_DICT_SIZE)*sizeof(dict_t));
+    memset(dict, 0, (DICT_OVERHEAD+DEFAULT_INITIAL_DICT_SIZE)*sizeof(dict_t));
+    dictsize(dict) = DEFAULT_INITIAL_DICT_SIZE;
+	return OBJ(NONE);
+}
+
 DEF(Dict, __str__, NULL) {
 	int i;
 	size_t len;
@@ -246,6 +257,7 @@
 MAIN_MODULE_INIT(Dict)
 {
 	MODULE_SUB_INIT(Dict);
+	MODULE_ADD_SYM(Dict, __init__);
 	MODULE_ADD_SYM(Dict, __str__);
 	MODULE_ADD_SYM(Dict, __objlist__);
 	MODULE_ADD_SYM(Dict, __getitem__);

Modified: trunk/src/builtins-float.c
===================================================================
--- trunk/src/builtins-float.c	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/src/builtins-float.c	2004-04-04 02:23:17 UTC (rev 270)
@@ -77,15 +77,31 @@
 MODULE_START(Float)
 {
 	Float_OBJ = OBJ(FLOAT_PROTO) = new_object(NULL);
-	OBJ(IMAG_PROTO) = new_object(NULL);
+//	Imag_OBJ  = OBJ(IMAG_PROTO)  = new_object(NULL);
+                OBJ(IMAG_PROTO)  = new_object(NULL);
 
 	add_doc_to_obj(ist, OBJ(FLOAT_PROTO),   "Float number object prototype");
 	add_doc_to_obj(ist, OBJ(IMAG_PROTO),    "Imaginary number object prototype");
 
-	set_attr(ist, OBJ(OBJECT), sym(ist, "Float"),           OBJ(FLOAT_PROTO));
-	set_attr(ist, OBJ(OBJECT), sym(ist, "Imaginary"),       OBJ(IMAG_PROTO));
+	set_attr(ist, OBJ(OBJECT), sym(ist, "Float"),     OBJ(FLOAT_PROTO));
+	set_attr(ist, OBJ(OBJECT), sym(ist, "Imaginary"), OBJ(IMAG_PROTO));
+
+	Float_OBJ->data_type    = OBJ_TYPE_IMMDATA;
+	Float_OBJ->imm_data_len = IMMEDIATE_DATA_LEN;
+	Float_OBJ->data.f64     = 0.0;
+
+	//Imag_OBJ->data_type    = OBJ_TYPE_IMMDATA;
+	//Imag_OBJ->imm_data_len = IMMEDIATE_DATA_LEN;
+	//Imag_OBJ->data.f64     = 0.0;
 }
 
+DEF(Float, __init__, NULL) { 
+	self->data_type    = OBJ_TYPE_IMMDATA;
+	self->imm_data_len = IMMEDIATE_DATA_LEN;
+	self->data.f64     = 0.0;
+	return OBJ(NONE);
+}
+
 DEF(Float, __bool__QUES, NULL) { 
 	if (Float_value(self) != 0.0 )
 		return OBJ(PR_TRUE);
@@ -339,6 +355,7 @@
 MAIN_MODULE_INIT(Float)
 {
 	MODULE_SUB_INIT(Float);
+	MODULE_ADD_SYM(Float, __init__);
 	MODULE_ADD_SYM(Float, __bool__QUES);
 	MODULE_ADD_SYM(Float, __hash__);
 	MODULE_ADD_SYM(Float, __abs__);

Modified: trunk/src/builtins-int.c
===================================================================
--- trunk/src/builtins-int.c	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/src/builtins-int.c	2004-04-04 02:23:17 UTC (rev 270)
@@ -86,11 +86,22 @@
 	/* Dependent objects */
 	OBJ(ZERO_INT)		= new_int_obj(0);
 	OBJ(MAX_INT)		= new_int_obj(MAX_INT_VAL);
-	OBJ(LONG_PROTO)		= new_object(NULL);
+	OBJ(LONG_PROTO)		= new_string_obj("0");
 
 	add_doc_to_obj(ist, OBJ(LONG_PROTO),	"Long integer number object prototype");
+	
+	Int_OBJ->data_type    = OBJ_TYPE_IMMDATA;
+	Int_OBJ->imm_data_len = IMMEDIATE_DATA_LEN;
+	Int_OBJ->data.i64     = 0;
 }
 
+DEF(Int, __init__, NULL) {
+	self->data_type    = OBJ_TYPE_IMMDATA;
+	self->imm_data_len = IMMEDIATE_DATA_LEN;
+	self->data.i64     = 0;
+	return OBJ(NONE);
+}
+
 DEF(Int, __bool__QUES, NULL) {
 	if (Int_value(self)) return OBJ(PR_TRUE);
 	else				 return OBJ(PR_FALSE);
@@ -330,6 +341,7 @@
 	SYM_LIMIT = sym(ist, "limit");
 
 	MODULE_SUB_INIT(Int);
+	MODULE_ADD_SYM(Int, __init__);
 	MODULE_ADD_SYM(Int, __bool__QUES);
 	MODULE_ADD_SYM(Int, __hash__);
 	MODULE_ADD_SYM(Int, __abs__);

Modified: trunk/src/builtins-list.c
===================================================================
--- trunk/src/builtins-list.c	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/src/builtins-list.c	2004-04-04 02:23:17 UTC (rev 270)
@@ -92,11 +92,22 @@
 	MODULE_SET_DOC(List, "object prototype");
 	set_attr(ist, OBJ(OBJECT), sym(ist, "List"), List_OBJ);
 
+	List_OBJ->data_type = OBJ_TYPE_DATAPTR;
 	lstp = List_OBJ->data.ptr = pr_malloc((LIST_OVERHEAD+2) * sizeof(list_t));
 	lstpsize(lstp) = 2;
 	lstplen(lstp)  = 0;
 }
 
+DEF(List, __init__, NULL) {
+	list_p lstp;
+
+	self->data_type = OBJ_TYPE_DATAPTR;
+	lstp = self->data.ptr = pr_malloc((LIST_OVERHEAD+2) * sizeof(list_t));
+	lstpsize(lstp) = 2;
+	lstplen(lstp)  = 0;
+	return OBJ(NONE);
+}
+
 DEF(List, __str__, NULL) {
 	return str_tuple_list(ist, self, "[", "]");
 }
@@ -495,6 +506,7 @@
 MAIN_MODULE_INIT(List)
 {
 	MODULE_SUB_INIT(List);
+	MODULE_ADD_SYM(List, __init__);
 	MODULE_ADD_SYM(List, __str__);
 	MODULE_ADD_SYM(List, __getitem__);
 	MODULE_ADD_SYM(List, __setitem__);

Modified: trunk/src/builtins-string.c
===================================================================
--- trunk/src/builtins-string.c	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/src/builtins-string.c	2004-04-04 02:23:17 UTC (rev 270)
@@ -76,8 +76,18 @@
 	String_OBJ = OBJ(STRING_PROTO);
 	MODULE_SET_DOC(String, "string object prototype");
 	set_attr(ist, OBJ(OBJECT), sym(ist, "String"), String_OBJ);
+	String_OBJ->data_type    = OBJ_TYPE_IMMDATA;
+	String_OBJ->imm_data_len = 0;
+	String_OBJ->data.str[0]  = 0;
 }
 
+DEF(String, __init__, NULL) {
+	self->data_type    = OBJ_TYPE_IMMDATA;
+	self->imm_data_len = 0;
+	self->data.str[0]  = 0;
+	return OBJ(NONE);
+}
+
 DEF(String, __str__, NULL) {
 	return self;
 }
@@ -288,6 +298,7 @@
 MAIN_MODULE_INIT(String)
 {
 	MODULE_SUB_INIT(String);
+	MODULE_ADD_SYM(String, __init__);
 	MODULE_ADD_SYM(String, __str__);
 	MODULE_ADD_SYM(String, __hash__);
 	MODULE_ADD_SYM(String, __objlist__);

Modified: trunk/src/builtins-tuple.c
===================================================================
--- trunk/src/builtins-tuple.c	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/src/builtins-tuple.c	2004-04-04 02:23:17 UTC (rev 270)
@@ -77,11 +77,22 @@
 	MODULE_SET_DOC(Tuple,   "object prototype");
 	set_attr(ist, OBJ(OBJECT), sym(ist, "Tuple"), Tuple_OBJ);
 
+	Tuple_OBJ->data_type = OBJ_TYPE_DATAPTR;
 	lstp = Tuple_OBJ->data.ptr = pr_malloc((LIST_OVERHEAD+2) * sizeof(list_t));
 	lstpsize(lstp) = 2;
 	lstplen(lstp)  = 0;
 }
 
+DEF(Tuple, __init__, NULL) {
+	list_p lstp;
+
+	self->data_type = OBJ_TYPE_DATAPTR;
+	lstp = self->data.ptr = pr_malloc((LIST_OVERHEAD+2) * sizeof(list_t));
+	lstpsize(lstp) = 2;
+	lstplen(lstp)  = 0;
+	return OBJ(NONE);
+}
+
 DEF(Tuple, __str__, NULL) {
 	return str_tuple_list(ist, self, "(", ")");
 }
@@ -300,6 +311,7 @@
 MAIN_MODULE_INIT(Tuple)
 {
 	MODULE_SUB_INIT(Tuple);
+	MODULE_ADD_SYM(Tuple, __init__);	
 	MODULE_ADD_SYM(Tuple, __str__);	
 	MODULE_ADD_SYM(Tuple, __getitem__);
 	MODULE_ADD_SYM(Tuple, __setitem__);

Modified: trunk/src/dict.h
===================================================================
--- trunk/src/dict.h	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/src/dict.h	2004-04-04 02:23:17 UTC (rev 270)
@@ -54,3 +54,32 @@
 // dict.h
 
 #define DEFAULT_INITIAL_DICT_SIZE  8
+
+typedef struct {
+	size_t	size;
+	size_t	len;
+} dict_hdr_t;
+
+typedef struct {
+	i32_t	hash;
+	obj_p	key;
+	obj_p	value;
+} dict_entry_t;
+
+typedef union {
+	dict_hdr_t		hdr;
+	dict_entry_t 	entry;
+} dict_t;
+
+typedef dict_t*		dict_p;
+
+#define  DICT_HDR_INDEX		0
+#define  DICT_OVERHEAD		1
+#define dict_d(dict_obj)	((dict_p)obj_data_p(dict_obj))
+#define dictsize(dict)		(dict[DICT_HDR_INDEX].hdr.size)
+#define dictlen(dict)		(dict[DICT_HDR_INDEX].hdr.len)
+#define dictptr(dict, i)	(dict+DICT_OVERHEAD+((i)%dictsize(dict)))
+#define dicthash(dict,i)	(dictptr(dict,i)->entry.hash)
+#define dictkey(dict, i)	(dictptr(dict,i)->entry.key)
+#define dictitem(dict,i)	(dictptr(dict,i)->entry.value)
+

Modified: trunk/src/object.h
===================================================================
--- trunk/src/object.h	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/src/object.h	2004-04-04 02:23:17 UTC (rev 270)
@@ -84,34 +84,7 @@
 
 obj_p list_append_no_lock(obj_p list_obj, obj_p item);
 
-typedef struct {
-	size_t	size;
-	size_t	len;
-} dict_hdr_t;
 
-typedef struct {
-	i32_t	hash;
-	obj_p	key;
-	obj_p	value;
-} dict_entry_t;
-
-typedef union {
-	dict_hdr_t		hdr;
-	dict_entry_t 	entry;
-} dict_t;
-
-typedef dict_t*		dict_p;
-
-#define  DICT_HDR_INDEX		0
-#define  DICT_OVERHEAD		1
-#define dict_d(dict_obj)	((dict_p)obj_data_p(dict_obj))
-#define dictsize(dict)		(dict[DICT_HDR_INDEX].hdr.size)
-#define dictlen(dict)		(dict[DICT_HDR_INDEX].hdr.len)
-#define dictptr(dict, i)	(dict+DICT_OVERHEAD+((i)%dictsize(dict)))
-#define dicthash(dict,i)	(dictptr(dict,i)->entry.hash)
-#define dictkey(dict, i)	(dictptr(dict,i)->entry.key)
-#define dictitem(dict,i)	(dictptr(dict,i)->entry.value)
-
 void init_symbol(isp ist);
 
 extern pr_services_t dll_services;

Modified: trunk/src/src.vcproj
===================================================================
--- trunk/src/src.vcproj	2004-04-04 01:37:11 UTC (rev 269)
+++ trunk/src/src.vcproj	2004-04-04 02:23:17 UTC (rev 270)
@@ -207,6 +207,9 @@
 				RelativePath="clist.h">
 			</File>
 			<File
+				RelativePath=".\dict.h">
+			</File>
+			<File
 				RelativePath="getline.h">
 			</File>
 			<File
@@ -225,6 +228,9 @@
 				RelativePath="parser.h">
 			</File>
 			<File
+				RelativePath=".\prlist.h">
+			</File>
+			<File
 				RelativePath="..\include\prothon\prothon.h">
 			</File>
 			<File
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.