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